Chromium Code Reviews| Index: Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
| diff --git a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
| index 612d37b84959a9cb12573e8e280c148853c39798..481066d16992ba64604e2992becddde3ad7fdde8 100644 |
| --- a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
| +++ b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
| @@ -218,6 +218,36 @@ ScriptPromise ServiceWorkerContainer::getRegistration(ScriptState* scriptState, |
| return promise; |
| } |
| +ScriptPromise ServiceWorkerContainer::getRegistrations(ScriptState* scriptState) |
| +{ |
| + ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); |
|
falken
2015/05/25 00:43:02
We should not add this, since we'd like to remove
|
| + RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
| + ScriptPromise promise = resolver->promise(); |
| + |
| + if (!m_provider) { |
| + resolver->reject(DOMException::create(InvalidStateError, "Failed to get ServiceWorkerRegistration objects: The document is in an invalid state.")); |
| + return promise; |
| + } |
| + |
| + ExecutionContext* executionContext = scriptState->executionContext(); |
| + RefPtr<SecurityOrigin> documentOrigin = executionContext->securityOrigin(); |
| + String errorMessage; |
| + if (!executionContext->isPrivilegedContext(errorMessage)) { |
| + resolver->reject(DOMException::create(NotSupportedError, errorMessage)); |
| + return promise; |
| + } |
| + |
| + KURL pageURL = KURL(KURL(), documentOrigin->toString()); |
| + if (!pageURL.protocolIsInHTTPFamily()) { |
| + resolver->reject(DOMException::create(SecurityError, "Failed to get ServiceWorkerRegistration objects: The URL protocol of the current origin ('" + documentOrigin->toString() + "') is not supported.")); |
| + return promise; |
| + } |
| + |
| + m_provider->getRegistrations(new CallbackPromiseAdapter<ServiceWorkerRegistrationArray, ServiceWorkerError>(resolver)); |
| + |
| + return promise; |
| +} |
| + |
| ServiceWorkerContainer::ReadyProperty* ServiceWorkerContainer::createReadyProperty() |
| { |
| return new ReadyProperty(executionContext(), this, ReadyProperty::Ready); |