[Bug 25200] Add optional "licenseType" parameter to createSession()

https://www.w3.org/Bugs/Public/show_bug.cgi?id=25200

Shinya Maruyama <Shinya.Maruyama@jp.sony.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Shinya.Maruyama@jp.sony.com

--- Comment #2 from Shinya Maruyama <Shinya.Maruyama@jp.sony.com> ---
I think this proposal does not meet following two requirements:

1) license persisted in a CDM is shared among multiple applications
2) CDM returns license(s) associated with a MediaKeySession so that application
can store it in application specific way; e.g. web storage, UltraViolet DMP etc

As to #1, the following is envisioned use cases.
- A store web app downloads a packaged web app with media files (e.g.
UltraViolet DMP)
- A store web app acquires license(s) using EME and store it in CDM; e.g. by
using new store() method
- A store web app stores the sessionId associated with the persisted license in
localStorage 
- The packaged web app playbacks the media files in the package offline

If we use existing loadSession, sessionId stored by 'store web app' needs to be
accessible to 'packaged web app' but it's impossible because of cross-origin.

As to #2, you just mention that update() method would be called when license in
the app is used but no means of returning acquired license(s) from CDM is
mentioned.

Following is an just idea for the comprehensive set of methods to realize the
use cases above(based on your proposal including Promise pattern).
- createSession(type, initData,
licenseType={'ephemeral'|'persisted'|'application'})
  - 'ephemeral' acquires license(s) // force online
  - 'persisted' loads license(s) persisted in CDM // force offline
  - 'application' expects license is supplied by web application using load()
method
- store()
  - This can be used after license becomes available (IOW, after 'ready' event
is received) to store license(s) in CDM
  - This is rejected if storing license is not permitted
  - Maybe better to have a standard way to notify application whether acquired
license(s) is persistable. This way application can decide whether to call
store() method for each.
    e.g. licenseType='persistable' is passed through Promise returned by
update() method
  - Note that if CDM is obligated to persist acquired license(s) then it is
persisted in update() instead of store()
- get()
  - This can be used after license becomes available to get license(s) from CDM
  - license(s) are passed through Promise handler
- load(optional licenses)
  - This can be used when licenseType is 'persisted' or 'application' in order
to load license(s) in current session
  - In case of 'persisted', parameter 'licenses' must be omitted. The
license(s) identified by initData is loaded.
  - In case of 'application', parameter 'licenses' must contain valid
license(s). The supplied license(s) is loaded.

Furthermore, I prefer to add acquire() method without adding licenseType into
createSession.
The acquire() is an explicit method to initiate license acquisition. As a
result, createSession becomes a method just to create a MediaKeySession object.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Tuesday, 1 April 2014 13:45:27 UTC