Bug 1469882 Don't consult child process ServiceWorkerManager when populating MessageEvent.source with the e10s pref flipped. r=mrbkap

This commit is contained in:
Ben Kelly 2018-06-23 10:10:53 -07:00
parent 06ae64dde8
commit 9258565483

View File

@ -611,21 +611,29 @@ ClientSource::PostMessage(const ClientPostMessageArgs& aArgs)
CopyUTF8toUTF16(origin, init.mOrigin); CopyUTF8toUTF16(origin, init.mOrigin);
} }
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance(); RefPtr<ServiceWorker> instance;
if (!swm) {
// Shutting down. Just don't deliver this message. if (ServiceWorkerParentInterceptEnabled()) {
ref = ClientOpPromise::CreateAndReject(NS_ERROR_FAILURE, __func__); instance = globalObject->GetOrCreateServiceWorker(source);
return ref.forget(); } else {
// If we are in legacy child-side intercept mode then we need to verify
// this registration exists in the current process.
RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
if (!swm) {
// Shutting down. Just don't deliver this message.
ref = ClientOpPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return ref.forget();
}
RefPtr<ServiceWorkerRegistrationInfo> reg =
swm->GetRegistration(principal, source.Scope());
if (reg) {
instance = globalObject->GetOrCreateServiceWorker(source);
}
} }
RefPtr<ServiceWorkerRegistrationInfo> reg = if (instance) {
swm->GetRegistration(principal, source.Scope()); init.mSource.SetValue().SetAsServiceWorker() = instance;
if (reg) {
RefPtr<ServiceWorker> instance =
globalObject->GetOrCreateServiceWorker(source);
if (instance) {
init.mSource.SetValue().SetAsServiceWorker() = instance;
}
} }
RefPtr<MessageEvent> event = RefPtr<MessageEvent> event =