Index: Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
diff --git a/Source/modules/serviceworkers/NavigatorServiceWorker.cpp b/Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
index 172589dabc8495c7d21d80b0122b92f60e03ac66..5cd299c96fdaead7c6a323c9d4013e2f62873089 100644 |
--- a/Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
+++ b/Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
@@ -41,10 +41,12 @@ |
#include "core/workers/SharedWorker.h" |
#include "modules/serviceworkers/CallbackPromiseAdapter.h" |
#include "modules/serviceworkers/ServiceWorker.h" |
-#include "public/platform/WebServiceWorkerRegistry.h" |
+#include "public/platform/WebServiceWorkerProvider.h" |
#include "public/platform/WebString.h" |
#include "public/platform/WebURL.h" |
+using WebKit::WebServiceWorkerProvider; |
+ |
namespace WebCore { |
NavigatorServiceWorker::NavigatorServiceWorker(Navigator* navigator) |
@@ -61,6 +63,15 @@ const char* NavigatorServiceWorker::supplementName() |
return "NavigatorServiceWorker"; |
} |
+WebServiceWorkerProvider* NavigatorServiceWorker::serviceWorkerProvider() |
+{ |
+ if (!m_provider) { |
+ FrameLoaderClient* client = m_navigator->frame()->loader()->client(); |
+ m_provider = adoptPtr(client->createServiceWorkerProvider(this)); |
+ } |
+ return m_provider.get(); |
+} |
+ |
NavigatorServiceWorker* NavigatorServiceWorker::from(Navigator* navigator) |
{ |
NavigatorServiceWorker* supplement = toNavigatorServiceWorker(navigator); |
@@ -80,14 +91,13 @@ ScriptPromise NavigatorServiceWorker::registerServiceWorker(ScriptExecutionConte |
ScriptPromise NavigatorServiceWorker::registerServiceWorker(ScriptExecutionContext* scriptExecutionContext, const String& pattern, const String& scriptSrc, ExceptionState& es) |
{ |
ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); |
- FrameLoaderClient* client = m_navigator->frame()->loader()->client(); |
// WTF? Surely there's a better way to resolve a url? |
KURL scriptUrl = m_navigator->frame()->document()->completeURL(scriptSrc); |
- WebKit::WebServiceWorkerRegistry* peer = client->serviceWorkerRegistry(); |
RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptExecutionContext); |
- if (peer) |
- peer->registerServiceWorker(pattern, scriptUrl, new CallbackPromiseAdapter(resolver, scriptExecutionContext)); |
+ WebKit::WebServiceWorkerProvider* provider = serviceWorkerProvider(); |
+ if (provider) |
+ provider->registerServiceWorker(pattern, scriptUrl, new CallbackPromiseAdapter(resolver, scriptExecutionContext)); |
else |
resolver->reject(PassRefPtr<ServiceWorker>(0)); |
// call here? |
@@ -103,10 +113,10 @@ ScriptPromise NavigatorServiceWorker::unregisterServiceWorker(ScriptExecutionCon |
{ |
ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); |
FrameLoaderClient* client = m_navigator->frame()->loader()->client(); |
- WebKit::WebServiceWorkerRegistry* peer = client->serviceWorkerRegistry(); |
+ WebKit::WebServiceWorkerProvider* provider = serviceWorkerProvider(); |
RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptExecutionContext); |
- if (peer) |
- peer->unregisterServiceWorker(pattern, new CallbackPromiseAdapter(resolver, scriptExecutionContext)); |
+ if (provider) |
+ provider->unregisterServiceWorker(pattern, new CallbackPromiseAdapter(resolver, scriptExecutionContext)); |
else |
resolver->reject(PassRefPtr<ServiceWorker>(0)); |
return resolver->promise(); |