Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1426)

Unified Diff: Source/modules/serviceworkers/ServiceWorkerContainer.cpp

Issue 835673006: Use caller's document url to resolve scriptURL/patternURL in registerServiceWorker/getRegistration (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/serviceworkers/ServiceWorkerContainer.cpp
diff --git a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp
index 5bbf765d400c68d6259cd439aba44e8680e1c863..b5c8e935843f45403b42cc580bb826e11eb628c2 100644
--- a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp
+++ b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp
@@ -120,7 +120,7 @@ ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptS
// FIXME: This should use the container's execution context, not
dominicc (has gone to gerrit) 2015/01/19 03:19:08 This FIXME is essentially what you're fixing here,
// the callers.
ExecutionContext* executionContext = scriptState->executionContext();
- RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin();
+ RefPtr<SecurityOrigin> documentOrigin = m_executionContext->securityOrigin();
String errorMessage;
if (!documentOrigin->canAccessFeatureRequiringSecureOrigin(errorMessage)) {
resolver->reject(DOMException::create(NotSupportedError, errorMessage));
@@ -134,6 +134,7 @@ ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptS
}
KURL patternURL = executionContext->completeURL(options.scope());
+
patternURL.removeFragmentIdentifier();
if (!documentOrigin->canRequest(patternURL)) {
resolver->reject(DOMException::create(SecurityError, "The scope must match the current origin."));
@@ -141,6 +142,7 @@ ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptS
}
KURL scriptURL = executionContext->completeURL(url);
+
scriptURL.removeFragmentIdentifier();
if (!documentOrigin->canRequest(scriptURL)) {
resolver->reject(DOMException::create(SecurityError, "The origin of the script must match the current origin."));
@@ -184,7 +186,7 @@ ScriptPromise ServiceWorkerContainer::getRegistration(ScriptState* scriptState,
// FIXME: This should use the container's execution context, not
// the callers.
ExecutionContext* executionContext = scriptState->executionContext();
- RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin();
+ RefPtr<SecurityOrigin> documentOrigin = m_executionContext->securityOrigin();
String errorMessage;
if (!documentOrigin->canAccessFeatureRequiringSecureOrigin(errorMessage)) {
resolver->reject(DOMException::create(NotSupportedError, errorMessage));
@@ -304,6 +306,7 @@ bool ServiceWorkerContainer::getClientInfo(WebServiceWorkerClientInfo* info)
ServiceWorkerContainer::ServiceWorkerContainer(ExecutionContext* executionContext)
: ContextLifecycleObserver(executionContext)
, m_provider(0)
+ , m_executionContext(executionContext)
{
if (!executionContext)

Powered by Google App Engine
This is Rietveld 408576698