 Chromium Code Reviews
 Chromium Code Reviews 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
    
  
    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| 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) |