void WidevineDecryptor::CreateSession(uint32_t aCreateSessionToken, uint32_t aPromiseId, const char* aInitDataType, uint32_t aInitDataTypeSize, const uint8_t* aInitData, uint32_t aInitDataSize, GMPSessionType aSessionType) { Log("Decryptor::CreateSession(token=%d, pid=%d)", aCreateSessionToken, aPromiseId); InitDataType initDataType; if (!strcmp(aInitDataType, "cenc")) { initDataType = kCenc; } else if (!strcmp(aInitDataType, "webm")) { initDataType = kWebM; } else if (!strcmp(aInitDataType, "keyids")) { initDataType = kKeyIds; } else { // Invalid init data type const char* errorMsg = "Invalid init data type when creating session."; OnRejectPromise(aPromiseId, kNotSupportedError, 0, errorMsg, sizeof(errorMsg)); return; } mPromiseIdToNewSessionTokens[aPromiseId] = aCreateSessionToken; CDM()->CreateSessionAndGenerateRequest(aPromiseId, ToCDMSessionType(aSessionType), initDataType, aInitData, aInitDataSize); }
void WidevineDecryptor::CreateSession(uint32_t aCreateSessionToken, uint32_t aPromiseId, const char* aInitDataType, uint32_t aInitDataTypeSize, const uint8_t* aInitData, uint32_t aInitDataSize, GMPSessionType aSessionType) { Log("Decryptor::CreateSession(token=%d, pid=%d)", aCreateSessionToken, aPromiseId); MOZ_ASSERT(!strcmp(aInitDataType, "cenc")); mPromiseIdToNewSessionTokens[aPromiseId] = aCreateSessionToken; CDM()->CreateSessionAndGenerateRequest(aPromiseId, ToCDMSessionType(aSessionType), kCenc, aInitData, aInitDataSize); }
void ChromiumCDMProxy::LoadSession(PromiseId aPromiseId, dom::MediaKeySessionType aSessionType, const nsAString& aSessionId) { MOZ_ASSERT(NS_IsMainThread()); RefPtr<gmp::ChromiumCDMParent> cdm = GetCDMParent(); if (!cdm) { RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, NS_LITERAL_CSTRING("Null CDM in LoadSession")); return; } mGMPThread->Dispatch(NewRunnableMethod<uint32_t, uint32_t, nsString>( cdm, &gmp::ChromiumCDMParent::LoadSession, aPromiseId, ToCDMSessionType(aSessionType), aSessionId)); }
void ChromiumCDMProxy::CreateSession(uint32_t aCreateSessionToken, dom::MediaKeySessionType aSessionType, PromiseId aPromiseId, const nsAString& aInitDataType, nsTArray<uint8_t>& aInitData) { MOZ_ASSERT(NS_IsMainThread()); EME_LOG("ChromiumCDMProxy::CreateSession(token=%u, type=%d, pid=%u) " "initDataLen=%zu", aCreateSessionToken, (int)aSessionType, aPromiseId, aInitData.Length()); uint32_t sessionType = ToCDMSessionType(aSessionType); uint32_t initDataType = ToCDMInitDataType(aInitDataType); RefPtr<gmp::ChromiumCDMParent> cdm = GetCDMParent(); if (!cdm) { RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, NS_LITERAL_CSTRING("Null CDM in CreateSession")); return; } mGMPThread->Dispatch( NewRunnableMethod<uint32_t, uint32_t, uint32_t, uint32_t, nsTArray<uint8_t>>(cdm, &gmp::ChromiumCDMParent::CreateSession, aCreateSessionToken, sessionType, initDataType, aPromiseId, Move(aInitData))); }