Index: Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
diff --git a/Source/modules/serviceworkers/NavigatorServiceWorker.cpp b/Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
index 57ef2a1511c27e672f5c163ede7eaf9076194398..7591f3bd345e56fb0ebee3f2e3d8d2ca4d0f6d61 100644 |
--- a/Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
+++ b/Source/modules/serviceworkers/NavigatorServiceWorker.cpp |
@@ -5,6 +5,7 @@ |
#include "config.h" |
#include "modules/serviceworkers/NavigatorServiceWorker.h" |
+#include "core/dom/Document.h" |
#include "core/frame/DOMWindow.h" |
#include "core/frame/LocalFrame.h" |
#include "core/frame/Navigator.h" |
@@ -21,12 +22,22 @@ NavigatorServiceWorker::~NavigatorServiceWorker() |
{ |
} |
+NavigatorServiceWorker* NavigatorServiceWorker::from(Document& document) |
+{ |
+ if (!document.frame() || !document.frame()->domWindow()) |
+ return 0; |
+ Navigator& navigator = document.frame()->domWindow()->navigator(); |
+ return &from(navigator); |
+} |
+ |
NavigatorServiceWorker& NavigatorServiceWorker::from(Navigator& navigator) |
{ |
NavigatorServiceWorker* supplement = toNavigatorServiceWorker(navigator); |
if (!supplement) { |
supplement = new NavigatorServiceWorker(navigator); |
provideTo(navigator, supplementName(), adoptPtrWillBeNoop(supplement)); |
+ // Initialize ServiceWorkerContainer too. |
+ supplement->serviceWorker(); |
} |
return *supplement; |
} |