mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Backed out 2 changesets (bug 1491889) for bustages on Logging.h:262. CLOSED TREE
Backed out changeset cb9048ebfec3 (bug 1491889) Backed out changeset f8c53e2fdc7a (bug 1491889)
This commit is contained in:
parent
86b7d71d5b
commit
b968b0a4ff
@ -392,17 +392,6 @@ ChromiumCDMChild::OnSessionClosed(const char* aSessionId,
|
||||
nsCString(aSessionId, aSessionIdSize));
|
||||
}
|
||||
|
||||
void
|
||||
ChromiumCDMChild::OnInitialized(bool aSuccess)
|
||||
{
|
||||
MOZ_ASSERT(!mInitPromise.IsEmpty(),
|
||||
"mInitPromise should exist during init callback!");
|
||||
if (!aSuccess) {
|
||||
mInitPromise.RejectIfExists(NS_ERROR_FAILURE, __func__);
|
||||
}
|
||||
mInitPromise.ResolveIfExists(true, __func__);
|
||||
}
|
||||
|
||||
cdm::FileIO*
|
||||
ChromiumCDMChild::CreateFileIO(cdm::FileIOClient * aClient)
|
||||
{
|
||||
@ -465,36 +454,18 @@ ChromiumCDMChild::RecvPurgeShmems()
|
||||
|
||||
mozilla::ipc::IPCResult
|
||||
ChromiumCDMChild::RecvInit(const bool& aAllowDistinctiveIdentifier,
|
||||
const bool& aAllowPersistentState,
|
||||
InitResolver&& aResolver)
|
||||
const bool& aAllowPersistentState)
|
||||
{
|
||||
MOZ_ASSERT(IsOnMessageLoopThread());
|
||||
GMP_LOG("ChromiumCDMChild::RecvInit(distinctiveId=%s, persistentState=%s)",
|
||||
aAllowDistinctiveIdentifier ? "true" : "false",
|
||||
aAllowPersistentState ? "true" : "false");
|
||||
mPersistentStateAllowed = aAllowPersistentState;
|
||||
|
||||
RefPtr<ChromiumCDMChild::InitPromise> promise = mInitPromise.Ensure(__func__);
|
||||
promise->Then(
|
||||
mPlugin->GMPMessageLoop()->SerialEventTarget(),
|
||||
__func__,
|
||||
[aResolver](bool /* unused */) { aResolver(true); },
|
||||
[aResolver](nsresult rv) {
|
||||
GMP_LOG("ChromiumCDMChild::RecvInit() init promise rejected with rv=%d",
|
||||
rv);
|
||||
aResolver(false);
|
||||
});
|
||||
|
||||
if (mCDM) {
|
||||
// Once the CDM is initialized we expect it to resolve mInitPromise via
|
||||
// ChromiumCDMChild::OnInitialized
|
||||
mCDM->Initialize(aAllowDistinctiveIdentifier,
|
||||
aAllowPersistentState,
|
||||
// We do not yet support hardware secure codecs
|
||||
false);
|
||||
} else {
|
||||
GMP_LOG("ChromiumCDMChild::RecvInit() mCDM not set! Is GMP shutting down?");
|
||||
mInitPromise.RejectIfExists(NS_ERROR_FAILURE, __func__);
|
||||
}
|
||||
return IPC_OK();
|
||||
}
|
||||
@ -985,8 +956,6 @@ ChromiumCDMChild::RecvDestroy()
|
||||
|
||||
MOZ_ASSERT(!mDecoderInitialized);
|
||||
|
||||
mInitPromise.RejectIfExists(NS_ERROR_ABORT, __func__);
|
||||
|
||||
if (mCDM) {
|
||||
mCDM->Destroy();
|
||||
mCDM = nullptr;
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
cdm::FileIO* CreateFileIO(cdm::FileIOClient* aClient) override;
|
||||
// End shared cdm::Host_9 and cdm::Host10 implementation
|
||||
// cdm::Host_10 specific
|
||||
void OnInitialized(bool aSuccess) override;
|
||||
void OnInitialized(bool success) override {}
|
||||
// end cdm::Host_10 specific
|
||||
|
||||
void GiveBuffer(ipc::Shmem&& aBuffer);
|
||||
@ -89,8 +89,7 @@ protected:
|
||||
ipc::IPCResult RecvPurgeShmems() override;
|
||||
void PurgeShmems();
|
||||
ipc::IPCResult RecvInit(const bool& aAllowDistinctiveIdentifier,
|
||||
const bool& aAllowPersistentState,
|
||||
InitResolver&& aResolver) override;
|
||||
const bool& aAllowPersistentState) override;
|
||||
ipc::IPCResult RecvSetServerCertificate(
|
||||
const uint32_t& aPromiseId,
|
||||
nsTArray<uint8_t>&& aServerCert) override;
|
||||
@ -145,9 +144,6 @@ protected:
|
||||
bool mPersistentStateAllowed = false;
|
||||
bool mDestroyed = false;
|
||||
nsCString mStorageId;
|
||||
|
||||
typedef MozPromise<bool, nsresult, /* IsExclusive = */ true> InitPromise;
|
||||
MozPromiseHolder<InitPromise> mInitPromise;
|
||||
};
|
||||
|
||||
} // namespace gmp
|
||||
|
@ -41,85 +41,47 @@ ChromiumCDMParent::ChromiumCDMParent(GMPContentParent* aContentParent,
|
||||
aPluginId);
|
||||
}
|
||||
|
||||
RefPtr<ChromiumCDMParent::InitPromise>
|
||||
bool
|
||||
ChromiumCDMParent::Init(ChromiumCDMCallback* aCDMCallback,
|
||||
bool aAllowDistinctiveIdentifier,
|
||||
bool aAllowPersistentState,
|
||||
nsIEventTarget* aMainThread)
|
||||
nsIEventTarget* aMainThread,
|
||||
nsCString& aOutFailureReason)
|
||||
{
|
||||
GMP_LOG("ChromiumCDMParent::Init(this=%p) shutdown=%s abormalShutdown=%s "
|
||||
"actorDestroyed=%s",
|
||||
GMP_LOG("ChromiumCDMParent::Init(this=%p) shutdown=%d abormalShutdown=%d "
|
||||
"actorDestroyed=%d",
|
||||
this,
|
||||
mIsShutdown ? "true" : "false",
|
||||
mAbnormalShutdown ? "true" : "false",
|
||||
mActorDestroyed ? "true" : "false");
|
||||
mIsShutdown,
|
||||
mAbnormalShutdown,
|
||||
mActorDestroyed);
|
||||
if (!aCDMCallback || !aMainThread) {
|
||||
GMP_LOG("ChromiumCDMParent::Init(this=%p) failed "
|
||||
"nullCallback=%s nullMainThread=%s",
|
||||
this,
|
||||
!aCDMCallback ? "true" : "false",
|
||||
!aMainThread ? "true" : "false");
|
||||
|
||||
return ChromiumCDMParent::InitPromise::CreateAndReject(
|
||||
MediaResult(NS_ERROR_FAILURE,
|
||||
nsPrintfCString("ChromiumCDMParent::Init() failed "
|
||||
"nullCallback=%s nullMainThread=%s",
|
||||
!aCDMCallback ? "true" : "false",
|
||||
!aMainThread ? "true" : "false")),
|
||||
__func__);
|
||||
aOutFailureReason = nsPrintfCString("ChromiumCDMParent::Init() failed "
|
||||
"nullCallback=%d nullMainThread=%d",
|
||||
!aCDMCallback,
|
||||
!aMainThread);
|
||||
GMP_LOG("ChromiumCDMParent::Init(this=%p) failure since aCDMCallback(%p) or"
|
||||
" aMainThread(%p) is nullptr", this, aCDMCallback, aMainThread);
|
||||
return false;
|
||||
}
|
||||
mCDMCallback = aCDMCallback;
|
||||
mMainThread = aMainThread;
|
||||
|
||||
RefPtr<ChromiumCDMParent::InitPromise> promise =
|
||||
mInitPromise.Ensure(__func__);
|
||||
RefPtr<ChromiumCDMParent> self = this;
|
||||
SendInit(aAllowDistinctiveIdentifier, aAllowPersistentState)
|
||||
->Then(AbstractThread::GetCurrent(),
|
||||
__func__,
|
||||
[self](bool aSuccess) {
|
||||
if (!aSuccess) {
|
||||
GMP_LOG("ChromiumCDMParent::Init() failed with callback from "
|
||||
"child indicating CDM failed init");
|
||||
self->mInitPromise.RejectIfExists(
|
||||
MediaResult(NS_ERROR_FAILURE,
|
||||
"ChromiumCDMParent::Init() failed with callback "
|
||||
"from child indicating CDM failed init"),
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
GMP_LOG(
|
||||
"ChromiumCDMParent::Init() succeeded with callback from child");
|
||||
self->mInitPromise.ResolveIfExists(true /* unused */, __func__);
|
||||
},
|
||||
[self](ResponseRejectReason aReason) {
|
||||
RefPtr<gmp::GeckoMediaPluginService> service =
|
||||
gmp::GeckoMediaPluginService::GetGeckoMediaPluginService();
|
||||
bool xpcomWillShutdown =
|
||||
service && service->XPCOMWillShutdownReceived();
|
||||
GMP_LOG("ChromiumCDMParent::Init(this=%p) failed "
|
||||
"shutdown=%s cdmCrash=%s actorDestroyed=%s "
|
||||
"browserShutdown=%s promiseRejectReason=%d",
|
||||
self.get(),
|
||||
self->mIsShutdown ? "true" : "false",
|
||||
self->mAbnormalShutdown ? "true" : "false",
|
||||
self->mActorDestroyed ? "true" : "false",
|
||||
xpcomWillShutdown ? "true" : "false",
|
||||
static_cast<int>(aReason));
|
||||
self->mInitPromise.RejectIfExists(
|
||||
MediaResult(
|
||||
NS_ERROR_FAILURE,
|
||||
nsPrintfCString("ChromiumCDMParent::Init() failed "
|
||||
"shutdown=%s cdmCrash=%s actorDestroyed=%s "
|
||||
"browserShutdown=%s promiseRejectReason=%d",
|
||||
self->mIsShutdown ? "true" : "false",
|
||||
self->mAbnormalShutdown ? "true" : "false",
|
||||
self->mActorDestroyed ? "true" : "false",
|
||||
xpcomWillShutdown ? "true" : "false",
|
||||
static_cast<int>(aReason))),
|
||||
__func__);
|
||||
});
|
||||
return promise;
|
||||
if (SendInit(aAllowDistinctiveIdentifier,
|
||||
aAllowPersistentState)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
RefPtr<gmp::GeckoMediaPluginService> service =
|
||||
gmp::GeckoMediaPluginService::GetGeckoMediaPluginService();
|
||||
bool xpcomWillShutdown = service && service->XPCOMWillShutdownReceived();
|
||||
aOutFailureReason = nsPrintfCString(
|
||||
"ChromiumCDMParent::Init() failed "
|
||||
"shutdown=%d cdmCrash=%d actorDestroyed=%d browserShutdown=%d",
|
||||
mIsShutdown,
|
||||
mAbnormalShutdown,
|
||||
mActorDestroyed,
|
||||
xpcomWillShutdown);
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
@ -1177,11 +1139,6 @@ ChromiumCDMParent::Shutdown()
|
||||
// Note: MediaKeys rejects all outstanding promises when it initiates shutdown.
|
||||
mPromiseToCreateSessionToken.Clear();
|
||||
|
||||
mInitPromise.RejectIfExists(
|
||||
MediaResult(NS_ERROR_DOM_ABORT_ERR,
|
||||
RESULT_DETAIL("ChromiumCDMParent is shutdown")),
|
||||
__func__);
|
||||
|
||||
mInitVideoDecoderPromise.RejectIfExists(
|
||||
MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR,
|
||||
RESULT_DETAIL("ChromiumCDMParent is shutdown")),
|
||||
|
@ -34,18 +34,17 @@ class ChromiumCDMParent final
|
||||
, public GMPCrashHelperHolder
|
||||
{
|
||||
public:
|
||||
typedef MozPromise<bool, MediaResult, /* IsExclusive = */ true> InitPromise;
|
||||
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(ChromiumCDMParent)
|
||||
|
||||
ChromiumCDMParent(GMPContentParent* aContentParent, uint32_t aPluginId);
|
||||
|
||||
uint32_t PluginId() const { return mPluginId; }
|
||||
|
||||
RefPtr<InitPromise> Init(ChromiumCDMCallback* aCDMCallback,
|
||||
bool aAllowDistinctiveIdentifier,
|
||||
bool aAllowPersistentState,
|
||||
nsIEventTarget* aMainThread);
|
||||
bool Init(ChromiumCDMCallback* aCDMCallback,
|
||||
bool aAllowDistinctiveIdentifier,
|
||||
bool aAllowPersistentState,
|
||||
nsIEventTarget* aMainThread,
|
||||
nsCString& aOutFailureReason);
|
||||
|
||||
void CreateSession(uint32_t aCreateSessionToken,
|
||||
uint32_t aSessionType,
|
||||
@ -160,8 +159,6 @@ protected:
|
||||
nsDataHashtable<nsUint32HashKey, uint32_t> mPromiseToCreateSessionToken;
|
||||
nsTArray<RefPtr<DecryptJob>> mDecrypts;
|
||||
|
||||
MozPromiseHolder<InitPromise> mInitPromise;
|
||||
|
||||
MozPromiseHolder<MediaDataDecoder::InitPromise> mInitVideoDecoderPromise;
|
||||
MozPromiseHolder<MediaDataDecoder::DecodePromise> mDecodePromise;
|
||||
|
||||
|
@ -98,33 +98,25 @@ ChromiumCDMProxy::Init(PromiseId aPromiseId,
|
||||
promise->Then(
|
||||
thread,
|
||||
__func__,
|
||||
[self, aPromiseId, thread](RefPtr<gmp::ChromiumCDMParent> cdm) {
|
||||
// service->GetCDM succeeded
|
||||
[self, aPromiseId](RefPtr<gmp::ChromiumCDMParent> cdm) {
|
||||
self->mCallback =
|
||||
MakeUnique<ChromiumCDMCallbackProxy>(self, self->mMainThread);
|
||||
cdm
|
||||
->Init(self->mCallback.get(),
|
||||
self->mDistinctiveIdentifierRequired,
|
||||
self->mPersistentStateRequired,
|
||||
self->mMainThread)
|
||||
->Then(thread,
|
||||
__func__,
|
||||
[self, aPromiseId, cdm](bool /* unused */) {
|
||||
// CDM init succeeded
|
||||
{
|
||||
MutexAutoLock lock(self->mCDMMutex);
|
||||
self->mCDM = cdm;
|
||||
}
|
||||
self->OnCDMCreated(aPromiseId);
|
||||
},
|
||||
[self, aPromiseId](MediaResult aResult) {
|
||||
// CDM init failed
|
||||
self->RejectPromise(
|
||||
aPromiseId, aResult.Code(), aResult.Message());
|
||||
});
|
||||
nsCString failureReason;
|
||||
if (!cdm->Init(self->mCallback.get(),
|
||||
self->mDistinctiveIdentifierRequired,
|
||||
self->mPersistentStateRequired,
|
||||
self->mMainThread,
|
||||
failureReason)) {
|
||||
self->RejectPromise(aPromiseId, NS_ERROR_FAILURE, failureReason);
|
||||
return;
|
||||
}
|
||||
{
|
||||
MutexAutoLock lock(self->mCDMMutex);
|
||||
self->mCDM = cdm;
|
||||
}
|
||||
self->OnCDMCreated(aPromiseId);
|
||||
},
|
||||
[self, aPromiseId](MediaResult rv) {
|
||||
// service->GetCDM failed
|
||||
self->RejectPromise(
|
||||
aPromiseId, rv.Code(), rv.Description());
|
||||
});
|
||||
|
@ -146,9 +146,6 @@ public:
|
||||
{
|
||||
// aUseHardwareSecureCodec is not used by CDM9
|
||||
mCDM->Initialize(aAllowDistinctiveIdentifier, aAllowPersistentState);
|
||||
// CDM9 should init synchronously and does not call an OnInit callback, so
|
||||
// we make sure it's called here.
|
||||
mHost->OnInitialized(true);
|
||||
}
|
||||
|
||||
void GetStatusForPolicy(uint32_t aPromiseId,
|
||||
|
@ -16,7 +16,7 @@ child:
|
||||
|
||||
// cdm::ContentDecryptionModule9+10
|
||||
async Init(bool aAllowDistinctiveIdentifier,
|
||||
bool aAllowPersistentState) returns (bool unused);
|
||||
bool aAllowPersistentState);
|
||||
|
||||
async GetStatusForPolicy(uint32_t aPromiseId,
|
||||
nsCString aMinHdcpVersion);
|
||||
|
@ -448,27 +448,24 @@ class CDMStorageTest
|
||||
RefPtr<gmp::GetCDMParentPromise> promise =
|
||||
service->GetCDM(aNodeId, std::move(tags), nullptr);
|
||||
auto thread = GetAbstractGMPThread();
|
||||
promise->Then(
|
||||
thread,
|
||||
__func__,
|
||||
[self, aUpdates, thread](RefPtr<gmp::ChromiumCDMParent> cdm) {
|
||||
self->mCDM = cdm;
|
||||
EXPECT_TRUE(!!self->mCDM);
|
||||
self->mCallback.reset(new CallbackProxy(self));
|
||||
nsCString failureReason;
|
||||
self->mCDM
|
||||
->Init(self->mCallback.get(), false, true, GetMainThreadEventTarget())
|
||||
->Then(thread,
|
||||
__func__,
|
||||
[self, aUpdates] {
|
||||
for (auto& update : aUpdates) {
|
||||
self->Update(update);
|
||||
}
|
||||
},
|
||||
[](MediaResult rv) { EXPECT_TRUE(false); });
|
||||
promise->Then(thread,
|
||||
__func__,
|
||||
[self, aUpdates](RefPtr<gmp::ChromiumCDMParent> cdm) {
|
||||
self->mCDM = cdm;
|
||||
EXPECT_TRUE(!!self->mCDM);
|
||||
self->mCallback.reset(new CallbackProxy(self));
|
||||
nsCString failureReason;
|
||||
self->mCDM->Init(self->mCallback.get(),
|
||||
false,
|
||||
true,
|
||||
GetMainThreadEventTarget(),
|
||||
failureReason);
|
||||
|
||||
},
|
||||
[](MediaResult rv) { EXPECT_TRUE(false); });
|
||||
for (auto& update : aUpdates) {
|
||||
self->Update(update);
|
||||
}
|
||||
},
|
||||
[](MediaResult rv) { EXPECT_TRUE(false); });
|
||||
}
|
||||
|
||||
void TestBasicStorage() {
|
||||
|
Loading…
Reference in New Issue
Block a user