New abstract license server support and DRMToday
Created by: greg80303
The existing DRM license server code was much too dependent on a select few servers that we use for testing. The HTTP method, the response type, and the format of the response message will all be different depending on the license server.
A new abstraction is introduced with example implementations in the MediaPlayer.dependencies.protection.servers namespace. This new API is called from ProtectionExtensions.requestLicense() which replaces the previous functions that were implemented by each KeySystem. The license request/response procedure is not really keysystem-specific anyway, it just so happens that we were always using the same basic license server types for each system we supported.
A new license server implementation has been added for the DRMToday (www.drmtoday.com) DRM service from CastLabs. This is the first licensing system integrated into dash.js that allows us to create true CommonEncryption content with multiple "real" DRMs (using CableLabs open source tools) and playback in an open source player. New test content for PlayReady/Widevine has been created and added to the sources.json.
ProtectionData is no longer stored in the KeySystem objects, but in ProtectionController and passed in to each license request call (all ProtectionData thus far has been used solely for license requests).
The "bearerToken" field of ProtectionData has been removed since it was only used in MS PlayReady to add HTTP request headers (which can already be specified in ProtectionData).