| Index: Source/modules/serviceworkers/ServiceWorkerContainer.cpp
|
| diff --git a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp
|
| index 4c7d6684f6bd67128e83460171c0d329f8915563..5b1515350dc8efd08ec7373ccc8bfa0864a47617 100644
|
| --- a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp
|
| +++ b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp
|
| @@ -124,7 +124,6 @@ DEFINE_TRACE(ServiceWorkerContainer)
|
|
|
| ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptState, const String& url, const RegistrationOptions& options)
|
| {
|
| - ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled());
|
| RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState);
|
| ScriptPromise promise = resolver->promise();
|
|
|
| @@ -187,7 +186,6 @@ ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptS
|
|
|
| ScriptPromise ServiceWorkerContainer::getRegistration(ScriptState* scriptState, const String& documentURL)
|
| {
|
| - ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled());
|
| RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState);
|
| ScriptPromise promise = resolver->promise();
|
|
|
| @@ -226,6 +224,35 @@ ScriptPromise ServiceWorkerContainer::getRegistration(ScriptState* scriptState,
|
| return promise;
|
| }
|
|
|
| +ScriptPromise ServiceWorkerContainer::getRegistrations(ScriptState* scriptState)
|
| +{
|
| + 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);
|
|
|