зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1818790 - part3 : connect WMFCDMProxyCallback to MFCDMChild in order to propagate events. r=jolin
Differential Revision: https://phabricator.services.mozilla.com/D170958
This commit is contained in:
Родитель
39a1024e0b
Коммит
f26b7cb257
|
@ -113,7 +113,7 @@ RefPtr<WMFCDMImpl::InitPromise> WMFCDMImpl::Init(
|
|||
aParams.mDistinctiveIdentifierRequired
|
||||
? KeySystemConfig::Requirement::Required
|
||||
: KeySystemConfig::Requirement::Optional,
|
||||
aParams.mHWSecure)
|
||||
aParams.mHWSecure, aParams.mProxyCallback)
|
||||
->Then(
|
||||
mCDM->ManagerThread(), __func__,
|
||||
[self, this](const MFCDMInitIPDL& init) {
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
class WMFCDMProxyCallback;
|
||||
|
||||
/**
|
||||
* WMFCDMImpl is a helper class for MFCDM protocol clients. It creates, manages,
|
||||
* and calls MFCDMChild object in the content process on behalf of the client,
|
||||
|
@ -41,6 +43,7 @@ class WMFCDMImpl final {
|
|||
bool mPersistentStateRequired;
|
||||
bool mDistinctiveIdentifierRequired;
|
||||
bool mHWSecure;
|
||||
WMFCDMProxyCallback* mProxyCallback;
|
||||
};
|
||||
|
||||
RefPtr<InitPromise> Init(const InitParams& aParams);
|
||||
|
|
|
@ -46,8 +46,9 @@ void WMFCDMProxy::Init(PromiseId aPromiseId, const nsAString& aOrigin,
|
|||
mCDM = MakeRefPtr<WMFCDMImpl>(mKeySystem);
|
||||
mProxyCallback = new WMFCDMProxyCallback(this);
|
||||
WMFCDMImpl::InitParams params{
|
||||
nsString(aOrigin), mConfig.mInitDataTypes, mPersistentStateRequired,
|
||||
mDistinctiveIdentifierRequired, false /* HW secure? */};
|
||||
nsString(aOrigin), mConfig.mInitDataTypes,
|
||||
mPersistentStateRequired, mDistinctiveIdentifierRequired,
|
||||
false /* HW secure? */, mProxyCallback};
|
||||
mCDM->Init(params)->Then(
|
||||
mMainThread, __func__,
|
||||
[self = RefPtr{this}, this, aPromiseId](const bool) {
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "mozilla/KeySystemConfig.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "mozilla/WindowsVersion.h"
|
||||
#include "mozilla/WMFCDMProxyCallback.h"
|
||||
#include "nsString.h"
|
||||
#include "RemoteDecoderManagerChild.h"
|
||||
|
||||
|
@ -25,6 +26,8 @@ MFCDMChild::MFCDMChild(const nsAString& aKeySystem)
|
|||
mRemotePromise = EnsureRemote();
|
||||
}
|
||||
|
||||
MFCDMChild::~MFCDMChild() {}
|
||||
|
||||
RefPtr<MFCDMChild::RemotePromise> MFCDMChild::EnsureRemote() {
|
||||
if (!mManagerThread) {
|
||||
LOG("no manager thread");
|
||||
|
@ -74,6 +77,7 @@ void MFCDMChild::Shutdown() {
|
|||
MOZ_ASSERT(!mShutdown);
|
||||
|
||||
mShutdown = true;
|
||||
mProxyCallback = nullptr;
|
||||
|
||||
mRemoteRequest.DisconnectIfExists();
|
||||
mInitRequest.DisconnectIfExists();
|
||||
|
@ -154,7 +158,8 @@ already_AddRefed<PromiseType> MFCDMChild::InvokeAsync(
|
|||
RefPtr<MFCDMChild::InitPromise> MFCDMChild::Init(
|
||||
const nsAString& aOrigin, const CopyableTArray<nsString>& aInitDataTypes,
|
||||
const KeySystemConfig::Requirement aPersistentState,
|
||||
const KeySystemConfig::Requirement aDistinctiveID, const bool aHWSecure) {
|
||||
const KeySystemConfig::Requirement aDistinctiveID, const bool aHWSecure,
|
||||
WMFCDMProxyCallback* aProxyCallback) {
|
||||
MOZ_ASSERT(mManagerThread);
|
||||
|
||||
if (mShutdown) {
|
||||
|
@ -166,6 +171,7 @@ RefPtr<MFCDMChild::InitPromise> MFCDMChild::Init(
|
|||
return InitPromise::CreateAndReject(mState, __func__);
|
||||
}
|
||||
|
||||
mProxyCallback = aProxyCallback;
|
||||
MFCDMInitParamsIPDL params{nsString(aOrigin), aInitDataTypes, aDistinctiveID,
|
||||
aPersistentState, aHWSecure};
|
||||
auto doSend = [self = RefPtr{this}, this, params]() {
|
||||
|
@ -231,19 +237,28 @@ RefPtr<MFCDMChild::SessionPromise> MFCDMChild::CreateSessionAndGenerateRequest(
|
|||
|
||||
mozilla::ipc::IPCResult MFCDMChild::RecvOnSessionKeyMessage(
|
||||
const MFCDMKeyMessage& aMessage) {
|
||||
// TODO : implement this.
|
||||
LOG("RecvOnSessionKeyMessage, sessionId=%s",
|
||||
NS_ConvertUTF16toUTF8(aMessage.sessionId()).get());
|
||||
MOZ_ASSERT(mProxyCallback);
|
||||
mProxyCallback->OnSessionMessage(aMessage);
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult MFCDMChild::RecvOnSessionKeyStatusesChanged(
|
||||
const MFCDMKeyStatusChange& aKeyStatuses) {
|
||||
// TODO : implement this.
|
||||
LOG("RecvOnSessionKeyStatusesChanged, sessionId=%s",
|
||||
NS_ConvertUTF16toUTF8(aKeyStatuses.sessionId()).get());
|
||||
MOZ_ASSERT(mProxyCallback);
|
||||
mProxyCallback->OnSessionKeyStatusesChange(aKeyStatuses);
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult MFCDMChild::RecvOnSessionKeyExpiration(
|
||||
const MFCDMKeyExpiration& aExpiration) {
|
||||
// TODO : implement this.
|
||||
LOG("RecvOnSessionKeyExpiration, sessionId=%s",
|
||||
NS_ConvertUTF16toUTF8(aExpiration.sessionId()).get());
|
||||
MOZ_ASSERT(mProxyCallback);
|
||||
mProxyCallback->OnSessionKeyExpiration(aExpiration);
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
class WMFCDMProxyCallback;
|
||||
|
||||
/**
|
||||
* MFCDMChild is a content process proxy to MFCDMParent and the actual CDM
|
||||
* running in utility process.
|
||||
|
@ -34,7 +36,8 @@ class MFCDMChild final : public PMFCDMChild {
|
|||
const CopyableTArray<nsString>& aInitDataTypes,
|
||||
const KeySystemConfig::Requirement aPersistentState,
|
||||
const KeySystemConfig::Requirement aDistinctiveID,
|
||||
const bool aHWSecure);
|
||||
const bool aHWSecure,
|
||||
WMFCDMProxyCallback* aProxyCallback);
|
||||
|
||||
using SessionPromise = MozPromise<nsString, nsresult, true>;
|
||||
RefPtr<SessionPromise> CreateSessionAndGenerateRequest(
|
||||
|
@ -66,7 +69,7 @@ class MFCDMChild final : public PMFCDMChild {
|
|||
}
|
||||
|
||||
private:
|
||||
~MFCDMChild() = default;
|
||||
~MFCDMChild();
|
||||
|
||||
using RemotePromise = GenericNonExclusivePromise;
|
||||
RefPtr<RemotePromise> EnsureRemote();
|
||||
|
@ -101,6 +104,8 @@ class MFCDMChild final : public PMFCDMChild {
|
|||
MozPromiseHolder<SessionPromise> mCreateSessionPromiseHolder;
|
||||
MozPromiseRequestHolder<CreateSessionAndGenerateRequestPromise>
|
||||
mCreateSessionRequest;
|
||||
|
||||
RefPtr<WMFCDMProxyCallback> mProxyCallback;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
Загрузка…
Ссылка в новой задаче