tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

PMFCDM.ipdl (3962B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2  * License, v. 2.0. If a copy of the MPL was not distributed with this
      3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 include "MFCDMSerializers.h";
      6 
      7 include protocol PRemoteMediaManager;
      8 
      9 using mozilla::KeySystemConfig::Requirement from "mozilla/KeySystemConfig.h";
     10 using mozilla::KeySystemConfig::SessionType from "mozilla/KeySystemConfig.h";
     11 using mozilla::CryptoScheme from "MediaData.h";
     12 using mozilla::dom::MediaKeyMessageType from "mozilla/dom/MediaKeyMessageEventBinding.h";
     13 using mozilla::dom::MediaKeyStatus from "mozilla/dom/MediaKeyStatusMapBinding.h";
     14 using mozilla::dom::HDCPVersion from "mozilla/dom/MediaKeysBinding.h";
     15 using mozilla::KeySystemConfigRequest from "mozilla/KeySystemConfig.h";
     16 using mozilla::dom::MediaKeySessionClosedReason from "mozilla/dom/MediaKeySessionBinding.h";
     17 
     18 namespace mozilla {
     19 
     20 // For EME spec 'message' event
     21 // https://w3c.github.io/encrypted-media/#queue-message
     22 struct MFCDMKeyMessage {
     23   nsString sessionId;
     24   MediaKeyMessageType type;
     25   uint8_t[] message;
     26 };
     27 
     28 // For EME spec 'keystatuseschange' event
     29 // https://w3c.github.io/encrypted-media/#dom-evt-keystatuseschange
     30 struct MFCDMKeyInformation {
     31   uint8_t[] keyId;
     32   MediaKeyStatus status;
     33 };
     34 
     35 struct MFCDMKeyStatusChange {
     36   nsString sessionId;
     37   MFCDMKeyInformation[] keyInfo;
     38 };
     39 
     40 // For EME spec Update Expiration algorithm
     41 // https://w3c.github.io/encrypted-media/#update-expiration
     42 struct MFCDMKeyExpiration {
     43   nsString sessionId;
     44   double expiredTimeMilliSecondsSinceEpoch;
     45 };
     46 
     47 // For GetCapabilities()
     48 struct MFCDMMediaCapability {
     49   nsString contentType;
     50   CryptoScheme[] encryptionSchemes;
     51   nsString robustness;
     52 };
     53 
     54 struct MFCDMCapabilitiesIPDL {
     55   nsString keySystem;
     56   nsString[] initDataTypes;
     57   MFCDMMediaCapability[] audioCapabilities;
     58   MFCDMMediaCapability[] videoCapabilities;
     59   SessionType[] sessionTypes;
     60   Requirement distinctiveID;
     61   Requirement persistentState;
     62   bool isHardwareDecryption;
     63 };
     64 
     65 union MFCDMCapabilitiesResult {
     66   nsresult;
     67   MFCDMCapabilitiesIPDL;
     68 };
     69 
     70 // For Init()
     71 struct MFCDMInitParamsIPDL {
     72   nsString origin;
     73   nsString[] initDataTypes;
     74   Requirement distinctiveID;
     75   Requirement persistentState;
     76   MFCDMMediaCapability[] audioCapabilities;
     77   MFCDMMediaCapability[] videoCapabilities;
     78 };
     79 
     80 struct MFCDMInitIPDL {
     81   uint64_t id;
     82 };
     83 
     84 union MFCDMInitResult {
     85   nsresult;
     86   MFCDMInitIPDL;
     87 };
     88 
     89 struct MFCDMCreateSessionParamsIPDL {
     90   SessionType sessionType;
     91   nsString initDataType;
     92   uint8_t[] initData;
     93 };
     94 
     95 union MFCDMSessionResult {
     96   nsString;
     97   nsresult;
     98 };
     99 
    100 struct MFCDMCapabilitiesRequest {
    101   nsString keySystem;
    102   bool isHardwareDecryption;
    103   bool isPrivateBrowsing;
    104 };
    105 
    106 struct MFCDMSessionClosedResult {
    107   nsString sessionId;
    108   MediaKeySessionClosedReason reason;
    109 };
    110 
    111 [ManualDealloc]
    112 async protocol PMFCDM
    113 {
    114   manager PRemoteMediaManager;
    115 parent:
    116   async GetCapabilities(MFCDMCapabilitiesRequest request) returns (MFCDMCapabilitiesResult result);
    117   async Init(MFCDMInitParamsIPDL params) returns (MFCDMInitResult result);
    118   async CreateSessionAndGenerateRequest(MFCDMCreateSessionParamsIPDL type)
    119       returns (MFCDMSessionResult result);
    120   async LoadSession(SessionType sessionType, nsString sessionId) returns (nsresult result);
    121   async UpdateSession(nsString sessionId, uint8_t[] response) returns (nsresult result);
    122   async CloseSession(nsString sessionId) returns (nsresult result);
    123   async RemoveSession(nsString sessionId) returns (nsresult result);
    124   async SetServerCertificate(uint8_t[] certificate) returns (nsresult result);
    125   async GetStatusForPolicy(HDCPVersion minHdcpVersion) returns (nsresult result);
    126   async __delete__();
    127 
    128 child:
    129   async OnSessionKeyMessage(MFCDMKeyMessage message);
    130   async OnSessionKeyStatusesChanged(MFCDMKeyStatusChange keystatuses);
    131   async OnSessionKeyExpiration(MFCDMKeyExpiration expiration);
    132   async OnSessionClosed(MFCDMSessionClosedResult result);
    133 };
    134 
    135 } // namespace mozilla