Bug 1791892 - part4 : reject init promise when shutdown. r=jolin

Depends on D157884

Differential Revision: https://phabricator.services.mozilla.com/D157991
This commit is contained in:
alwu 2022-10-10 20:13:30 +00:00
parent d57ad742bf
commit 5d32b4e238

View file

@ -60,7 +60,7 @@ RefPtr<GenericNonExclusivePromise> MFMediaEngineChild::Init(
RemoteDecodeIn::UtilityProcess_MFMediaEngineCDM); RemoteDecodeIn::UtilityProcess_MFMediaEngineCDM);
if (!manager || !manager->CanSend()) { if (!manager || !manager->CanSend()) {
CLOG("Manager not exists or can't send"); CLOG("Manager not exists or can't send");
mInitPromiseHolder.Reject(NS_ERROR_FAILURE, __func__); mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE, __func__);
return; return;
} }
@ -75,12 +75,13 @@ RefPtr<GenericNonExclusivePromise> MFMediaEngineChild::Init(
// Id 0 is used to indicate error. // Id 0 is used to indicate error.
if (aId == 0) { if (aId == 0) {
CLOG("Failed to initialize MFMediaEngineChild"); CLOG("Failed to initialize MFMediaEngineChild");
mInitPromiseHolder.Reject(NS_ERROR_FAILURE, __func__); mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE,
__func__);
return; return;
} }
mMediaEngineId = aId; mMediaEngineId = aId;
CLOG("Initialized MFMediaEngineChild"); CLOG("Initialized MFMediaEngineChild");
mInitPromiseHolder.Resolve(true, __func__); mInitPromiseHolder.ResolveIfExists(true, __func__);
}, },
[self, [self,
this](const mozilla::ipc::ResponseRejectReason& aReason) { this](const mozilla::ipc::ResponseRejectReason& aReason) {
@ -88,7 +89,8 @@ RefPtr<GenericNonExclusivePromise> MFMediaEngineChild::Init(
CLOG( CLOG(
"Failed to initialize MFMediaEngineChild due to " "Failed to initialize MFMediaEngineChild due to "
"IPC failure"); "IPC failure");
mInitPromiseHolder.Reject(NS_ERROR_FAILURE, __func__); mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE,
__func__);
}) })
->Track(mInitEngineRequest); ->Track(mInitEngineRequest);
}, },
@ -206,6 +208,7 @@ void MFMediaEngineChild::IPDLActorDestroyed() {
void MFMediaEngineChild::Shutdown() { void MFMediaEngineChild::Shutdown() {
AssertOnManagerThread(); AssertOnManagerThread();
SendShutdown(); SendShutdown();
mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE, __func__);
mInitEngineRequest.DisconnectIfExists(); mInitEngineRequest.DisconnectIfExists();
} }