Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 { | 110 { |
| 111 ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); | 111 ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); |
| 112 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); | 112 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); |
| 113 ScriptPromise promise = resolver->promise(); | 113 ScriptPromise promise = resolver->promise(); |
| 114 | 114 |
| 115 if (!m_provider) { | 115 if (!m_provider) { |
| 116 resolver->reject(DOMException::create(InvalidStateError, "The document i s in an invalid state.")); | 116 resolver->reject(DOMException::create(InvalidStateError, "The document i s in an invalid state.")); |
| 117 return promise; | 117 return promise; |
| 118 } | 118 } |
| 119 | 119 |
| 120 // FIXME: This should use the container's execution context, not | 120 // 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,
| |
| 121 // the callers. | 121 // the callers. |
| 122 ExecutionContext* executionContext = scriptState->executionContext(); | 122 ExecutionContext* executionContext = scriptState->executionContext(); |
| 123 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); | 123 RefPtr<SecurityOrigin> documentOrigin = m_executionContext->securityOrigin() ; |
| 124 String errorMessage; | 124 String errorMessage; |
| 125 if (!documentOrigin->canAccessFeatureRequiringSecureOrigin(errorMessage)) { | 125 if (!documentOrigin->canAccessFeatureRequiringSecureOrigin(errorMessage)) { |
| 126 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); | 126 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); |
| 127 return promise; | 127 return promise; |
| 128 } | 128 } |
| 129 | 129 |
| 130 KURL pageURL = KURL(KURL(), documentOrigin->toString()); | 130 KURL pageURL = KURL(KURL(), documentOrigin->toString()); |
| 131 if (!pageURL.protocolIsInHTTPFamily()) { | 131 if (!pageURL.protocolIsInHTTPFamily()) { |
| 132 resolver->reject(DOMException::create(SecurityError, "The URL protocol o f the current origin is not supported: " + pageURL.protocol())); | 132 resolver->reject(DOMException::create(SecurityError, "The URL protocol o f the current origin is not supported: " + pageURL.protocol())); |
| 133 return promise; | 133 return promise; |
| 134 } | 134 } |
| 135 | 135 |
| 136 KURL patternURL = executionContext->completeURL(options.scope()); | 136 KURL patternURL = executionContext->completeURL(options.scope()); |
| 137 | |
| 137 patternURL.removeFragmentIdentifier(); | 138 patternURL.removeFragmentIdentifier(); |
| 138 if (!documentOrigin->canRequest(patternURL)) { | 139 if (!documentOrigin->canRequest(patternURL)) { |
| 139 resolver->reject(DOMException::create(SecurityError, "The scope must mat ch the current origin.")); | 140 resolver->reject(DOMException::create(SecurityError, "The scope must mat ch the current origin.")); |
| 140 return promise; | 141 return promise; |
| 141 } | 142 } |
| 142 | 143 |
| 143 KURL scriptURL = executionContext->completeURL(url); | 144 KURL scriptURL = executionContext->completeURL(url); |
| 145 | |
| 144 scriptURL.removeFragmentIdentifier(); | 146 scriptURL.removeFragmentIdentifier(); |
| 145 if (!documentOrigin->canRequest(scriptURL)) { | 147 if (!documentOrigin->canRequest(scriptURL)) { |
| 146 resolver->reject(DOMException::create(SecurityError, "The origin of the script must match the current origin.")); | 148 resolver->reject(DOMException::create(SecurityError, "The origin of the script must match the current origin.")); |
| 147 return promise; | 149 return promise; |
| 148 } | 150 } |
| 149 | 151 |
| 150 if (!patternURL.string().startsWith(scriptURL.baseAsString())) { | 152 if (!patternURL.string().startsWith(scriptURL.baseAsString())) { |
| 151 resolver->reject(DOMException::create(SecurityError, "The scope must be under the directory of the script URL.")); | 153 resolver->reject(DOMException::create(SecurityError, "The scope must be under the directory of the script URL.")); |
| 152 return promise; | 154 return promise; |
| 153 } | 155 } |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 177 ScriptPromise promise = resolver->promise(); | 179 ScriptPromise promise = resolver->promise(); |
| 178 | 180 |
| 179 if (!m_provider) { | 181 if (!m_provider) { |
| 180 resolver->reject(DOMException::create(InvalidStateError, "The document i s in an invalid state.")); | 182 resolver->reject(DOMException::create(InvalidStateError, "The document i s in an invalid state.")); |
| 181 return promise; | 183 return promise; |
| 182 } | 184 } |
| 183 | 185 |
| 184 // FIXME: This should use the container's execution context, not | 186 // FIXME: This should use the container's execution context, not |
| 185 // the callers. | 187 // the callers. |
| 186 ExecutionContext* executionContext = scriptState->executionContext(); | 188 ExecutionContext* executionContext = scriptState->executionContext(); |
| 187 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); | 189 RefPtr<SecurityOrigin> documentOrigin = m_executionContext->securityOrigin() ; |
| 188 String errorMessage; | 190 String errorMessage; |
| 189 if (!documentOrigin->canAccessFeatureRequiringSecureOrigin(errorMessage)) { | 191 if (!documentOrigin->canAccessFeatureRequiringSecureOrigin(errorMessage)) { |
| 190 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); | 192 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); |
| 191 return promise; | 193 return promise; |
| 192 } | 194 } |
| 193 | 195 |
| 194 KURL pageURL = KURL(KURL(), documentOrigin->toString()); | 196 KURL pageURL = KURL(KURL(), documentOrigin->toString()); |
| 195 if (!pageURL.protocolIsInHTTPFamily()) { | 197 if (!pageURL.protocolIsInHTTPFamily()) { |
| 196 resolver->reject(DOMException::create(SecurityError, "The URL protocol o f the current origin is not supported: " + pageURL.protocol())); | 198 resolver->reject(DOMException::create(SecurityError, "The URL protocol o f the current origin is not supported: " + pageURL.protocol())); |
| 197 return promise; | 199 return promise; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 297 else if (document->frame()->isMainFrame()) | 299 else if (document->frame()->isMainFrame()) |
| 298 info->frameType = WebURLRequest::FrameTypeTopLevel; | 300 info->frameType = WebURLRequest::FrameTypeTopLevel; |
| 299 else | 301 else |
| 300 info->frameType = WebURLRequest::FrameTypeNested; | 302 info->frameType = WebURLRequest::FrameTypeNested; |
| 301 return true; | 303 return true; |
| 302 } | 304 } |
| 303 | 305 |
| 304 ServiceWorkerContainer::ServiceWorkerContainer(ExecutionContext* executionContex t) | 306 ServiceWorkerContainer::ServiceWorkerContainer(ExecutionContext* executionContex t) |
| 305 : ContextLifecycleObserver(executionContext) | 307 : ContextLifecycleObserver(executionContext) |
| 306 , m_provider(0) | 308 , m_provider(0) |
| 309 , m_executionContext(executionContext) | |
| 307 { | 310 { |
| 308 | 311 |
| 309 if (!executionContext) | 312 if (!executionContext) |
| 310 return; | 313 return; |
| 311 | 314 |
| 312 m_ready = createReadyProperty(); | 315 m_ready = createReadyProperty(); |
| 313 | 316 |
| 314 if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::fro m(executionContext)) { | 317 if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::fro m(executionContext)) { |
| 315 m_provider = client->provider(); | 318 m_provider = client->provider(); |
| 316 if (m_provider) | 319 if (m_provider) |
| 317 m_provider->setClient(this); | 320 m_provider->setClient(this); |
| 318 } | 321 } |
| 319 } | 322 } |
| 320 | 323 |
| 321 } // namespace blink | 324 } // namespace blink |
| OLD | NEW |