Problem/Motivation
In #3020716: Add vertical tabs style menu to media library the media library has been split up in different tabs per type. We want to show the source field on the tab of each media type so users can add media of that type directly.
Different media types can have different types of source fields. We currently only have an upload form implementation to add media items from the media library widget, but there is also an issue to implement oEmbed support (#2996029: Add oEmbed support to the media library). Since we don't have a base class at the moment we need to duplicate a lot of code there.
Besides that, we also want to simplify the add/upload forms to only support 1 media type at a time based on the assumptions defined in #3019150-3: Update/improve mockups and designs for the media library.
Proposed resolution
We should have a base class containing all the generic code needed to add media items.
Add an upload source field implementation on top of this class to support media types with file uploads as input.
Show the upload form directly on the media type tab implemented in #3020716: Add vertical tabs style menu to media library.