void CDMProxy::GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId, nsTArray<nsCString>& aSessionIds) { CDMCaps::AutoLock caps(Capabilites()); caps.GetSessionIdsForKeyId(aKeyId, aSessionIds); }
void CDMProxy::RemoveSession(const nsAString& aSessionId, PromiseId aPromiseId) { MOZ_ASSERT(NS_IsMainThread()); NS_ENSURE_TRUE_VOID(!mKeys.IsNull()); { CDMCaps::AutoLock caps(Capabilites()); caps.DropKeysForSession(aSessionId); } nsAutoPtr<SessionOpData> data(new SessionOpData()); data->mPromiseId = aPromiseId; data->mSessionId = NS_ConvertUTF16toUTF8(aSessionId); nsRefPtr<nsIRunnable> task( NS_NewRunnableMethodWithArg<nsAutoPtr<SessionOpData>>(this, &CDMProxy::gmp_RemoveSession, data)); mGMPThread->Dispatch(task, NS_DISPATCH_NORMAL); }
void ChromiumCDMProxy::OnSessionClosed(const nsAString& aSessionId) { MOZ_ASSERT(NS_IsMainThread()); bool keyStatusesChange = false; { CDMCaps::AutoLock caps(Capabilites()); keyStatusesChange = caps.RemoveKeysForSession(nsString(aSessionId)); } if (keyStatusesChange) { OnKeyStatusesChange(aSessionId); } if (mKeys.IsNull()) { return; } RefPtr<dom::MediaKeySession> session(mKeys->GetSession(aSessionId)); if (session) { session->OnClosed(); } }