| Index: extensions/renderer/dispatcher.cc
|
| diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
|
| index 7e4647796770c60c1061c8090a1ab00f5ce85a7c..bbef097e9f6f8bd6f94fad08a41c2cf416ef69d4 100644
|
| --- a/extensions/renderer/dispatcher.cc
|
| +++ b/extensions/renderer/dispatcher.cc
|
| @@ -247,37 +247,33 @@ Dispatcher::Dispatcher(DispatcherDelegate* delegate)
|
|
|
| RenderThread::Get()->RegisterExtension(SafeBuiltins::CreateV8Extension());
|
|
|
| - // WebSecurityPolicy whitelists. They should be registered for both
|
| - // chrome-extension: and chrome-extension-resource.
|
| - using RegisterFunction = void (*)(const WebString&);
|
| - RegisterFunction register_functions[] = {
|
| - // Treat as secure because communication with them is entirely in the
|
| - // browser, so there is no danger of manipulation or eavesdropping on
|
| - // communication with them by third parties.
|
| - WebSecurityPolicy::registerURLSchemeAsSecure,
|
| - // As far as Blink is concerned, they should be allowed to receive CORS
|
| - // requests. At the Extensions layer, requests will actually be blocked
|
| - // unless overridden by the web_accessible_resources manifest key.
|
| - // TODO(kalman): See what happens with a service worker.
|
| - WebSecurityPolicy::registerURLSchemeAsCORSEnabled,
|
| - // Resources should bypass Content Security Policy checks when included in
|
| - // protected resources. TODO(kalman): What are "protected resources"?
|
| - WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy,
|
| - // Extension resources are HTTP-like and safe to expose to the fetch API.
|
| - // The rules for the fetch API are consistent with XHR.
|
| - WebSecurityPolicy::registerURLSchemeAsSupportingFetchAPI,
|
| - // Extension resources, when loaded as the top-level document, should
|
| - // bypass Blink's strict first-party origin checks.
|
| - WebSecurityPolicy::registerURLSchemeAsFirstPartyWhenTopLevel,
|
| - };
|
| -
|
| + // Register WebSecurityPolicy whitelists for the chrome-extension:// scheme.
|
| WebString extension_scheme(base::ASCIIToUTF16(kExtensionScheme));
|
| - WebString extension_resource_scheme(base::ASCIIToUTF16(
|
| - kExtensionResourceScheme));
|
| - for (RegisterFunction func : register_functions) {
|
| - func(extension_scheme);
|
| - func(extension_resource_scheme);
|
| - }
|
| +
|
| + // Treat as secure because communication with them is entirely in the browser,
|
| + // so there is no danger of manipulation or eavesdropping on communication
|
| + // with them by third parties.
|
| + WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme);
|
| +
|
| + // As far as Blink is concerned, they should be allowed to receive CORS
|
| + // requests. At the Extensions layer, requests will actually be blocked unless
|
| + // overridden by the web_accessible_resources manifest key.
|
| + // TODO(kalman): See what happens with a service worker.
|
| + WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme);
|
| +
|
| + // Resources should bypass Content Security Policy checks when included in
|
| + // protected resources. TODO(kalman): What are "protected resources"?
|
| + WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy(
|
| + extension_scheme);
|
| +
|
| + // Extension resources are HTTP-like and safe to expose to the fetch API. The
|
| + // rules for the fetch API are consistent with XHR.
|
| + WebSecurityPolicy::registerURLSchemeAsSupportingFetchAPI(extension_scheme);
|
| +
|
| + // Extension resources, when loaded as the top-level document, should bypass
|
| + // Blink's strict first-party origin checks.
|
| + WebSecurityPolicy::registerURLSchemeAsFirstPartyWhenTopLevel(
|
| + extension_scheme);
|
|
|
| // For extensions, we want to ensure we call the IdleHandler every so often,
|
| // even if the extension keeps up activity.
|
| @@ -400,12 +396,11 @@ void Dispatcher::DidInitializeServiceWorkerContextOnWorkerThread(
|
| const GURL& url) {
|
| const base::TimeTicks start_time = base::TimeTicks::Now();
|
|
|
| - if (!url.SchemeIs(kExtensionScheme) &&
|
| - !url.SchemeIs(kExtensionResourceScheme)) {
|
| - // Early-out if this isn't a chrome-extension:// or resource scheme,
|
| - // because looking up the extension registry is unnecessary if it's not.
|
| - // Checking this will also skip over hosted apps, which is the desired
|
| - // behavior - hosted app service workers are not our concern.
|
| + if (!url.SchemeIs(kExtensionScheme)) {
|
| + // Early-out if this isn't a chrome-extension:// scheme, because looking up
|
| + // the extension registry is unnecessary if it's not. Checking this will
|
| + // also skip over hosted apps, which is the desired behavior - hosted app
|
| + // service workers are not our concern.
|
| return;
|
| }
|
|
|
| @@ -532,8 +527,7 @@ void Dispatcher::WillDestroyServiceWorkerContextOnWorkerThread(
|
| v8::Local<v8::Context> v8_context,
|
| int64_t service_worker_version_id,
|
| const GURL& url) {
|
| - if (url.SchemeIs(kExtensionScheme) ||
|
| - url.SchemeIs(kExtensionResourceScheme)) {
|
| + if (url.SchemeIs(kExtensionScheme)) {
|
| // See comment in DidInitializeServiceWorkerContextOnWorkerThread.
|
| g_worker_script_context_set.Get().Remove(v8_context, url);
|
| // TODO(devlin): We're not calling
|
|
|