WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
patch (text/plain), 57.14 KB, created by
Brady Eidson
on 2017-08-09 20:18:23 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Brady Eidson
Created:
2017-08-09 20:18:23 PDT
Size:
57.14 KB
patch
obsolete
>diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 64a1d6f4357..085b2c36c6b 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,19 @@ >+2017-08-09 Brady Eidson <beidson@apple.com> >+ >+ Add ServiceWorkerJob. >+ https://bugs.webkit.org/show_bug.cgi?id=175241 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Verifies that the "serviceWorker.register()" job we currently schedule fails as expected. >+ >+ * http/tests/workers/service/basic-register-expected.txt: Added. >+ * http/tests/workers/service/basic-register.html: Added. >+ * http/tests/workers/service/resources/basic-register.js: Added. >+ * http/tests/workers/service/resources/empty-worker.js: Added. >+ * platform/mac-wk1/TestExpectations: >+ * platform/win/TestExpectations: >+ > 2017-08-09 Chris Dumez <cdumez@apple.com> > > [Beacon][NetworkSession] Support CORS-preflighting on redirects >diff --git a/LayoutTests/http/tests/workers/service/basic-register-expected.txt b/LayoutTests/http/tests/workers/service/basic-register-expected.txt >new file mode 100644 >index 00000000000..c018e45e5d1 >--- /dev/null >+++ b/LayoutTests/http/tests/workers/service/basic-register-expected.txt >@@ -0,0 +1,2 @@ >+CONSOLE MESSAGE: line 11: Registration failed with error: UnknownError: serviceWorker job scheduling is not yet implemented >+ >diff --git a/LayoutTests/http/tests/workers/service/basic-register.html b/LayoutTests/http/tests/workers/service/basic-register.html >new file mode 100644 >index 00000000000..19ae5ddf189 >--- /dev/null >+++ b/LayoutTests/http/tests/workers/service/basic-register.html >@@ -0,0 +1,9 @@ >+<html> >+<head> >+<script src="../../resources/js-test-pre.js"></script> >+</head> >+<body> >+ >+<script src="resources/basic-register.js"></script> >+</body> >+</html> >diff --git a/LayoutTests/http/tests/workers/service/resources/basic-register.js b/LayoutTests/http/tests/workers/service/resources/basic-register.js >new file mode 100644 >index 00000000000..f2d9775acc7 >--- /dev/null >+++ b/LayoutTests/http/tests/workers/service/resources/basic-register.js >@@ -0,0 +1,17 @@ >+function done() >+{ >+ finishJSTest(); >+} >+ >+navigator.serviceWorker.register("resources/empty-worker.js", { }) >+.then(function(r) { >+ console.log("Registered!"); >+ done(); >+}, function(e) { >+ console.log("Registration failed with error: " + e); >+ done(); >+}) >+.catch(function(e) { >+ console.log("Exception registering: " + e); >+ done(); >+}); >diff --git a/LayoutTests/http/tests/workers/service/resources/empty-worker.js b/LayoutTests/http/tests/workers/service/resources/empty-worker.js >new file mode 100644 >index 00000000000..459fcc20a94 >--- /dev/null >+++ b/LayoutTests/http/tests/workers/service/resources/empty-worker.js >@@ -0,0 +1 @@ >+// This script intentionally left blank. >diff --git a/LayoutTests/platform/mac-wk1/TestExpectations b/LayoutTests/platform/mac-wk1/TestExpectations >index 239036e551c..ecf304439b1 100644 >--- a/LayoutTests/platform/mac-wk1/TestExpectations >+++ b/LayoutTests/platform/mac-wk1/TestExpectations >@@ -387,3 +387,5 @@ webkit.org/b/173432 [ Debug ] imported/w3c/web-platform-tests/fetch/nosniff/impo > > # requires wk2 speculative tiling > fast/images/low-memory-decode.html [ Skip ] >+ >+http/tests/workers/service [ Skip ] >diff --git a/LayoutTests/platform/win/TestExpectations b/LayoutTests/platform/win/TestExpectations >index 1120c807b43..eb067cee613 100644 >--- a/LayoutTests/platform/win/TestExpectations >+++ b/LayoutTests/platform/win/TestExpectations >@@ -4069,3 +4069,4 @@ imported/w3c/web-platform-tests/cors/simple-requests.htm [ Slow ] > imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.html [ Slow ] > imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.html [ Slow ] > >+http/tests/workers/service [ Skip ] >diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt >index e1ad58e3ecf..6e47be856f3 100644 >--- a/Source/WebCore/CMakeLists.txt >+++ b/Source/WebCore/CMakeLists.txt >@@ -2981,7 +2981,10 @@ set(WebCore_SOURCES > workers/ServiceWorker.cpp > workers/ServiceWorkerContainer.cpp > workers/ServiceWorkerGlobalScope.cpp >+ workers/ServiceWorkerJob.cpp >+ workers/ServiceWorkerProvider.cpp > workers/ServiceWorkerRegistration.cpp >+ workers/ServiceWorkerRegistrationParameters.cpp > workers/Worker.cpp > workers/WorkerConsoleClient.cpp > workers/WorkerEventQueue.cpp >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 130e4f0ff2d..743d3300ae8 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,53 @@ >+2017-08-09 Brady Eidson <beidson@apple.com> >+ >+ Add ServiceWorkerJob. >+ https://bugs.webkit.org/show_bug.cgi?id=175241 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Test: http/tests/workers/service/basic-register.html >+ >+ This patch does a few things: >+ - Adds the spec concept of a ServiceWorkerJob (in the WebProcess, at least) >+ - Adds a ServiceWorkerProvider interface for WebKit to implement >+ - Actually creates a job for service worker registration and "schedules" it, >+ though it always immediately errors out the promise. >+ >+ Actually queuing jobs and executing asynchronously is coming up soon. >+ >+ * CMakeLists.txt: >+ * WebCore.xcodeproj/project.pbxproj: >+ >+ * dom/Document.cpp: >+ (WebCore::Document::sessionID const): >+ * dom/Document.h: >+ >+ * workers/ServiceWorkerContainer.cpp: >+ (WebCore::ServiceWorkerContainer::~ServiceWorkerContainer): >+ (WebCore::ServiceWorkerContainer::addRegistration): >+ (WebCore::ServiceWorkerContainer::scheduleJob): >+ (WebCore::ServiceWorkerContainer::jobDidFinish): >+ * workers/ServiceWorkerContainer.h: >+ >+ * workers/ServiceWorkerJob.cpp: Added. >+ (WebCore::ServiceWorkerJob::ServiceWorkerJob): >+ (WebCore::ServiceWorkerJob::~ServiceWorkerJob): >+ (WebCore::ServiceWorkerJob::failedWithException): >+ * workers/ServiceWorkerJob.h: Copied from Source/WebCore/workers/ServiceWorkerContainer.h. >+ (WebCore::ServiceWorkerJob::createRegisterJob): >+ (WebCore::ServiceWorkerJob::identifier const): >+ >+ * workers/ServiceWorkerJobClient.h: Added. >+ (WebCore::ServiceWorkerJobClient::~ServiceWorkerJobClient): >+ >+ * workers/ServiceWorkerProvider.cpp: Added. >+ (WebCore::ServiceWorkerProvider::singleton): >+ (WebCore::ServiceWorkerProvider::setSharedProvider): >+ * workers/ServiceWorkerProvider.h: Added. >+ * workers/ServiceWorkerRegistrationOptions.h: Copied from Source/WebCore/workers/ServiceWorkerContainer.h. >+ * workers/ServiceWorkerRegistrationParameters.cpp: Added. >+ * workers/ServiceWorkerRegistrationParameters.h: Added. >+ > 2017-08-09 Don Olmstead <don.olmstead@sony.com> > > [WTF] Move TextStream into WTF >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index b8dde40f7ab..f1100f919c9 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -2178,6 +2178,13 @@ > 510D4A37103165EE0049EA54 /* SocketStreamHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A31103165EE0049EA54 /* SocketStreamHandle.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 5110FCFC1E03641D006F8D0B /* IDBCursorRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 5110FCFB1E0362A5006F8D0B /* IDBCursorRecord.h */; }; >+ 511CA6791F3904B10019E074 /* ServiceWorkerProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511CA6771F3904AA0019E074 /* ServiceWorkerProvider.cpp */; }; >+ 511CA67A1F3904B10019E074 /* ServiceWorkerProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 511CA6781F3904AA0019E074 /* ServiceWorkerProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 511CA67D1F3905A60019E074 /* ServiceWorkerJob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511CA67C1F3905710019E074 /* ServiceWorkerJob.cpp */; }; >+ 511CA67E1F3905A60019E074 /* ServiceWorkerJob.h in Headers */ = {isa = PBXBuildFile; fileRef = 511CA67B1F3905710019E074 /* ServiceWorkerJob.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 511CA6801F39331F0019E074 /* ServiceWorkerJobClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 511CA67F1F39331B0019E074 /* ServiceWorkerJobClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 511CA6831F3A3CD90019E074 /* ServiceWorkerRegistrationParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511CA6821F3A3CD50019E074 /* ServiceWorkerRegistrationParameters.cpp */; }; >+ 511CA6841F3A3CD90019E074 /* ServiceWorkerRegistrationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 511CA6811F3A3CD50019E074 /* ServiceWorkerRegistrationParameters.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 511EC1271C50AACA0032F983 /* IDBSerialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511EC1251C50AA570032F983 /* IDBSerialization.cpp */; }; > 511EC1281C50AACA0032F983 /* IDBSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 511EC1261C50AA570032F983 /* IDBSerialization.h */; }; > 511EC12B1C50ABBF0032F983 /* SQLiteIDBTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511EC1291C50ABBA0032F983 /* SQLiteIDBTransaction.cpp */; }; >@@ -2322,7 +2329,7 @@ > 5182C23E1F313A090059BA7C /* ServiceWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5182C23C1F3139FC0059BA7C /* ServiceWorker.cpp */; }; > 5182C23F1F313A090059BA7C /* ServiceWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 5182C23B1F3139FC0059BA7C /* ServiceWorker.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 5182C2401F313A090059BA7C /* ServiceWorkerContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5182C2381F3139FC0059BA7C /* ServiceWorkerContainer.cpp */; }; >- 5182C2411F313A090059BA7C /* ServiceWorkerContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5182C2331F3139FC0059BA7C /* ServiceWorkerContainer.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 5182C2411F313A090059BA7C /* ServiceWorkerContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5182C2331F3139FC0059BA7C /* ServiceWorkerContainer.h */; }; > 5182C2421F313A090059BA7C /* ServiceWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5182C2361F3139FC0059BA7C /* ServiceWorkerGlobalScope.cpp */; }; > 5182C2431F313A090059BA7C /* ServiceWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 5182C23A1F3139FC0059BA7C /* ServiceWorkerGlobalScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 5182C2441F313A090059BA7C /* ServiceWorkerRegistration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5182C2341F3139FC0059BA7C /* ServiceWorkerRegistration.cpp */; }; >@@ -2427,6 +2434,7 @@ > 51BA4ACB1BBC5BD900DF3D6D /* MemoryIDBBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BA4AC91BBC5B9E00DF3D6D /* MemoryIDBBackingStore.h */; }; > 51BA4ACC1BBC5BDD00DF3D6D /* IDBBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BA4AC71BBC5AD600DF3D6D /* IDBBackingStore.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 51BE37E00DAEE00E001085FC /* StorageArea.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BE37DE0DAEE00E001085FC /* StorageArea.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 51BEB6391F3B94B0005029B9 /* ServiceWorkerRegistrationOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BEB6381F3B94AB005029B9 /* ServiceWorkerRegistrationOptions.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 51C0AA390F2AA10A001648C2 /* CachedFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C0AA380F2AA10A001648C2 /* CachedFrame.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 51C0AA410F2AA15E001648C2 /* CachedFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */; }; > 51C61B0A1DE536E7008A212D /* ScrollingMomentumCalculator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C61B081DE536E7008A212D /* ScrollingMomentumCalculator.cpp */; }; >@@ -9922,6 +9930,13 @@ > 510D4A31103165EE0049EA54 /* SocketStreamHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandle.h; sourceTree = "<group>"; }; > 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandleClient.h; sourceTree = "<group>"; }; > 5110FCFB1E0362A5006F8D0B /* IDBCursorRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCursorRecord.h; sourceTree = "<group>"; }; >+ 511CA6771F3904AA0019E074 /* ServiceWorkerProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerProvider.cpp; sourceTree = "<group>"; }; >+ 511CA6781F3904AA0019E074 /* ServiceWorkerProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerProvider.h; sourceTree = "<group>"; }; >+ 511CA67B1F3905710019E074 /* ServiceWorkerJob.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerJob.h; sourceTree = "<group>"; }; >+ 511CA67C1F3905710019E074 /* ServiceWorkerJob.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerJob.cpp; sourceTree = "<group>"; }; >+ 511CA67F1F39331B0019E074 /* ServiceWorkerJobClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerJobClient.h; sourceTree = "<group>"; }; >+ 511CA6811F3A3CD50019E074 /* ServiceWorkerRegistrationParameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerRegistrationParameters.h; sourceTree = "<group>"; }; >+ 511CA6821F3A3CD50019E074 /* ServiceWorkerRegistrationParameters.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerRegistrationParameters.cpp; sourceTree = "<group>"; }; > 511EC1251C50AA570032F983 /* IDBSerialization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBSerialization.cpp; sourceTree = "<group>"; }; > 511EC1261C50AA570032F983 /* IDBSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBSerialization.h; sourceTree = "<group>"; }; > 511EC1291C50ABBA0032F983 /* SQLiteIDBTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SQLiteIDBTransaction.cpp; sourceTree = "<group>"; }; >@@ -10172,6 +10187,7 @@ > 51BA4AC81BBC5B9E00DF3D6D /* MemoryIDBBackingStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryIDBBackingStore.cpp; sourceTree = "<group>"; }; > 51BA4AC91BBC5B9E00DF3D6D /* MemoryIDBBackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryIDBBackingStore.h; sourceTree = "<group>"; }; > 51BE37DE0DAEE00E001085FC /* StorageArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageArea.h; sourceTree = "<group>"; }; >+ 51BEB6381F3B94AB005029B9 /* ServiceWorkerRegistrationOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerRegistrationOptions.h; sourceTree = "<group>"; }; > 51C0AA380F2AA10A001648C2 /* CachedFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFrame.h; sourceTree = "<group>"; }; > 51C0AA400F2AA15E001648C2 /* CachedFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedFrame.cpp; sourceTree = "<group>"; }; > 51C61B081DE536E7008A212D /* ScrollingMomentumCalculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingMomentumCalculator.cpp; sourceTree = "<group>"; }; >@@ -17564,9 +17580,17 @@ > 5182C2361F3139FC0059BA7C /* ServiceWorkerGlobalScope.cpp */, > 5182C23A1F3139FC0059BA7C /* ServiceWorkerGlobalScope.h */, > 5182C2391F3139FC0059BA7C /* ServiceWorkerGlobalScope.idl */, >+ 511CA67C1F3905710019E074 /* ServiceWorkerJob.cpp */, >+ 511CA67B1F3905710019E074 /* ServiceWorkerJob.h */, >+ 511CA67F1F39331B0019E074 /* ServiceWorkerJobClient.h */, >+ 511CA6771F3904AA0019E074 /* ServiceWorkerProvider.cpp */, >+ 511CA6781F3904AA0019E074 /* ServiceWorkerProvider.h */, > 5182C2341F3139FC0059BA7C /* ServiceWorkerRegistration.cpp */, > 5182C2371F3139FC0059BA7C /* ServiceWorkerRegistration.h */, > 5182C2321F3139FC0059BA7C /* ServiceWorkerRegistration.idl */, >+ 51BEB6381F3B94AB005029B9 /* ServiceWorkerRegistrationOptions.h */, >+ 511CA6821F3A3CD50019E074 /* ServiceWorkerRegistrationParameters.cpp */, >+ 511CA6811F3A3CD50019E074 /* ServiceWorkerRegistrationParameters.h */, > 51F174FD1F35898800C74950 /* ServiceWorkerUpdateViaCache.h */, > 51F174FB1F3588D700C74950 /* ServiceWorkerUpdateViaCache.idl */, > 2E4346330F546A8200B0F1BA /* Worker.cpp */, >@@ -26845,6 +26869,7 @@ > A584FE2C1863870F00843B10 /* CommandLineAPIModule.h in Headers */, > A584FE2618637DAB00843B10 /* CommandLineAPIModuleSource.h in Headers */, > 6550B6A2099DF0270090D781 /* Comment.h in Headers */, >+ 511CA67E1F3905A60019E074 /* ServiceWorkerJob.h in Headers */, > 57E664FC1E73703300765536 /* CommonCryptoDERUtilities.h in Headers */, > E1FE137518402A6700892F13 /* CommonCryptoUtilities.h in Headers */, > 0F60F32B1DFBB10700416D6C /* CommonVM.h in Headers */, >@@ -27565,6 +27590,7 @@ > 93F198E508245E59001E9ABC /* HTMLDocument.h in Headers */, > 977B3867122883E900B81FF8 /* HTMLDocumentParser.h in Headers */, > 93F198E608245E59001E9ABC /* HTMLElement.h in Headers */, >+ 51BEB6391F3B94B0005029B9 /* ServiceWorkerRegistrationOptions.h in Headers */, > A17C81230F2A5CF7005DAAEB /* HTMLElementFactory.h in Headers */, > 977B37241228721700B81FF8 /* HTMLElementStack.h in Headers */, > B562DB6017D3CD630010AF96 /* HTMLElementTypeHelpers.h in Headers */, >@@ -28826,6 +28852,7 @@ > 07EE76EC1BE96DB000F89133 /* MockRealtimeVideoSource.h in Headers */, > 07EE76EF1BEA619800F89133 /* MockRealtimeVideoSourceMac.h in Headers */, > CDF2B0171820540700F2B424 /* MockSourceBufferPrivate.h in Headers */, >+ 511CA6801F39331F0019E074 /* ServiceWorkerJobClient.h in Headers */, > CDF2B0191820540700F2B424 /* MockTracks.h in Headers */, > C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */, > 709A01FE1E3D0BDD006B0D4C /* ModuleFetchFailureKind.h in Headers */, >@@ -29153,6 +29180,7 @@ > 07C1C0E51BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h in Headers */, > 41103AAC1E39791000769F03 /* RealtimeOutgoingAudioSource.h in Headers */, > BC4368E80C226E32005EFB5F /* Rect.h in Headers */, >+ 511CA6841F3A3CD90019E074 /* ServiceWorkerRegistrationParameters.h in Headers */, > FD45A958175D414C00C21EC8 /* RectangleShape.h in Headers */, > 9831AE4A154225C900FE2644 /* ReferrerPolicy.h in Headers */, > BCAB418213E356E800D8AAF3 /* Region.h in Headers */, >@@ -29831,6 +29859,7 @@ > 83C1D42F178D5AB500141E68 /* SVGPathSegLinetoAbs.h in Headers */, > B2227A780D00BF220071B782 /* SVGPathSegLinetoHorizontal.h in Headers */, > 83C1D430178D5AB500141E68 /* SVGPathSegLinetoHorizontalAbs.h in Headers */, >+ 511CA67A1F3904B10019E074 /* ServiceWorkerProvider.h in Headers */, > 83C1D431178D5AB500141E68 /* SVGPathSegLinetoHorizontalRel.h in Headers */, > 83C1D432178D5AB500141E68 /* SVGPathSegLinetoRel.h in Headers */, > B2227A7D0D00BF220071B782 /* SVGPathSegLinetoVertical.h in Headers */, >@@ -31548,6 +31577,7 @@ > 51741D120B07259A00ED442C /* HistoryItem.cpp in Sources */, > 5160F4980B0AA75F00C1D2AF /* HistoryItemMac.mm in Sources */, > 4969B0F213D0B33F00DF3521 /* HitTestingTransformState.cpp in Sources */, >+ 511CA6831F3A3CD90019E074 /* ServiceWorkerRegistrationParameters.cpp in Sources */, > 2D8287F616E4A0380086BD00 /* HitTestLocation.cpp in Sources */, > 9307F1D70AF2D59000DBA31A /* HitTestResult.cpp in Sources */, > FD31609812B026F700C1A359 /* HRTFDatabase.cpp in Sources */, >@@ -32612,6 +32642,7 @@ > E1C8BE5D0E8BD15A0064CB7D /* JSWorker.cpp in Sources */, > E182568F0EF2B02D00933242 /* JSWorkerGlobalScope.cpp in Sources */, > E1C36D340EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp in Sources */, >+ 511CA6791F3904B10019E074 /* ServiceWorkerProvider.cpp in Sources */, > E18258AC0EF3CD7000933242 /* JSWorkerGlobalScopeCustom.cpp in Sources */, > E1C362F00EAF2AA9007410BC /* JSWorkerLocation.cpp in Sources */, > E1271A590EEECDE400F61213 /* JSWorkerNavigator.cpp in Sources */, >@@ -33157,6 +33188,7 @@ > A8DF4AE80980C42C0052981B /* RenderTableCol.cpp in Sources */, > A8DF4AF00980C42C0052981B /* RenderTableRow.cpp in Sources */, > A8DF4AED0980C42C0052981B /* RenderTableSection.cpp in Sources */, >+ 511CA67D1F3905A60019E074 /* ServiceWorkerJob.cpp in Sources */, > BCEA488B097D93020094C9E4 /* RenderText.cpp in Sources */, > AB67D1A8097F3AE300F9392E /* RenderTextControl.cpp in Sources */, > 083DAEA60F01A7FB00342754 /* RenderTextControlMultiLine.cpp in Sources */, >diff --git a/Source/WebCore/dom/Document.cpp b/Source/WebCore/dom/Document.cpp >index 5309324e46a..bccd26109fd 100644 >--- a/Source/WebCore/dom/Document.cpp >+++ b/Source/WebCore/dom/Document.cpp >@@ -4688,8 +4688,13 @@ URL Document::completeURL(const String& url) const > > SessionID Document::sessionID() const > { >- auto* page = this->page(); >- return page ? page->sessionID() : SessionID(); >+ if (m_sessionID.isValid()) >+ return m_sessionID; >+ >+ if (auto* page = this->page()) >+ m_sessionID = page->sessionID(); >+ >+ return m_sessionID; > } > > void Document::setPageCacheState(PageCacheState state) >diff --git a/Source/WebCore/dom/Document.h b/Source/WebCore/dom/Document.h >index d75ca05a98a..dc7e88888bd 100644 >--- a/Source/WebCore/dom/Document.h >+++ b/Source/WebCore/dom/Document.h >@@ -45,6 +45,7 @@ > #include "Region.h" > #include "RenderPtr.h" > #include "ScriptExecutionContext.h" >+#include "SessionID.h" > #include "StringWithDirection.h" > #include "Supplementable.h" > #include "TextResourceDecoder.h" >@@ -1820,6 +1821,7 @@ private: > #endif > > OrientationNotifier m_orientationNotifier; >+ mutable SessionID m_sessionID; > > static bool hasEverCreatedAnAXObjectCache; > }; >diff --git a/Source/WebCore/workers/ServiceWorkerContainer.cpp b/Source/WebCore/workers/ServiceWorkerContainer.cpp >index 3522af97dfc..d7f3a5d1a45 100644 >--- a/Source/WebCore/workers/ServiceWorkerContainer.cpp >+++ b/Source/WebCore/workers/ServiceWorkerContainer.cpp >@@ -32,6 +32,10 @@ > #include "JSDOMPromiseDeferred.h" > #include "NavigatorBase.h" > #include "ScriptExecutionContext.h" >+#include "SecurityOrigin.h" >+#include "ServiceWorkerJob.h" >+#include "ServiceWorkerProvider.h" >+#include "ServiceWorkerRegistrationParameters.h" > #include "URL.h" > #include <wtf/RunLoop.h> > >@@ -46,6 +50,13 @@ ServiceWorkerContainer::ServiceWorkerContainer(ScriptExecutionContext& context, > m_readyPromise.reject(Exception { UnknownError, ASCIILiteral("serviceWorker.ready() is not yet implemented") }); > } > >+ServiceWorkerContainer::~ServiceWorkerContainer() >+{ >+#ifndef NDEBUG >+ ASSERT(m_creationThread == currentThread()); >+#endif >+} >+ > void ServiceWorkerContainer::refEventTarget() > { > m_navigator.ref(); >@@ -64,7 +75,7 @@ ServiceWorker* ServiceWorkerContainer::controller() const > void ServiceWorkerContainer::addRegistration(const String& relativeScriptURL, const RegistrationOptions& options, Ref<DeferredPromise>&& promise) > { > auto* context = scriptExecutionContext(); >- if (!context) { >+ if (!context || !context->sessionID().isValid()) { > ASSERT_NOT_REACHED(); > return; > } >@@ -74,31 +85,44 @@ void ServiceWorkerContainer::addRegistration(const String& relativeScriptURL, co > return; > } > >- auto scriptURL = context->completeURL(relativeScriptURL); >- if (!scriptURL.isValid()) { >+ ServiceWorkerRegistrationParameters parameters; >+ parameters.scriptURL = context->completeURL(relativeScriptURL); >+ if (!parameters.scriptURL.isValid()) { > promise->reject(Exception { TypeError, ASCIILiteral("serviceWorker.register() must be called with a valid relative script URL") }); > return; > } > > // FIXME: The spec disallows scripts outside of HTTP(S), but we'll likely support app custom URL schemes in WebKit. >- if (!scriptURL.protocolIsInHTTPFamily()) { >+ if (!parameters.scriptURL.protocolIsInHTTPFamily()) { > promise->reject(Exception { TypeError, ASCIILiteral("serviceWorker.register() must be called with a script URL whose protocol is either HTTP or HTTPS") }); > return; > } > >- String path = scriptURL.path(); >+ String path = parameters.scriptURL.path(); > if (path.containsIgnoringASCIICase("%2f") || path.containsIgnoringASCIICase("%5c")) { > promise->reject(Exception { TypeError, ASCIILiteral("serviceWorker.register() must be called with a script URL whose path does not contain '%%2f' or '%%5c'") }); > return; > } > > String scope = options.scope.isEmpty() ? ASCIILiteral("./") : options.scope; >- auto scopeURL = context->completeURL(scope); >+ if (!scope.isEmpty()) >+ parameters.scopeURL = context->completeURL(scope); >+ >+ parameters.sessionID = context->sessionID(); >+ parameters.clientCreationURL = context->url(); >+ parameters.topOrigin = SecurityOriginData::fromSecurityOrigin(context->topOrigin()); >+ parameters.options = options; >+ >+ scheduleJob(ServiceWorkerJob::createRegisterJob(*this, WTFMove(promise), WTFMove(parameters))); >+} > >- // FIXME: At this point, create a Register job and add it to the job queue >- UNUSED_PARAM(scopeURL); >+void ServiceWorkerContainer::scheduleJob(Ref<ServiceWorkerJob>&& job) >+{ >+ ServiceWorkerJob& rawJob = job.get(); >+ auto result = m_jobMap.add(rawJob.identifier(), WTFMove(job)); >+ ASSERT_UNUSED(result, result.isNewEntry); > >- promise->reject(Exception { UnknownError, ASCIILiteral("serviceWorker.register() is not yet implemented") }); >+ ServiceWorkerProvider::singleton().scheduleJob(rawJob); > } > > void ServiceWorkerContainer::getRegistration(const String&, Ref<DeferredPromise>&& promise) >@@ -115,6 +139,12 @@ void ServiceWorkerContainer::startMessages() > { > } > >+void ServiceWorkerContainer::jobDidFinish(ServiceWorkerJob& job) >+{ >+ auto taken = m_jobMap.take(job.identifier()); >+ ASSERT_UNUSED(taken, taken.get() == &job); >+} >+ > const char* ServiceWorkerContainer::activeDOMObjectName() const > { > return "ServiceWorkerContainer"; >diff --git a/Source/WebCore/workers/ServiceWorkerContainer.h b/Source/WebCore/workers/ServiceWorkerContainer.h >index 38539ee280f..102c2fcffc3 100644 >--- a/Source/WebCore/workers/ServiceWorkerContainer.h >+++ b/Source/WebCore/workers/ServiceWorkerContainer.h >@@ -30,7 +30,11 @@ > #include "ActiveDOMObject.h" > #include "DOMPromiseProxy.h" > #include "EventTarget.h" >+#include "ServiceWorkerJobClient.h" > #include "ServiceWorkerRegistration.h" >+#include "ServiceWorkerRegistrationOptions.h" >+#include "SessionID.h" >+#include <wtf/Threading.h> > > namespace WebCore { > >@@ -41,16 +45,12 @@ class ServiceWorker; > enum class ServiceWorkerUpdateViaCache; > enum class WorkerType; > >-class ServiceWorkerContainer final : public EventTargetWithInlineData, public ActiveDOMObject { >+class ServiceWorkerContainer final : public EventTargetWithInlineData, public ActiveDOMObject, public ServiceWorkerJobClient { > public: > ServiceWorkerContainer(ScriptExecutionContext&, NavigatorBase&); >- virtual ~ServiceWorkerContainer() = default; >+ ~ServiceWorkerContainer(); > >- struct RegistrationOptions { >- String scope; >- WorkerType type; >- ServiceWorkerUpdateViaCache updateViaCache; >- }; >+ typedef WebCore::RegistrationOptions RegistrationOptions; > > ServiceWorker* controller() const; > >@@ -63,7 +63,13 @@ public: > > void startMessages(); > >+ void ref() final { refEventTarget(); } >+ void deref() final { derefEventTarget(); } >+ > private: >+ void scheduleJob(Ref<ServiceWorkerJob>&&); >+ void jobDidFinish(ServiceWorkerJob&) final; >+ > const char* activeDOMObjectName() const final; > bool canSuspendForDocumentSuspension() const final; > ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); } >@@ -74,6 +80,12 @@ private: > ReadyPromise m_readyPromise; > > NavigatorBase& m_navigator; >+ >+ HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_jobMap; >+ >+#ifndef NDEBUG >+ ThreadIdentifier m_creationThread { currentThread() }; >+#endif > }; > > } // namespace WebCore >diff --git a/Source/WebCore/workers/ServiceWorkerJob.cpp b/Source/WebCore/workers/ServiceWorkerJob.cpp >new file mode 100644 >index 00000000000..33ac3347aae >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerJob.cpp >@@ -0,0 +1,67 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "ServiceWorkerJob.h" >+ >+#if ENABLE(SERVICE_WORKER) >+ >+#include "JSDOMPromiseDeferred.h" >+#include "ServiceWorkerRegistrationParameters.h" >+ >+namespace WebCore { >+ >+static std::atomic<uint64_t> currentIdentifier; >+ >+ServiceWorkerJob::ServiceWorkerJob(ServiceWorkerJobClient& client, Ref<DeferredPromise>&& promise, ServiceWorkerRegistrationParameters&& parameters) >+ : m_client(client) >+ , m_promise(WTFMove(promise)) >+ , m_identifier(++currentIdentifier) >+{ >+ m_registrationParameters = std::make_unique<ServiceWorkerRegistrationParameters>(WTFMove(parameters)); >+} >+ >+ServiceWorkerJob::~ServiceWorkerJob() >+{ >+#ifndef NDEBUG >+ ASSERT(currentThread() == m_creationThread); >+#endif >+} >+ >+void ServiceWorkerJob::failedWithException(Exception&& exception) >+{ >+#ifndef NDEBUG >+ ASSERT(currentThread() == m_creationThread); >+#endif >+ >+ ASSERT(!m_completed); >+ m_promise->reject(WTFMove(exception)); >+ m_client->jobDidFinish(*this); >+ m_completed = true; >+} >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebCore/workers/ServiceWorkerJob.h b/Source/WebCore/workers/ServiceWorkerJob.h >new file mode 100644 >index 00000000000..3ea82494a75 >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerJob.h >@@ -0,0 +1,72 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(SERVICE_WORKER) >+ >+#include "ServiceWorkerJobClient.h" >+#include <wtf/RefPtr.h> >+#include <wtf/ThreadSafeRefCounted.h> >+#include <wtf/Threading.h> >+ >+namespace WebCore { >+ >+class DeferredPromise; >+class Exception; >+struct ServiceWorkerRegistrationParameters; >+ >+class ServiceWorkerJob : public ThreadSafeRefCounted<ServiceWorkerJob> { >+public: >+ static Ref<ServiceWorkerJob> createRegisterJob(ServiceWorkerJobClient& client, Ref<DeferredPromise>&& promise, ServiceWorkerRegistrationParameters&& parameters) >+ { >+ return adoptRef(*new ServiceWorkerJob(client, WTFMove(promise), WTFMove(parameters))); >+ } >+ >+ ~ServiceWorkerJob(); >+ >+ WEBCORE_EXPORT void failedWithException(Exception&&); >+ >+ uint64_t identifier() const { return m_identifier; } >+ >+private: >+ ServiceWorkerJob(ServiceWorkerJobClient&, Ref<DeferredPromise>&&, ServiceWorkerRegistrationParameters&&); >+ >+ Ref<ServiceWorkerJobClient> m_client; >+ std::unique_ptr<ServiceWorkerRegistrationParameters> m_registrationParameters; >+ Ref<DeferredPromise> m_promise; >+ >+ bool m_completed { false }; >+ uint64_t m_identifier; >+ >+#ifndef NDEBUG >+ ThreadIdentifier m_creationThread { currentThread() }; >+#endif >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >+ >diff --git a/Source/WebCore/workers/ServiceWorkerJobClient.h b/Source/WebCore/workers/ServiceWorkerJobClient.h >new file mode 100644 >index 00000000000..239e849dd4f >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerJobClient.h >@@ -0,0 +1,46 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(SERVICE_WORKER) >+ >+namespace WebCore { >+ >+class ServiceWorkerJob; >+ >+class ServiceWorkerJobClient { >+public: >+ virtual ~ServiceWorkerJobClient() { }; >+ >+ virtual void jobDidFinish(ServiceWorkerJob&) = 0; >+ >+ virtual void ref() = 0; >+ virtual void deref() = 0; >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebCore/workers/ServiceWorkerProvider.cpp b/Source/WebCore/workers/ServiceWorkerProvider.cpp >new file mode 100644 >index 00000000000..27d247ca11d >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerProvider.cpp >@@ -0,0 +1,48 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "ServiceWorkerProvider.h" >+ >+#if ENABLE(SERVICE_WORKER) >+ >+namespace WebCore { >+ >+static ServiceWorkerProvider* sharedProvider; >+ >+ServiceWorkerProvider& ServiceWorkerProvider::singleton() >+{ >+ RELEASE_ASSERT(sharedProvider); >+ return *sharedProvider; >+} >+ >+void ServiceWorkerProvider::setSharedProvider(ServiceWorkerProvider& newProvider) >+{ >+ sharedProvider = &newProvider; >+} >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebCore/workers/ServiceWorkerProvider.h b/Source/WebCore/workers/ServiceWorkerProvider.h >new file mode 100644 >index 00000000000..ea934cae572 >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerProvider.h >@@ -0,0 +1,46 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(SERVICE_WORKER) >+ >+namespace WebCore { >+ >+class ServiceWorkerJob; >+ >+class WEBCORE_EXPORT ServiceWorkerProvider { >+public: >+ virtual ~ServiceWorkerProvider() { } >+ >+ WEBCORE_EXPORT static ServiceWorkerProvider& singleton(); >+ WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&); >+ >+ virtual void scheduleJob(ServiceWorkerJob&) = 0; >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebCore/workers/ServiceWorkerRegistrationOptions.h b/Source/WebCore/workers/ServiceWorkerRegistrationOptions.h >new file mode 100644 >index 00000000000..d4799e5871a >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerRegistrationOptions.h >@@ -0,0 +1,45 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(SERVICE_WORKER) >+ >+#include <wtf/text/WTFString.h> >+ >+namespace WebCore { >+ >+enum class ServiceWorkerUpdateViaCache; >+enum class WorkerType; >+ >+struct RegistrationOptions { >+ String scope; >+ WorkerType type; >+ ServiceWorkerUpdateViaCache updateViaCache; >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebCore/workers/ServiceWorkerRegistrationParameters.cpp b/Source/WebCore/workers/ServiceWorkerRegistrationParameters.cpp >new file mode 100644 >index 00000000000..61eb788796a >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerRegistrationParameters.cpp >@@ -0,0 +1,35 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "ServiceWorkerRegistrationParameters.h" >+ >+#if ENABLE(SERVICE_WORKER) >+ >+namespace WebCore { >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebCore/workers/ServiceWorkerRegistrationParameters.h b/Source/WebCore/workers/ServiceWorkerRegistrationParameters.h >new file mode 100644 >index 00000000000..ba7434a0e52 >--- /dev/null >+++ b/Source/WebCore/workers/ServiceWorkerRegistrationParameters.h >@@ -0,0 +1,48 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(SERVICE_WORKER) >+ >+#include "SecurityOriginData.h" >+#include "ServiceWorkerRegistrationOptions.h" >+#include "SessionID.h" >+#include "URL.h" >+ >+namespace WebCore { >+ >+struct ServiceWorkerRegistrationParameters { >+ SessionID sessionID; >+ URL scriptURL; >+ URL clientCreationURL; >+ SecurityOriginData topOrigin; >+ URL scopeURL; >+ RegistrationOptions options; >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebKit/CMakeLists.txt b/Source/WebKit/CMakeLists.txt >index 334f668b773..7e31d52b057 100644 >--- a/Source/WebKit/CMakeLists.txt >+++ b/Source/WebKit/CMakeLists.txt >@@ -522,6 +522,7 @@ set(WebKit2_SOURCES > WebProcess/Plugins/Netscape/NetscapePluginNone.cpp > WebProcess/Plugins/Netscape/NetscapePluginStream.cpp > >+ WebProcess/Storage/WebServiceWorkerProvider.cpp > WebProcess/Storage/WebToStorageProcessConnection.cpp > > WebProcess/UserContent/WebUserContentController.cpp >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 86da1c63b83..c0694cfedb3 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,22 @@ >+2017-08-09 Brady Eidson <beidson@apple.com> >+ >+ Add ServiceWorkerJob. >+ https://bugs.webkit.org/show_bug.cgi?id=175241 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * CMakeLists.txt: >+ * WebKit.xcodeproj/project.pbxproj: >+ >+ * WebProcess/Storage/WebServiceWorkerProvider.cpp: Added. >+ (WebKit::WebServiceWorkerProvider::singleton): >+ (WebKit::WebServiceWorkerProvider::WebServiceWorkerProvider): >+ (WebKit::WebServiceWorkerProvider::scheduleJob): >+ * WebProcess/Storage/WebServiceWorkerProvider.h: Added. >+ >+ * WebProcess/WebProcess.cpp: >+ (WebKit::WebProcess::initializeWebProcess): >+ > 2017-08-09 Don Olmstead <don.olmstead@sony.com> > > [WTF] Move TextStream into WTF >diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >index 4e3c234e85f..909a5ecd7d7 100644 >--- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj >+++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >@@ -1050,6 +1050,8 @@ > 51ACBBA1127A8F2C00D203B9 /* WebContextMenuProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51ACBB9F127A8F2C00D203B9 /* WebContextMenuProxyMac.mm */; }; > 51B15A8413843A3900321AD8 /* EnvironmentUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B15A8213843A3900321AD8 /* EnvironmentUtilities.cpp */; }; > 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 51BEB62B1F3A5AD7005029B9 /* WebServiceWorkerProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51BEB6291F3A5ACD005029B9 /* WebServiceWorkerProvider.cpp */; }; >+ 51BEB62C1F3A5AD7005029B9 /* WebServiceWorkerProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */; }; > 51C0C9741DDD76000032CAD3 /* IconLoadingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C0C9721DDD74F00032CAD3 /* IconLoadingDelegate.h */; }; > 51C0C9751DDD76030032CAD3 /* IconLoadingDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51C0C9731DDD74F00032CAD3 /* IconLoadingDelegate.mm */; }; > 51CD1C5D1B3493AF00142CA5 /* WKSecurityOriginRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CD1C591B3493A900142CA5 /* WKSecurityOriginRef.cpp */; }; >@@ -3321,6 +3323,8 @@ > 51ACC9351628064800342550 /* NetworkProcessMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkProcessMessages.h; sourceTree = "<group>"; }; > 51B15A8213843A3900321AD8 /* EnvironmentUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EnvironmentUtilities.cpp; path = unix/EnvironmentUtilities.cpp; sourceTree = "<group>"; }; > 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvironmentUtilities.h; path = unix/EnvironmentUtilities.h; sourceTree = "<group>"; }; >+ 51BEB6291F3A5ACD005029B9 /* WebServiceWorkerProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebServiceWorkerProvider.cpp; sourceTree = "<group>"; }; >+ 51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebServiceWorkerProvider.h; sourceTree = "<group>"; }; > 51C0C9721DDD74F00032CAD3 /* IconLoadingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconLoadingDelegate.h; sourceTree = "<group>"; }; > 51C0C9731DDD74F00032CAD3 /* IconLoadingDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IconLoadingDelegate.mm; sourceTree = "<group>"; }; > 51C0C9791DDD78540032CAD3 /* _WKLinkIconParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKLinkIconParameters.h; sourceTree = "<group>"; }; >@@ -6026,6 +6030,8 @@ > 5118E9981F295259003EF9F5 /* Storage */ = { > isa = PBXGroup; > children = ( >+ 51BEB6291F3A5ACD005029B9 /* WebServiceWorkerProvider.cpp */, >+ 51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */, > 5118E9991F295259003EF9F5 /* WebToStorageProcessConnection.cpp */, > 5118E99A1F295259003EF9F5 /* WebToStorageProcessConnection.h */, > ); >@@ -8825,6 +8831,7 @@ > BCE0E425168B7A280057E66A /* WebProcessSupplement.h in Headers */, > 1A1E093418861D3800D2DC49 /* WebProgressTrackerClient.h in Headers */, > 512F589D12A8838800629530 /* WebProtectionSpace.h in Headers */, >+ 51BEB62C1F3A5AD7005029B9 /* WebServiceWorkerProvider.h in Headers */, > 37948404150C350600E52CE9 /* WebRenderLayer.h in Headers */, > 3760881F150413E900FC82C7 /* WebRenderObject.h in Headers */, > 510AFFBA16542048001BA05E /* WebResourceLoader.h in Headers */, >@@ -10364,6 +10371,7 @@ > 2DA944A11884E4F000ED86DB /* WebIOSEventFactory.mm in Sources */, > C0337DD3127A2A0E008FF4F4 /* WebKeyboardEvent.cpp in Sources */, > 1A6280F31919982A006AD9F9 /* WebKit.m in Sources */, >+ 51BEB62B1F3A5AD7005029B9 /* WebServiceWorkerProvider.cpp in Sources */, > BC9BA5041697C45300E44616 /* WebKit2Initialize.cpp in Sources */, > 465250E61ECF52DC002025CB /* WebKit2InitializeCocoa.mm in Sources */, > 51FB08FF1639DE1A00EC324A /* WebLoaderStrategy.cpp in Sources */, >diff --git a/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp b/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp >new file mode 100644 >index 00000000000..14e7d4c5a68 >--- /dev/null >+++ b/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp >@@ -0,0 +1,57 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "WebServiceWorkerProvider.h" >+ >+#if ENABLE(SERVICE_WORKER) >+ >+#include <WebCore/Exception.h> >+#include <WebCore/ExceptionCode.h> >+#include <WebCore/ServiceWorkerJob.h> >+#include <wtf/text/WTFString.h> >+ >+using namespace WebCore; >+ >+namespace WebKit { >+ >+WebServiceWorkerProvider& WebServiceWorkerProvider::singleton() >+{ >+ static NeverDestroyed<WebServiceWorkerProvider> provider; >+ return provider; >+} >+ >+WebServiceWorkerProvider::WebServiceWorkerProvider() >+{ >+} >+ >+void WebServiceWorkerProvider::scheduleJob(ServiceWorkerJob& job) >+{ >+ job.failedWithException(Exception { UnknownError, ASCIILiteral("serviceWorker job scheduling is not yet implemented") }); >+} >+ >+} // namespace WebKit >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h b/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h >new file mode 100644 >index 00000000000..b724aafd300 >--- /dev/null >+++ b/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h >@@ -0,0 +1,49 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(SERVICE_WORKER) >+ >+#include <WebCore/ServiceWorkerProvider.h> >+#include <wtf/NeverDestroyed.h> >+ >+namespace WebKit { >+ >+class WebServiceWorkerProvider : public WebCore::ServiceWorkerProvider { >+public: >+ static WebServiceWorkerProvider& singleton(); >+ >+private: >+ friend NeverDestroyed<WebServiceWorkerProvider>; >+ WebServiceWorkerProvider(); >+ >+ void scheduleJob(WebCore::ServiceWorkerJob&) final; >+ >+}; // class WebServiceWorkerProvider >+ >+} // namespace WebKit >+ >+#endif // ENABLE(SERVICE_WORKER) >diff --git a/Source/WebKit/WebProcess/WebProcess.cpp b/Source/WebKit/WebProcess/WebProcess.cpp >index 9d16b507782..37822866a27 100644 >--- a/Source/WebKit/WebProcess/WebProcess.cpp >+++ b/Source/WebKit/WebProcess/WebProcess.cpp >@@ -63,6 +63,7 @@ > #include "WebProcessPoolMessages.h" > #include "WebProcessProxyMessages.h" > #include "WebResourceLoadStatisticsStoreMessages.h" >+#include "WebServiceWorkerProvider.h" > #include "WebSocketStream.h" > #include "WebToStorageProcessConnection.h" > #include "WebsiteData.h" >@@ -392,6 +393,10 @@ void WebProcess::initializeWebProcess(WebProcessCreationParameters&& parameters) > GamepadProvider::singleton().setSharedProvider(WebGamepadProvider::singleton()); > #endif > >+#if ENABLE(SERVICE_WORKER) >+ ServiceWorkerProvider::setSharedProvider(WebServiceWorkerProvider::singleton()); >+#endif >+ > #if ENABLE(WEBASSEMBLY) > JSC::Wasm::enableFastMemory(); > #endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
thorton
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 175241
:
317761
| 317778 |
317783
|
317822
|
317823