Index: extensions/renderer/dispatcher.cc |
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc |
index 7f3a28f9c9eb59daa8517ec2869169e4885d5aa7..fa73ccc26163ac80378e6e857fc7ce98d3ae55ae 100644 |
--- a/extensions/renderer/dispatcher.cc |
+++ b/extensions/renderer/dispatcher.cc |
@@ -1069,6 +1069,7 @@ |
void Dispatcher::OnSetChannel(int channel) { |
delegate_->SetChannel(channel); |
+ AddChannelSpecificFeatures(); |
} |
void Dispatcher::OnSetScriptingWhitelist( |
@@ -1599,4 +1600,13 @@ |
} |
} |
+void Dispatcher::AddChannelSpecificFeatures() { |
+ // chrome-extension: resources should be allowed to register a Service Worker. |
+ if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker) |
+ ->IsAvailableToEnvironment() |
+ .is_available()) |
+ WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers( |
+ WebString::fromUTF8(kExtensionScheme)); |
+} |
+ |
} // namespace extensions |