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:
Csoregi Natalia 2018-09-25 06:53:10 +03:00
parent 86b7d71d5b
commit b968b0a4ff
8 changed files with 72 additions and 167 deletions

View File

@ -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;

View File

@ -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

View File

@ -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")),

View File

@ -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;

View File

@ -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());
});

View File

@ -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,

View File

@ -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);

View File

@ -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() {