// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module media.mojom; import "mojo/public/mojom/base/unguessable_token.mojom"; struct SessionData { // see media::MediaDrmKeyType [Native] enum KeyType; array key_set_id; string mime_type; KeyType key_type; }; // Allows MediaDrmBridge to store and retrieve persistent data. This is needed // for features like per-origin provisioning and persistent license support. // The persistent data stored by MediaDrmStorage is auxiliary data, which will // be used by MediaDrmBridge to retrieve the actual license. MediaDrm in media // service is the true source for the persistent license and origin // provisioning. interface MediaDrmStorage { // Initializes |this| and if successful (|success| = true) returns an origin // ID that can be used to identify the current origin. If |origin_id| is // not empty, then it must be valid and unique among all origins. The // implementation will persist the information (e.g. origin ID, provision // time) in the storage. If |origin_id| is empty, then device-wide // provisioning is to be used. If Initialize() fails or returns an empty // origin ID then the other methods below should not be called, and will // fail if they are called. Initialize() => (bool success, mojo_base.mojom.UnguessableToken? origin_id); // Saves origin information (e.g. origin ID, provision time) in the storage // after MediaDrm is provisioned for current origin. It will clear all // existing persistent session data for the origin. OnProvisioned() => (bool success); // Saves persistent session data for |session_id|. SavePersistentSession( string session_id, SessionData session_data) => (bool success); // Loads persistent session data for |session_id|. // Upon failure, null |session_data| will be returned. LoadPersistentSession(string session_id) => (SessionData? session_data); // Removes the persistent session data for |session_id|. RemovePersistentSession(string session_id) => (bool success); };