| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // TODO(xhwang): Move this out of media if it is needed anywhere else. |
| module media.mojom; |
| |
| import "mojo/public/mojom/base/unguessable_token.mojom"; |
| import "mojo/public/mojom/base/file_path.mojom"; |
| |
| // Contains data linked to an origin that the CDM stores in the browser |
| // process. |
| [EnableIf=is_win] |
| struct MediaFoundationCdmData { |
| // The origin ID of the document associated with the CDM. The origin ID |
| // is used in place of the origin when hiding the concrete origin is needed. |
| // The origin ID is also user resettable by clearing the browsing data. |
| mojo_base.mojom.UnguessableToken origin_id; |
| |
| // The token is set by the CDM. The token is then saved in the Pref Service so |
| // that it can be reused by the CDM for that same origin in the future. |
| array<uint8>? client_token; |
| |
| // The path where the MediaFoundation CDM should store its data. The path is |
| // specific to the current chrome user and the device's architecture. |
| mojo_base.mojom.FilePath cdm_store_path_root; |
| }; |
| |
| // The service itself is associated with a RenderFrameHost in the browser |
| // process and will be called by a client living in the utility process hosting |
| // the CDM. |
| interface CdmDocumentService { |
| // Allows authorized services to verify that the underlying platform is |
| // trusted. An example of a trusted platform is a Chrome OS device in |
| // verified boot mode. This can be used for protected content playback. |
| // |
| // Input parameters: |
| // - |service_id|: the service ID for the |challenge|. |
| // - |challenge|: the challenge data. |
| // |
| // Output parameters: |
| // - |success|: whether the platform is successfully verified. If true/false |
| // the following 3 parameters should be non-empty/empty. |
| // - |signed_data|: the data signed by the platform. |
| // - |signed_data_signature|: the signature of the signed data block. |
| // - |platform_key_certificate|: the device specific certificate for the |
| // requested service. |
| ChallengePlatform(string service_id, string challenge) => |
| (bool success, |
| string signed_data, |
| string signed_data_signature, |
| string platform_key_certificate); |
| |
| // Requests a particular version of the device's Storage Id (or latest |
| // available version if 0 is specified). This returns the requested |
| // |storage_id|, which may be empty if it is not supported by the platform. |
| GetStorageId(uint32 version) => (uint32 version, array<uint8> storage_id); |
| |
| // Returns true if Verified Access is enabled in settings, false otherwise. |
| [EnableIf=is_chromeos] |
| IsVerifiedAccessEnabled() => (bool enabled); |
| |
| // Gets the Media FoundationCDM data for the origin associated with the CDM. |
| // - `media_foundation_cdm_data`: The CDM data for the origin associated with |
| // the CDM. |
| [EnableIf=is_win] |
| GetMediaFoundationCdmData() => (MediaFoundationCdmData cdm_data); |
| |
| // Sets the client token for the origin associated with the CDM. The token is |
| // set by the CDM. The token is then saved in the Pref Service so that it can |
| // be reused by the CDM for that same origin in the future. |
| [EnableIf=is_win] |
| SetCdmClientToken(array<uint8> client_token); |
| }; |