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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 return ScriptPromise(); | 138 return ScriptPromise(); |
139 | 139 |
140 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); | 140 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); |
141 String errorMessage; | 141 String errorMessage; |
142 if (!executionContext->isPrivilegedContext(errorMessage)) { | 142 if (!executionContext->isPrivilegedContext(errorMessage)) { |
143 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); | 143 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); |
144 return promise; | 144 return promise; |
145 } | 145 } |
146 | 146 |
147 KURL pageURL = KURL(KURL(), documentOrigin->toString()); | 147 KURL pageURL = KURL(KURL(), documentOrigin->toString()); |
148 if (!pageURL.protocolIsInHTTPFamily()) { | 148 if (!SchemeRegistry::shouldAllowServiceWorkers(pageURL)) { |
149 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The URL protocol of the current origin ('" + documentOrigin->t
oString() + "') is not supported.")); | 149 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The URL protocol of the current origin ('" + documentOrigin->t
oString() + "') is not supported.")); |
150 return promise; | 150 return promise; |
151 } | 151 } |
152 | 152 |
153 KURL scriptURL = callingExecutionContext(scriptState->isolate())->completeUR
L(url); | 153 KURL scriptURL = callingExecutionContext(scriptState->isolate())->completeUR
L(url); |
154 scriptURL.removeFragmentIdentifier(); | 154 scriptURL.removeFragmentIdentifier(); |
155 if (!documentOrigin->canRequest(scriptURL)) { | 155 if (!documentOrigin->canRequest(scriptURL)) { |
156 RefPtr<SecurityOrigin> scriptOrigin = SecurityOrigin::create(scriptURL); | 156 RefPtr<SecurityOrigin> scriptOrigin = SecurityOrigin::create(scriptURL); |
157 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The origin of the provided scriptURL ('" + scriptOrigin->toStr
ing() + "') does not match the current origin ('" + documentOrigin->toString() +
"').")); | 157 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The origin of the provided scriptURL ('" + scriptOrigin->toStr
ing() + "') does not match the current origin ('" + documentOrigin->toString() +
"').")); |
158 return promise; | 158 return promise; |
159 } | 159 } |
160 if (!scriptURL.protocolIsInHTTPFamily()) { | 160 if (!SchemeRegistry::shouldAllowServiceWorkers(scriptURL)) { |
161 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The URL protocol of the script ('" + scriptURL.string() + "')
is not supported.")); | 161 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The URL protocol of the script ('" + scriptURL.string() + "')
is not supported.")); |
162 return promise; | 162 return promise; |
163 } | 163 } |
164 | 164 |
165 KURL patternURL; | 165 KURL patternURL; |
166 if (options.scope().isNull()) | 166 if (options.scope().isNull()) |
167 patternURL = KURL(scriptURL, "./"); | 167 patternURL = KURL(scriptURL, "./"); |
168 else | 168 else |
169 patternURL = callingExecutionContext(scriptState->isolate())->completeUR
L(options.scope()); | 169 patternURL = callingExecutionContext(scriptState->isolate())->completeUR
L(options.scope()); |
170 patternURL.removeFragmentIdentifier(); | 170 patternURL.removeFragmentIdentifier(); |
171 | 171 |
172 if (!documentOrigin->canRequest(patternURL)) { | 172 if (!documentOrigin->canRequest(patternURL)) { |
173 RefPtr<SecurityOrigin> patternOrigin = SecurityOrigin::create(patternURL
); | 173 RefPtr<SecurityOrigin> patternOrigin = SecurityOrigin::create(patternURL
); |
174 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The origin of the provided scope ('" + patternOrigin->toString
() + "') does not match the current origin ('" + documentOrigin->toString() + "'
).")); | 174 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The origin of the provided scope ('" + patternOrigin->toString
() + "') does not match the current origin ('" + documentOrigin->toString() + "'
).")); |
175 return promise; | 175 return promise; |
176 } | 176 } |
177 if (!patternURL.protocolIsInHTTPFamily()) { | 177 if (!SchemeRegistry::shouldAllowServiceWorkers(patternURL)) { |
178 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The URL protocol of the scope ('" + patternURL.string() + "')
is not supported.")); | 178 resolver->reject(DOMException::create(SecurityError, "Failed to register
a ServiceWorker: The URL protocol of the scope ('" + patternURL.string() + "')
is not supported.")); |
179 return promise; | 179 return promise; |
180 } | 180 } |
181 | 181 |
182 m_provider->registerServiceWorker(patternURL, scriptURL, new CallbackPromise
Adapter<ServiceWorkerRegistration, ServiceWorkerError>(resolver)); | 182 m_provider->registerServiceWorker(patternURL, scriptURL, new CallbackPromise
Adapter<ServiceWorkerRegistration, ServiceWorkerError>(resolver)); |
183 | 183 |
184 return promise; | 184 return promise; |
185 } | 185 } |
186 | 186 |
187 ScriptPromise ServiceWorkerContainer::getRegistration(ScriptState* scriptState,
const String& documentURL) | 187 ScriptPromise ServiceWorkerContainer::getRegistration(ScriptState* scriptState,
const String& documentURL) |
(...skipping 12 matching lines...) Expand all Loading... |
200 return ScriptPromise(); | 200 return ScriptPromise(); |
201 | 201 |
202 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); | 202 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); |
203 String errorMessage; | 203 String errorMessage; |
204 if (!executionContext->isPrivilegedContext(errorMessage)) { | 204 if (!executionContext->isPrivilegedContext(errorMessage)) { |
205 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); | 205 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); |
206 return promise; | 206 return promise; |
207 } | 207 } |
208 | 208 |
209 KURL pageURL = KURL(KURL(), documentOrigin->toString()); | 209 KURL pageURL = KURL(KURL(), documentOrigin->toString()); |
210 if (!pageURL.protocolIsInHTTPFamily()) { | 210 if (!SchemeRegistry::shouldAllowServiceWorkers(pageURL)) { |
211 resolver->reject(DOMException::create(SecurityError, "Failed to get a Se
rviceWorkerRegistration: The URL protocol of the current origin ('" + documentOr
igin->toString() + "') is not supported.")); | 211 resolver->reject(DOMException::create(SecurityError, "Failed to get a Se
rviceWorkerRegistration: The URL protocol of the current origin ('" + documentOr
igin->toString() + "') is not supported.")); |
212 return promise; | 212 return promise; |
213 } | 213 } |
214 | 214 |
215 KURL completedURL = callingExecutionContext(scriptState->isolate())->complet
eURL(documentURL); | 215 KURL completedURL = callingExecutionContext(scriptState->isolate())->complet
eURL(documentURL); |
216 completedURL.removeFragmentIdentifier(); | 216 completedURL.removeFragmentIdentifier(); |
217 if (!documentOrigin->canRequest(completedURL)) { | 217 if (!documentOrigin->canRequest(completedURL)) { |
218 RefPtr<SecurityOrigin> documentURLOrigin = SecurityOrigin::create(comple
tedURL); | 218 RefPtr<SecurityOrigin> documentURLOrigin = SecurityOrigin::create(comple
tedURL); |
219 resolver->reject(DOMException::create(SecurityError, "Failed to get a Se
rviceWorkerRegistration: The origin of the provided documentURL ('" + documentUR
LOrigin->toString() + "') does not match the current origin ('" + documentOrigin
->toString() + "').")); | 219 resolver->reject(DOMException::create(SecurityError, "Failed to get a Se
rviceWorkerRegistration: The origin of the provided documentURL ('" + documentUR
LOrigin->toString() + "') does not match the current origin ('" + documentOrigin
->toString() + "').")); |
220 return promise; | 220 return promise; |
(...skipping 15 matching lines...) Expand all Loading... |
236 | 236 |
237 ExecutionContext* executionContext = scriptState->executionContext(); | 237 ExecutionContext* executionContext = scriptState->executionContext(); |
238 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); | 238 RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); |
239 String errorMessage; | 239 String errorMessage; |
240 if (!executionContext->isPrivilegedContext(errorMessage)) { | 240 if (!executionContext->isPrivilegedContext(errorMessage)) { |
241 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); | 241 resolver->reject(DOMException::create(NotSupportedError, errorMessage)); |
242 return promise; | 242 return promise; |
243 } | 243 } |
244 | 244 |
245 KURL pageURL = KURL(KURL(), documentOrigin->toString()); | 245 KURL pageURL = KURL(KURL(), documentOrigin->toString()); |
246 if (!pageURL.protocolIsInHTTPFamily()) { | 246 if (!SchemeRegistry::shouldAllowServiceWorkers(pageURL)) { |
247 resolver->reject(DOMException::create(SecurityError, "Failed to get Serv
iceWorkerRegistration objects: The URL protocol of the current origin ('" + docu
mentOrigin->toString() + "') is not supported.")); | 247 resolver->reject(DOMException::create(SecurityError, "Failed to get Serv
iceWorkerRegistration objects: The URL protocol of the current origin ('" + docu
mentOrigin->toString() + "') is not supported.")); |
248 return promise; | 248 return promise; |
249 } | 249 } |
250 | 250 |
251 m_provider->getRegistrations(new CallbackPromiseAdapter<ServiceWorkerRegistr
ationArray, ServiceWorkerError>(resolver)); | 251 m_provider->getRegistrations(new CallbackPromiseAdapter<ServiceWorkerRegistr
ationArray, ServiceWorkerError>(resolver)); |
252 | 252 |
253 return promise; | 253 return promise; |
254 } | 254 } |
255 | 255 |
256 ServiceWorkerContainer::ReadyProperty* ServiceWorkerContainer::createReadyProper
ty() | 256 ServiceWorkerContainer::ReadyProperty* ServiceWorkerContainer::createReadyProper
ty() |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 return; | 322 return; |
323 | 323 |
324 if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::fro
m(executionContext)) { | 324 if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::fro
m(executionContext)) { |
325 m_provider = client->provider(); | 325 m_provider = client->provider(); |
326 if (m_provider) | 326 if (m_provider) |
327 m_provider->setClient(this); | 327 m_provider->setClient(this); |
328 } | 328 } |
329 } | 329 } |
330 | 330 |
331 } // namespace blink | 331 } // namespace blink |
OLD | NEW |