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