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,6 +611,13 @@ ClientSource::PostMessage(const ClientPostMessageArgs& aArgs)
CopyUTF8toUTF16(origin, init.mOrigin);
}
RefPtr<ServiceWorker> instance;
if (ServiceWorkerParentInterceptEnabled()) {
instance = globalObject->GetOrCreateServiceWorker(source);
} 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.
@ -621,12 +628,13 @@ ClientSource::PostMessage(const ClientPostMessageArgs& aArgs)
RefPtr<ServiceWorkerRegistrationInfo> reg =
swm->GetRegistration(principal, source.Scope());
if (reg) {
RefPtr<ServiceWorker> instance =
globalObject->GetOrCreateServiceWorker(source);
instance = globalObject->GetOrCreateServiceWorker(source);
}
}
if (instance) {
init.mSource.SetValue().SetAsServiceWorker() = instance;
}
}
RefPtr<MessageEvent> event =
MessageEvent::Constructor(target, NS_LITERAL_STRING("message"), init);