Changeset 220924 in webkit
- Timestamp:
- Aug 18, 2017 11:52:43 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 66 edited
- 7 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r220922 r220924 1 2017-08-18 Brady Eidson <beidson@apple.com> 2 3 Bounce ServiceWorker jobs to the Storage Process. 4 https://bugs.webkit.org/show_bug.cgi?id=175650 5 6 Reviewed by Andy Estes. 7 8 Service worker tests will always be dumpAsText and always be asynchronous. 9 10 * http/tests/workers/service/basic-register.html: 11 * http/tests/workers/service/resources/basic-register.js: 12 * http/tests/workers/service/resources/sw-test-pre.js: Added. 13 1 14 2017-08-18 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/LayoutTests/http/tests/workers/service/basic-register.html
r220539 r220924 1 1 <html> 2 2 <head> 3 <script src=" ../../resources/js-test-pre.js"></script>3 <script src="resources/sw-test-pre.js"></script> 4 4 </head> 5 5 <body> -
trunk/LayoutTests/http/tests/workers/service/resources/basic-register.js
r220539 r220924 1 1 function done() 2 2 { 3 finish JSTest();3 finishSWTest(); 4 4 } 5 5 -
trunk/LayoutTests/imported/w3c/ChangeLog
r220917 r220924 1 2017-08-18 Brady Eidson <beidson@apple.com> 2 3 Bounce ServiceWorker jobs to the Storage Process. 4 https://bugs.webkit.org/show_bug.cgi?id=175650 5 6 Reviewed by Andy Estes. 7 8 Now that the serviceWorker.register() call is asynchronous, update a whole bunch of test results. 9 10 * web-platform-tests/FileAPI/historical.https-expected.txt: 11 * web-platform-tests/background-fetch/interfaces-worker.https-expected.txt: 12 * web-platform-tests/fetch/api/policies/referrer-no-referrer-service-worker.https-expected.txt: 13 * web-platform-tests/fetch/api/policies/referrer-origin-service-worker.https-expected.txt: 14 * web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https-expected.txt: 15 * web-platform-tests/fetch/api/policies/referrer-unsafe-url-service-worker.https-expected.txt: 16 * web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https-expected.txt: 17 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https-expected.txt: 18 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-delete.https-expected.txt: 19 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-keys.https-expected.txt: 20 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt: 21 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-matchAll.https-expected.txt: 22 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https-expected.txt: 23 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-keys.https-expected.txt: 24 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-match.https-expected.txt: 25 * web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage.https-expected.txt: 26 * web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt: 27 * web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt: 28 * web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt: 29 * web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt: 30 * web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt: 31 * web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt: 32 * web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt: 33 * web-platform-tests/streams/piping/general.serviceworker.https-expected.txt: 34 * web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt: 35 * web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt: 36 * web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt: 37 * web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: 38 * web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt: 39 * web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt: 40 * web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt: 41 * web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt: 42 * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt: 43 * web-platform-tests/streams/readable-streams/default-reader.serviceworker.https-expected.txt: 44 * web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https-expected.txt: 45 * web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt: 46 * web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt: 47 * web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt: 48 * web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt: 49 * web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt: 50 * web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt: 51 1 52 2017-08-18 Youenn Fablet <youenn@apple.com> 2 53 -
trunk/LayoutTests/imported/w3c/web-platform-tests/FileAPI/historical.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 PASS "toNativeLineEndings" should not be supported -
trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 idlharness test 3 2 -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-no-referrer-service-worker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Fetch in service worker: referrer with no-referrer policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-service-worker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Fetch in service worker: referrer with no-referrer policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Fetch in service worker: referrer with origin-when-cross-origin policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-unsafe-url-service-worker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Fetch in worker: referrer with unsafe-url policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Cache.add and Cache.addAll assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-delete.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Cache.delete assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-keys.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Cache.keys assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Cache.match assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-matchAll.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Cache.matchAll assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Cache.put assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-keys.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL CacheStorage.keys assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-match.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL CacheStorage.match assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL CacheStorage assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/default-reader.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt
r220344 r220924 1 CONSOLE MESSAGE: line 153: TypeError: undefined is not an object (evaluating 'registration.unregister')2 1 3 2 FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code -
trunk/Source/WebCore/CMakeLists.txt
r220916 r220924 122 122 "${WEBCORE_DIR}/workers" 123 123 "${WEBCORE_DIR}/workers/service" 124 "${WEBCORE_DIR}/workers/service/server" 124 125 "${WEBCORE_DIR}/xml" 125 126 "${WEBCORE_DIR}/xml/parser" … … 2998 2999 workers/service/ServiceWorkerRegistrationParameters.cpp 2999 3000 3001 workers/service/server/SWServer.cpp 3002 3000 3003 xml/DOMParser.cpp 3001 3004 xml/NativeXPathNSResolver.cpp -
trunk/Source/WebCore/ChangeLog
r220922 r220924 1 2017-08-18 Brady Eidson <beidson@apple.com> 2 3 Bounce ServiceWorker jobs to the Storage Process. 4 https://bugs.webkit.org/show_bug.cgi?id=175650 5 6 Reviewed by Andy Estes. 7 8 No new tests (Covered by both changes and consistencies in existing tests) 9 10 This lays the groundwork for the SW job queue being in the StorageProcess by actually 11 setting up some objects for IPC communication and actually sending things over the wire. 12 13 The main point of IPC is the WebCore abstract base class "SWServer::Connection" 14 15 A collection of them will soon be managed by the SWServer itself in the StorageProcess. 16 17 That object will be the stand-in for IPC on both the WebProcess and StorageProcess side. 18 19 Currently, any job that we try to schedule still immediately rejects (though now it does 20 so asynchronously instead of synchronously). 21 22 * CMakeLists.txt: 23 * WebCore.xcodeproj/project.pbxproj: 24 25 * dom/ExceptionData.h: Copied from Source/WebCore/workers/service/ServiceWorkerProvider.h. 26 (WebCore::ExceptionData::toException const): 27 (WebCore::ExceptionData::encode const): 28 (WebCore::ExceptionData::decode): 29 30 * workers/service/ServiceWorkerContainer.cpp: 31 (WebCore::ServiceWorkerContainer::addRegistration): 32 (WebCore::ServiceWorkerContainer::scheduleJob): 33 * workers/service/ServiceWorkerContainer.h: 34 35 * workers/service/ServiceWorkerJob.cpp: 36 (WebCore::ServiceWorkerJob::failedWithException): 37 (WebCore::ServiceWorkerJob::data const): 38 * workers/service/ServiceWorkerJob.h: 39 40 * workers/service/ServiceWorkerJobData.h: Copied from Source/WebCore/workers/service/ServiceWorkerProvider.h. 41 (WebCore::ServiceWorkerJobData::encode const): 42 (WebCore::ServiceWorkerJobData::decode): 43 44 * workers/service/ServiceWorkerJobType.h: Copied from Source/WebCore/workers/service/ServiceWorkerProvider.h. 45 46 * workers/service/ServiceWorkerProvider.h: 47 48 * workers/service/ServiceWorkerRegistrationParameters.h: 49 50 * workers/service/server/SWServer.cpp: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp. 51 (WebCore::SWServer::Connection::scheduleJob): 52 (WebCore::SWServer::Connection::jobRejected): 53 * workers/service/server/SWServer.h: Copied from Source/WebCore/workers/service/ServiceWorkerProvider.h. 54 (WebCore::SWServer::Connection::~Connection): 55 1 56 2017-08-18 Chris Dumez <cdumez@apple.com> 2 57 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r220917 r220924 2307 2307 51771DFE1BDB485000CAE8E4 /* MemoryObjectStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51771DFC1BDB475600CAE8E4 /* MemoryObjectStore.cpp */; }; 2308 2308 51771DFF1BDB485000CAE8E4 /* MemoryObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 51771DFD1BDB475600CAE8E4 /* MemoryObjectStore.h */; }; 2309 517A52F01F47535B00DCDC0A /* SWServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A52EE1F47535900DCDC0A /* SWServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2310 517A52F11F4754E700DCDC0A /* SWServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A52EF1F47535900DCDC0A /* SWServer.cpp */; }; 2309 2311 517A63C31B74318700E7DCDC /* KeyedDecoderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */; }; 2310 2312 517A63C41B74318B00E7DCDC /* KeyedEncoderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A63C11B74317E00E7DCDC /* KeyedEncoderCF.cpp */; }; … … 2478 2480 51F1756B1F3EBC8300C74950 /* ServiceWorkerRegistrationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F175481F3EBC0C00C74950 /* ServiceWorkerRegistrationParameters.h */; }; 2479 2481 51F1756C1F3EBC8300C74950 /* ServiceWorkerUpdateViaCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F175471F3EBC0C00C74950 /* ServiceWorkerUpdateViaCache.h */; }; 2482 51F645621F45398F00B54DED /* ExceptionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645601F45398B00B54DED /* ExceptionData.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2483 51F645691F4539B900B54DED /* ServiceWorkerJobData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645661F45399F00B54DED /* ServiceWorkerJobData.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2484 51F6456A1F4539C000B54DED /* ServiceWorkerJobType.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645651F45399F00B54DED /* ServiceWorkerJobType.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2480 2485 51F798EF1BE880E7008AE491 /* IDBIndexInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F798EB1BE880D3008AE491 /* IDBIndexInfo.cpp */; }; 2481 2486 51F798F01BE880E7008AE491 /* IDBIndexInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F798EC1BE880D3008AE491 /* IDBIndexInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 10070 10075 51771DFC1BDB475600CAE8E4 /* MemoryObjectStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryObjectStore.cpp; sourceTree = "<group>"; }; 10071 10076 51771DFD1BDB475600CAE8E4 /* MemoryObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryObjectStore.h; sourceTree = "<group>"; }; 10077 517A52EE1F47535900DCDC0A /* SWServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWServer.h; sourceTree = "<group>"; }; 10078 517A52EF1F47535900DCDC0A /* SWServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SWServer.cpp; sourceTree = "<group>"; }; 10072 10079 517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyedDecoderCF.cpp; sourceTree = "<group>"; }; 10073 10080 517A63C01B74317E00E7DCDC /* KeyedDecoderCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyedDecoderCF.h; sourceTree = "<group>"; }; … … 10244 10251 51F1755A1F3EBC0C00C74950 /* ServiceWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorker.h; sourceTree = "<group>"; }; 10245 10252 51F1755B1F3EBC0C00C74950 /* ServiceWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorker.cpp; sourceTree = "<group>"; }; 10253 51F645601F45398B00B54DED /* ExceptionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionData.h; sourceTree = "<group>"; }; 10254 51F645651F45399F00B54DED /* ServiceWorkerJobType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerJobType.h; sourceTree = "<group>"; }; 10255 51F645661F45399F00B54DED /* ServiceWorkerJobData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerJobData.h; sourceTree = "<group>"; }; 10246 10256 51F6A3D50663BF04004D2919 /* HTMLCanvasElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLCanvasElement.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 10247 10257 51F6A3D60663BF04004D2919 /* HTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HTMLCanvasElement.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; … … 18607 18617 usesTabs = 0; 18608 18618 }; 18619 517A52EC1F47532D00DCDC0A /* server */ = { 18620 isa = PBXGroup; 18621 children = ( 18622 517A52EF1F47535900DCDC0A /* SWServer.cpp */, 18623 517A52EE1F47535900DCDC0A /* SWServer.h */, 18624 ); 18625 path = server; 18626 sourceTree = "<group>"; 18627 }; 18609 18628 5182C24C1F3142090059BA7C /* ServiceWorkers */ = { 18610 18629 isa = PBXGroup; … … 18687 18706 isa = PBXGroup; 18688 18707 children = ( 18708 517A52EC1F47532D00DCDC0A /* server */, 18689 18709 51F1755B1F3EBC0C00C74950 /* ServiceWorker.cpp */, 18690 18710 51F1755A1F3EBC0C00C74950 /* ServiceWorker.h */, … … 18699 18719 51F175511F3EBC0C00C74950 /* ServiceWorkerJob.h */, 18700 18720 51F175501F3EBC0C00C74950 /* ServiceWorkerJobClient.h */, 18721 51F645661F45399F00B54DED /* ServiceWorkerJobData.h */, 18722 51F645651F45399F00B54DED /* ServiceWorkerJobType.h */, 18701 18723 51F1754F1F3EBC0C00C74950 /* ServiceWorkerProvider.cpp */, 18702 18724 51F1754E1F3EBC0C00C74950 /* ServiceWorkerProvider.h */, … … 25799 25821 93D196321D6CAB8200FC7E47 /* Exception.h */, 25800 25822 935FBCF109BA143B00E230B1 /* ExceptionCode.h */, 25823 51F645601F45398B00B54DED /* ExceptionData.h */, 25801 25824 93D196301D6CAB7600FC7E47 /* ExceptionOr.h */, 25802 25825 E47E276716036EDC00EE2AFB /* ExtensionStyleSheets.cpp */, … … 27294 27317 93D196331D6CAB8200FC7E47 /* Exception.h in Headers */, 27295 27318 935FBCF209BA143B00E230B1 /* ExceptionCode.h in Headers */, 27319 51F645621F45398F00B54DED /* ExceptionData.h in Headers */, 27296 27320 93D196311D6CAB7600FC7E47 /* ExceptionOr.h in Headers */, 27297 27321 31DCDF441DA1C45400EA5B93 /* ExtendedColor.h in Headers */, … … 28795 28819 F55B3DC61251F12D003EF269 /* MonthInputType.h in Headers */, 28796 28820 85031B460A44EFC700F992E0 /* MouseEvent.h in Headers */, 28821 517A52F01F47535B00DCDC0A /* SWServer.h in Headers */, 28797 28822 83765F951DAC522F00C06537 /* MouseEventInit.h in Headers */, 28798 28823 935C476309AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h in Headers */, … … 29446 29471 51F175631F3EBC8300C74950 /* ServiceWorkerJob.h in Headers */, 29447 29472 51F175641F3EBC8300C74950 /* ServiceWorkerJobClient.h in Headers */, 29473 51F645691F4539B900B54DED /* ServiceWorkerJobData.h in Headers */, 29474 51F6456A1F4539C000B54DED /* ServiceWorkerJobType.h in Headers */, 29448 29475 51F175661F3EBC8300C74950 /* ServiceWorkerProvider.h in Headers */, 29449 29476 51F175681F3EBC8300C74950 /* ServiceWorkerRegistration.h in Headers */, … … 31904 31931 1221E05D1C02B444006A1A00 /* JSDocumentAnimation.cpp in Sources */, 31905 31932 49C7BA8D1042F5B10009D447 /* JSDocumentCustom.cpp in Sources */, 31933 517A52F11F4754E700DCDC0A /* SWServer.cpp in Sources */, 31906 31934 E3B7C0631DC34160001FB0B8 /* JSDocumentDOMJIT.cpp in Sources */, 31907 31935 1A494EDE0A123F4C00FDAFC1 /* JSDocumentFragment.cpp in Sources */, -
trunk/Source/WebCore/dom/ExceptionData.h
r220922 r220924 26 26 #pragma once 27 27 28 #if ENABLE(SERVICE_WORKER) 28 #include "Exception.h" 29 #include <wtf/text/WTFString.h> 29 30 30 31 namespace WebCore { 31 32 32 class ServiceWorkerJob; 33 struct ExceptionData { 34 ExceptionCode code; 35 String message; 33 36 34 class WEBCORE_EXPORT ServiceWorkerProvider { 35 public: 36 virtual ~ServiceWorkerProvider() { } 37 template<class Encoder> void encode(Encoder&) const; 38 template<class Decoder> static bool decode(Decoder&, ExceptionData&); 37 39 38 WEBCORE_EXPORT static ServiceWorkerProvider& singleton();39 WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&);40 41 virtual void scheduleJob(ServiceWorkerJob&) = 0;40 Exception toException() const 41 { 42 return Exception { code, String { message } }; 43 } 42 44 }; 43 45 46 template<class Encoder> 47 void ExceptionData::encode(Encoder& encoder) const 48 { 49 encoder.encodeEnum(code); 50 encoder << message; 51 } 52 53 template<class Decoder> 54 bool ExceptionData::decode(Decoder& decoder, ExceptionData& data) 55 { 56 if (!decoder.decodeEnum(data.code)) 57 return false; 58 59 if (!decoder.decode(data.message)) 60 return false; 61 62 return true; 63 } 64 44 65 } // namespace WebCore 45 46 #endif // ENABLE(SERVICE_WORKER) -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp
r220623 r220924 81 81 } 82 82 83 if (!m_serverConnection) 84 m_serverConnection = &ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(context->sessionID()); 85 83 86 if (relativeScriptURL.isEmpty()) { 84 87 promise->reject(Exception { TypeError, ASCIILiteral("serviceWorker.register() cannot be called with an empty script URL") }); … … 109 112 parameters.scopeURL = context->completeURL(scope); 110 113 111 parameters.sessionID = context->sessionID();112 114 parameters.clientCreationURL = context->url(); 113 115 parameters.topOrigin = SecurityOriginData::fromSecurityOrigin(context->topOrigin()); … … 119 121 void ServiceWorkerContainer::scheduleJob(Ref<ServiceWorkerJob>&& job) 120 122 { 123 ASSERT(m_serverConnection); 124 121 125 ServiceWorkerJob& rawJob = job.get(); 122 126 auto result = m_jobMap.add(rawJob.identifier(), WTFMove(job)); 123 127 ASSERT_UNUSED(result, result.isNewEntry); 124 128 125 ServiceWorkerProvider::singleton().scheduleJob(rawJob);129 m_serverConnection->scheduleJob(rawJob); 126 130 } 127 131 -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h
r220887 r220924 31 31 #include "DOMPromiseProxy.h" 32 32 #include "EventTarget.h" 33 #include "SWServer.h" 33 34 #include "ServiceWorkerJobClient.h" 34 35 #include "ServiceWorkerRegistration.h" … … 82 83 NavigatorBase& m_navigator; 83 84 85 RefPtr<SWServer::Connection> m_serverConnection; 84 86 HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_jobMap; 85 87 -
trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp
r220623 r220924 30 30 31 31 #include "JSDOMPromiseDeferred.h" 32 #include "ServiceWorkerJobData.h" 32 33 #include "ServiceWorkerRegistrationParameters.h" 33 34 … … 49 50 } 50 51 51 void ServiceWorkerJob::failedWithException( Exception&& exception)52 void ServiceWorkerJob::failedWithException(const Exception& exception) 52 53 { 53 54 ASSERT(currentThread() == m_creationThread); 54 55 55 56 ASSERT(!m_completed); 56 m_promise->reject( WTFMove(exception));57 m_promise->reject(exception); 57 58 m_completed = true; 58 59 … … 61 62 } 62 63 64 ServiceWorkerJobData ServiceWorkerJob::data() const 65 { 66 return { m_identifier, m_type }; 67 } 68 63 69 } // namespace WebCore 64 70 -
trunk/Source/WebCore/workers/service/ServiceWorkerJob.h
r220623 r220924 30 30 #include "ServiceWorkerJobClient.h" 31 31 #include <wtf/RefPtr.h> 32 #include <wtf/RunLoop.h> 32 33 #include <wtf/ThreadSafeRefCounted.h> 33 34 #include <wtf/Threading.h> … … 37 38 class DeferredPromise; 38 39 class Exception; 40 enum class ServiceWorkerJobType; 41 struct ServiceWorkerJobData; 39 42 struct ServiceWorkerRegistrationParameters; 40 43 … … 46 49 } 47 50 48 ~ServiceWorkerJob();51 WEBCORE_EXPORT ~ServiceWorkerJob(); 49 52 50 WEBCORE_EXPORT void failedWithException( Exception&&);53 WEBCORE_EXPORT void failedWithException(const Exception&); 51 54 52 55 uint64_t identifier() const { return m_identifier; } 56 57 ServiceWorkerJobData data() const; 53 58 54 59 private: … … 62 67 uint64_t m_identifier; 63 68 69 ServiceWorkerJobType m_type; 70 71 Ref<RunLoop> m_runLoop { RunLoop::current() }; 72 64 73 #if !ASSERT_DISABLED 65 74 ThreadIdentifier m_creationThread { currentThread() }; -
trunk/Source/WebCore/workers/service/ServiceWorkerJobData.h
r220922 r220924 30 30 namespace WebCore { 31 31 32 class ServiceWorkerJob;32 enum class ServiceWorkerJobType; 33 33 34 class WEBCORE_EXPORT ServiceWorkerProvider{35 public: 36 virtual ~ServiceWorkerProvider() { }34 struct ServiceWorkerJobData { 35 uint64_t identifier; 36 ServiceWorkerJobType type; 37 37 38 WEBCORE_EXPORT static ServiceWorkerProvider& singleton(); 39 WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&); 38 template<class Encoder> void encode(Encoder&) const; 39 template<class Decoder> static bool decode(Decoder&, ServiceWorkerJobData&); 40 }; 40 41 41 virtual void scheduleJob(ServiceWorkerJob&) = 0; 42 }; 42 template<class Encoder> 43 void ServiceWorkerJobData::encode(Encoder& encoder) const 44 { 45 encoder << identifier; 46 encoder.encodeEnum(type); 47 } 48 49 template<class Decoder> 50 bool ServiceWorkerJobData::decode(Decoder& decoder, ServiceWorkerJobData& jobData) 51 { 52 if (!decoder.decode(jobData.identifier)) 53 return false; 54 if (!decoder.decodeEnum(jobData.type)) 55 return false; 56 57 return true; 58 } 43 59 44 60 } // namespace WebCore -
trunk/Source/WebCore/workers/service/ServiceWorkerJobType.h
r220922 r220924 30 30 namespace WebCore { 31 31 32 class ServiceWorkerJob; 33 34 class WEBCORE_EXPORT ServiceWorkerProvider { 35 public: 36 virtual ~ServiceWorkerProvider() { } 37 38 WEBCORE_EXPORT static ServiceWorkerProvider& singleton(); 39 WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&); 40 41 virtual void scheduleJob(ServiceWorkerJob&) = 0; 32 enum class ServiceWorkerJobType { 33 Register, 42 34 }; 43 35 -
trunk/Source/WebCore/workers/service/ServiceWorkerProvider.h
r220623 r220924 28 28 #if ENABLE(SERVICE_WORKER) 29 29 30 #include "SWServer.h" 31 32 namespace PAL { 33 class SessionID; 34 } 35 30 36 namespace WebCore { 31 37 … … 39 45 WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&); 40 46 41 virtual void scheduleJob(ServiceWorkerJob&) = 0;47 virtual SWServer::Connection& serviceWorkerConnectionForSession(const PAL::SessionID&) = 0; 42 48 }; 43 49 -
trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationParameters.h
r220887 r220924 36 36 37 37 struct ServiceWorkerRegistrationParameters { 38 PAL::SessionID sessionID;39 38 URL scriptURL; 40 39 URL clientCreationURL; -
trunk/Source/WebCore/workers/service/server/SWServer.cpp
r220922 r220924 25 25 26 26 #include "config.h" 27 #include " WebServiceWorkerProvider.h"27 #include "SWServer.h" 28 28 29 29 #if ENABLE(SERVICE_WORKER) 30 30 31 #include <WebCore/Exception.h>32 #include <WebCore/ExceptionCode.h>33 #include <WebCore/ServiceWorkerJob.h>31 #include "ExceptionCode.h" 32 #include "ExceptionData.h" 33 #include "ServiceWorkerJobData.h" 34 34 #include <wtf/text/WTFString.h> 35 35 36 using namespace WebCore; 36 namespace WebCore { 37 37 38 namespace WebKit { 38 void SWServer::Connection::scheduleJob(ServiceWorkerJob& job) 39 { 40 auto addResult = m_scheduledJobs.add(job.identifier(), &job); 41 ASSERT_UNUSED(addResult, addResult.isNewEntry); 39 42 40 WebServiceWorkerProvider& WebServiceWorkerProvider::singleton() 41 { 42 static NeverDestroyed<WebServiceWorkerProvider> provider; 43 return provider; 43 scheduleJob(job.data()); 44 44 } 45 45 46 WebServiceWorkerProvider::WebServiceWorkerProvider()46 void SWServer::Connection::jobRejected(uint64_t jobIdentifier, const ExceptionData& exceptionData) 47 47 { 48 auto job = m_scheduledJobs.take(jobIdentifier); 49 if (!job) { 50 LOG_ERROR("Job %" PRIu64 " rejected from server, but was not found", jobIdentifier); 51 return; 52 } 53 54 job->failedWithException(exceptionData.toException()); 48 55 } 49 56 50 void WebServiceWorkerProvider::scheduleJob(ServiceWorkerJob& job) 51 { 52 job.failedWithException(Exception { UnknownError, ASCIILiteral("serviceWorker job scheduling is not yet implemented") }); 53 } 54 55 } // namespace WebKit 57 } // namespace WebCore 56 58 57 59 #endif // ENABLE(SERVICE_WORKER) -
trunk/Source/WebCore/workers/service/server/SWServer.h
r220922 r220924 28 28 #if ENABLE(SERVICE_WORKER) 29 29 30 #include "ServiceWorkerJob.h" 31 #include <wtf/HashMap.h> 32 #include <wtf/ThreadSafeRefCounted.h> 33 30 34 namespace WebCore { 31 35 32 class ServiceWorkerJob;36 struct ExceptionData; 33 37 34 class WEBCORE_EXPORT ServiceWorkerProvider {38 class SWServer { 35 39 public: 36 virtual ~ServiceWorkerProvider() { } 40 class Connection : public ThreadSafeRefCounted<Connection> { 41 public: 42 virtual ~Connection() { } 43 void scheduleJob(ServiceWorkerJob&); 37 44 38 WEBCORE_EXPORT static ServiceWorkerProvider& singleton();39 WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&);45 protected: 46 WEBCORE_EXPORT void jobRejected(uint64_t jobIdentifier, const ExceptionData&); 40 47 41 virtual void scheduleJob(ServiceWorkerJob&) = 0; 48 private: 49 virtual void scheduleJob(const ServiceWorkerJobData&) = 0; 50 51 HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_scheduledJobs; 52 }; 53 42 54 }; 43 55 -
trunk/Source/WebKit/CMakeLists.txt
r220917 r220924 529 529 WebProcess/Plugins/Netscape/NetscapePluginStream.cpp 530 530 531 WebProcess/Storage/WebSWServerConnection.cpp 531 532 WebProcess/Storage/WebServiceWorkerProvider.cpp 532 533 WebProcess/Storage/WebToStorageProcessConnection.cpp … … 668 669 WebProcess/Plugins/PluginProcessConnectionManager.messages.in 669 670 WebProcess/Plugins/PluginProxy.messages.in 671 672 WebProcess/Storage/WebSWServerConnection.messages.in 670 673 671 674 WebProcess/UserContent/WebUserContentController.messages.in -
trunk/Source/WebKit/ChangeLog
r220922 r220924 1 2017-08-18 Brady Eidson <beidson@apple.com> 2 3 Bounce ServiceWorker jobs to the Storage Process. 4 https://bugs.webkit.org/show_bug.cgi?id=175650 5 6 Reviewed by Andy Estes. 7 8 * CMakeLists.txt: 9 * DerivedSources.make: 10 * WebKit.xcodeproj/project.pbxproj: 11 12 * Platform/Logging.h: 13 14 * StorageProcess/StorageToWebProcessConnection.cpp: 15 (WebKit::StorageToWebProcessConnection::didReceiveMessage): 16 (WebKit::StorageToWebProcessConnection::didClose): 17 (WebKit::StorageToWebProcessConnection::establishSWServerConnection): 18 (WebKit::StorageToWebProcessConnection::removeSWServerConnection): 19 (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer): 20 * StorageProcess/StorageToWebProcessConnection.h: 21 * StorageProcess/StorageToWebProcessConnection.messages.in: 22 23 * WebProcess/Storage/WebSWServerConnection.cpp: Added. 24 (WebKit::WebSWServerConnection::WebSWServerConnection): 25 (WebKit::WebSWServerConnection::~WebSWServerConnection): 26 (WebKit::WebSWServerConnection::disconnectedFromWebProcess): 27 (WebKit::WebSWServerConnection::scheduleJob): 28 (WebKit::WebSWServerConnection::scheduleStorageJob): 29 * WebProcess/Storage/WebSWServerConnection.h: Copied from Source/WebCore/workers/service/ServiceWorkerJob.h. 30 (WebKit::WebSWServerConnection::create): 31 (WebKit::WebSWServerConnection::identifier const): 32 * WebProcess/Storage/WebSWServerConnection.messages.in: Copied from Source/WebKit/StorageProcess/StorageToWebProcessConnection.messages.in. 33 34 * WebProcess/Storage/WebServiceWorkerProvider.cpp: 35 (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession): 36 (WebKit::WebServiceWorkerProvider::scheduleJob): Deleted. 37 * WebProcess/Storage/WebServiceWorkerProvider.h: 38 39 * WebProcess/Storage/WebToStorageProcessConnection.cpp: 40 (WebKit::WebToStorageProcessConnection::didReceiveMessage): 41 (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession): 42 * WebProcess/Storage/WebToStorageProcessConnection.h: 43 1 44 2017-08-18 Chris Dumez <cdumez@apple.com> 2 45 -
trunk/Source/WebKit/DerivedSources.make
r220917 r220924 159 159 WebPaymentCoordinator \ 160 160 WebPaymentCoordinatorProxy \ 161 WebSWServerConnection \ 161 162 PlaybackSessionManager \ 162 163 PlaybackSessionManagerProxy \ -
trunk/Source/WebKit/Platform/Logging.h
r219569 r220924 47 47 M(Gamepad) \ 48 48 M(IconDatabase) \ 49 M(IDB) \50 49 M(IndexedDB) \ 51 50 M(IPC) \ … … 66 65 M(ResourceLoadStatistics) \ 67 66 M(Selection) \ 67 M(ServiceWorker) \ 68 68 M(SessionState) \ 69 69 M(StorageAPI) \ -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.cpp
r220857 r220924 31 31 #include "WebIDBConnectionToClient.h" 32 32 #include "WebIDBConnectionToClientMessages.h" 33 #include "WebSWServerConnection.h" 34 #include "WebSWServerConnectionMessages.h" 33 35 #include <wtf/RunLoop.h> 36 37 using namespace PAL; 34 38 35 39 namespace WebKit { … … 68 72 #endif 69 73 74 #if ENABLE(SERVICE_WORKER) 75 if (decoder.messageReceiverName() == Messages::WebSWServerConnection::messageReceiverName()) { 76 auto iterator = m_webServiceWorkerConnections.find(decoder.destinationID()); 77 if (iterator != m_webServiceWorkerConnections.end()) 78 iterator->value->didReceiveMessage(connection, decoder); 79 return; 80 } 81 #endif 82 70 83 ASSERT_NOT_REACHED(); 71 84 } … … 84 97 { 85 98 #if ENABLE(INDEXED_DATABASE) 86 auto connections = m_webIDBConnections;87 for (auto& connection : connections.values())99 auto idbConnections = m_webIDBConnections; 100 for (auto& connection : idbConnections.values()) 88 101 connection->disconnectedFromWebProcess(); 89 102 90 103 m_webIDBConnections.clear(); 104 #endif 105 106 #if ENABLE(SERVICE_WORKER) 107 auto serviceWorkerConnections = m_webServiceWorkerConnections; 108 for (auto& connection : serviceWorkerConnections.values()) 109 connection->disconnectedFromWebProcess(); 110 111 m_webServiceWorkerConnections.clear(); 91 112 #endif 92 113 } … … 97 118 } 98 119 99 #if ENABLE(INDEXED_DATABASE)100 101 120 static uint64_t generateConnectionToServerIdentifier() 102 121 { … … 106 125 } 107 126 108 void StorageToWebProcessConnection::establishIDBConnectionToServer(PAL::SessionID sessionID, uint64_t& serverConnectionIdentifier) 127 #if ENABLE(SERVICE_WORKER) 128 void StorageToWebProcessConnection::establishSWServerConnection(SessionID sessionID, uint64_t& serverConnectionIdentifier) 129 { 130 serverConnectionIdentifier = generateConnectionToServerIdentifier(); 131 LOG(ServiceWorker, "StorageToWebProcessConnection::establishSWServerConnection - %" PRIu64, serverConnectionIdentifier); 132 ASSERT(!m_webServiceWorkerConnections.contains(serverConnectionIdentifier)); 133 134 m_webServiceWorkerConnections.set(serverConnectionIdentifier, WebSWServerConnection::create(m_connection.get(), serverConnectionIdentifier, sessionID)); 135 } 136 137 void StorageToWebProcessConnection::removeSWServerConnection(uint64_t serverConnectionIdentifier) 138 { 139 ASSERT(m_webServiceWorkerConnections.contains(serverConnectionIdentifier)); 140 141 auto connection = m_webServiceWorkerConnections.take(serverConnectionIdentifier); 142 connection->disconnectedFromWebProcess(); 143 } 144 #endif 145 146 #if ENABLE(INDEXED_DATABASE) 147 void StorageToWebProcessConnection::establishIDBConnectionToServer(SessionID sessionID, uint64_t& serverConnectionIdentifier) 109 148 { 110 149 serverConnectionIdentifier = generateConnectionToServerIdentifier(); -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.h
r220887 r220924 35 35 36 36 class WebIDBConnectionToClient; 37 class WebSWServerConnection; 37 38 38 39 class StorageToWebProcessConnection : public RefCounted<StorageToWebProcessConnection>, public IPC::Connection::Client, public IPC::MessageSender { … … 66 67 #endif // ENABLE(INDEXED_DATABASE) 67 68 69 #if ENABLE(SERVICE_WORKER) 70 void establishSWServerConnection(PAL::SessionID, uint64_t& serverConnectionIdentifier); 71 void removeSWServerConnection(uint64_t serverConnectionIdentifier); 72 HashMap<uint64_t, RefPtr<WebSWServerConnection>> m_webServiceWorkerConnections; 73 #endif 74 68 75 Ref<IPC::Connection> m_connection; 69 76 }; -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.messages.in
r220857 r220924 23 23 messages -> StorageToWebProcessConnection LegacyReceiver { 24 24 #if ENABLE(INDEXED_DATABASE) 25 # Creates a connection for communication with a WebProcess26 25 EstablishIDBConnectionToServer(PAL::SessionID sessionID) -> (uint64_t serverConnectionIdentifier) 27 26 RemoveIDBConnectionToServer(uint64_t serverConnectionIdentifier) 28 27 #endif 28 #if ENABLE(SERVICE_WORKER) 29 EstablishSWServerConnection(PAL::SessionID sessionID) -> (uint64_t serverConnectionIdentifier) 30 RemoveSWServerConnection(uint64_t serverConnectionIdentifier) 31 #endif 29 32 } -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r220917 r220924 1027 1027 5179556D162877B100FA43B6 /* NetworkProcessProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510CC7EA16138E7200D03ED3 /* NetworkProcessProxy.cpp */; }; 1028 1028 5179556E162877B300FA43B6 /* NetworkProcessProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 510CC7EB16138E7200D03ED3 /* NetworkProcessProxy.h */; }; 1029 517A52D81F43A9DA00DCDC0A /* WebSWServerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A52D71F43A9B600DCDC0A /* WebSWServerConnectionMessageReceiver.cpp */; }; 1030 517A52D91F43A9DA00DCDC0A /* WebSWServerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */; }; 1029 1031 517CF0E3163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */; }; 1030 1032 517CF0E3163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */; }; … … 1109 1111 51F060E11654318500F3282C /* WebRTCResolverMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */; }; 1110 1112 51F060E11654318500F3282E /* NetworkRTCProviderMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3282E /* NetworkRTCProviderMessageReceiver.cpp */; }; 1113 51F645881F472E2E00B54DED /* WebSWServerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F645861F472E2600B54DED /* WebSWServerConnection.h */; }; 1114 51F645891F472E2E00B54DED /* WebSWServerConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F645871F472E2600B54DED /* WebSWServerConnection.cpp */; }; 1111 1115 51F7DC41180CC93600212CA3 /* XPCServiceMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC82839616B47EC400A278FE /* XPCServiceMain.mm */; }; 1112 1116 51F7DC43180CC93600212CA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC3DE46815A91763008D26FC /* Foundation.framework */; }; … … 3302 3306 517A33B3130B308C00F80CB5 /* WKApplicationCacheManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKApplicationCacheManager.cpp; sourceTree = "<group>"; }; 3303 3307 517A33B4130B308C00F80CB5 /* WKApplicationCacheManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKApplicationCacheManager.h; sourceTree = "<group>"; }; 3308 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSWServerConnectionMessages.h; sourceTree = "<group>"; }; 3309 517A52D71F43A9B600DCDC0A /* WebSWServerConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSWServerConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; 3304 3310 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkProcessConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; 3305 3311 517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCacheStorageConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; … … 3410 3416 51F060DD1654317500F3282E /* NetworkRTCProviderMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkRTCProviderMessageReceiver.cpp; sourceTree = "<group>"; }; 3411 3417 51F060DE1654317500F3281B /* WebResourceLoaderMessages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebResourceLoaderMessages.h; sourceTree = "<group>"; }; 3418 51F645851F472E2600B54DED /* WebSWServerConnection.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebSWServerConnection.messages.in; sourceTree = "<group>"; }; 3419 51F645861F472E2600B54DED /* WebSWServerConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSWServerConnection.h; sourceTree = "<group>"; }; 3420 51F645871F472E2600B54DED /* WebSWServerConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSWServerConnection.cpp; sourceTree = "<group>"; }; 3412 3421 51F7DC4A180CC93600212CA3 /* com.apple.WebKit.Storage.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; includeInIndex = 0; path = com.apple.WebKit.Storage.xpc; sourceTree = BUILT_PRODUCTS_DIR; }; 3413 3422 51F886A31F2C214A00C193EF /* WKTestingSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKTestingSupport.cpp; sourceTree = "<group>"; }; … … 6067 6076 51BEB6291F3A5ACD005029B9 /* WebServiceWorkerProvider.cpp */, 6068 6077 51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */, 6078 51F645861F472E2600B54DED /* WebSWServerConnection.h */, 6079 51F645871F472E2600B54DED /* WebSWServerConnection.cpp */, 6080 51F645851F472E2600B54DED /* WebSWServerConnection.messages.in */, 6069 6081 5118E9991F295259003EF9F5 /* WebToStorageProcessConnection.cpp */, 6070 6082 5118E99A1F295259003EF9F5 /* WebToStorageProcessConnection.h */, … … 7999 8011 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */, 8000 8012 51F060DD1654317500F3281C /* WebRTCSocketMessageReceiver.cpp */, 8013 517A52D71F43A9B600DCDC0A /* WebSWServerConnectionMessageReceiver.cpp */, 8014 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */, 8001 8015 5C0B17761E7C879C00E9123C /* WebSocketStreamMessageReceiver.cpp */, 8002 8016 5C0B17771E7C879C00E9123C /* WebSocketStreamMessages.h */, … … 8342 8356 1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */, 8343 8357 1AFDD3151891B54000153970 /* APIPolicyClient.h in Headers */, 8358 51F645881F472E2E00B54DED /* WebSWServerConnection.h in Headers */, 8344 8359 7CE4D2201A4914CA00C7F152 /* APIProcessPoolConfiguration.h in Headers */, 8345 8360 F634445612A885C8000612D8 /* APISecurityOrigin.h in Headers */, … … 8890 8905 D3B9484911FF4B6500032B39 /* WebSearchPopupMenu.h in Headers */, 8891 8906 51BEB62C1F3A5AD7005029B9 /* WebServiceWorkerProvider.h in Headers */, 8907 517A52D91F43A9DA00DCDC0A /* WebSWServerConnectionMessages.h in Headers */, 8892 8908 1A4832D71A9CDF96008B4DFE /* WebsiteData.h in Headers */, 8893 8909 1A4832D11A9BDC2F008B4DFE /* WebsiteDataRecord.h in Headers */, … … 10522 10538 D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */, 10523 10539 51BEB62B1F3A5AD7005029B9 /* WebServiceWorkerProvider.cpp in Sources */, 10540 517A52D81F43A9DA00DCDC0A /* WebSWServerConnectionMessageReceiver.cpp in Sources */, 10524 10541 1A4832D61A9CDF96008B4DFE /* WebsiteData.cpp in Sources */, 10525 10542 1A4832D91A9D1FD2008B4DFE /* WebsiteDataRecord.cpp in Sources */, … … 10658 10675 370F34A21829BE1E009027C8 /* WKNavigationData.mm in Sources */, 10659 10676 BCF69FAA1176D1CB00471A52 /* WKNavigationDataRef.cpp in Sources */, 10677 51F645891F472E2E00B54DED /* WebSWServerConnection.cpp in Sources */, 10660 10678 2D3A65E21A7C3A9300CAC637 /* WKNavigationRef.cpp in Sources */, 10661 10679 1A1B0EB518A424950038481A /* WKNavigationResponse.mm in Sources */, -
trunk/Source/WebKit/WebProcess/Storage/WebSWServerConnection.h
r220922 r220924 28 28 #if ENABLE(SERVICE_WORKER) 29 29 30 #include " ServiceWorkerJobClient.h"31 #include <wtf/RefPtr.h>32 #include < wtf/ThreadSafeRefCounted.h>33 #include < wtf/Threading.h>30 #include "MessageReceiver.h" 31 #include "MessageSender.h" 32 #include <WebCore/SWServer.h> 33 #include <pal/SessionID.h> 34 34 35 35 namespace WebCore { 36 struct ExceptionData; 37 } 36 38 37 class DeferredPromise; 38 class Exception; 39 struct ServiceWorkerRegistrationParameters; 39 namespace WebKit { 40 40 41 class ServiceWorkerJob : public ThreadSafeRefCounted<ServiceWorkerJob>{41 class WebSWServerConnection : public WebCore::SWServer::Connection, public IPC::MessageSender, public IPC::MessageReceiver { 42 42 public: 43 static Ref< ServiceWorkerJob> createRegisterJob(ServiceWorkerJobClient& client, Ref<DeferredPromise>&& promise, ServiceWorkerRegistrationParameters&& parameters)43 static Ref<WebSWServerConnection> create(const PAL::SessionID& sessionID) 44 44 { 45 return adoptRef(*new ServiceWorkerJob(client, WTFMove(promise), WTFMove(parameters))); 45 return adoptRef(*new WebSWServerConnection(sessionID)); 46 } 47 static Ref<WebSWServerConnection> create(IPC::Connection& connection, uint64_t connectionIdentifier, const PAL::SessionID& sessionID) 48 { 49 return adoptRef(*new WebSWServerConnection(connection, connectionIdentifier, sessionID)); 46 50 } 47 51 48 ~ServiceWorkerJob(); 49 50 WEBCORE_EXPORT void failedWithException(Exception&&); 52 ~WebSWServerConnection() final; 51 53 52 54 uint64_t identifier() const { return m_identifier; } 53 55 56 void scheduleJob(const WebCore::ServiceWorkerJobData&) final; 57 58 void disconnectedFromWebProcess(); 59 void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final; 60 54 61 private: 55 ServiceWorkerJob(ServiceWorkerJobClient&, Ref<DeferredPromise>&&, ServiceWorkerRegistrationParameters&&); 62 WebSWServerConnection(const PAL::SessionID&); 63 WebSWServerConnection(IPC::Connection&, uint64_t connectionIdentifier, const PAL::SessionID&); 56 64 57 Ref<ServiceWorkerJobClient> m_client; 58 std::unique_ptr<ServiceWorkerRegistrationParameters> m_registrationParameters; 59 Ref<DeferredPromise> m_promise; 65 void scheduleStorageJob(const WebCore::ServiceWorkerJobData&); 60 66 61 bool m_completed { false }; 67 IPC::Connection* messageSenderConnection() final { return m_connection.ptr(); } 68 uint64_t messageSenderDestinationID() final { return m_identifier; } 69 70 PAL::SessionID m_sessionID; 62 71 uint64_t m_identifier; 63 72 64 #if !ASSERT_DISABLED 65 ThreadIdentifier m_creationThread { currentThread() }; 66 #endif 67 }; 73 Ref<IPC::Connection> m_connection; 74 }; // class WebSWServerConnection 68 75 69 } // namespace Web Core76 } // namespace WebKit 70 77 71 78 #endif // ENABLE(SERVICE_WORKER) 72 -
trunk/Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in
r220922 r220924 1 # Copyright (C) 201 3Apple Inc. All rights reserved.1 # Copyright (C) 2017 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 messages -> StorageToWebProcessConnection LegacyReceiver { 24 #if ENABLE(INDEXED_DATABASE) 25 # Creates a connection for communication with a WebProcess 26 EstablishIDBConnectionToServer(PAL::SessionID sessionID) -> (uint64_t serverConnectionIdentifier) 27 RemoveIDBConnectionToServer(uint64_t serverConnectionIdentifier) 28 #endif 23 #if ENABLE(SERVICE_WORKER) 24 25 messages -> WebSWServerConnection { 26 # Messages targetting the Storage process 27 ScheduleStorageJob(struct WebCore::ServiceWorkerJobData jobData) 28 29 # Messages targetting the Web process. 30 # When possible, they can be implemented directly by WebCore::SWServer::Connection 31 JobRejected(uint64_t identifier, struct WebCore::ExceptionData exception) 29 32 } 33 34 #endif // ENABLE(SERVICE_WORKER) -
trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp
r220539 r220924 29 29 #if ENABLE(SERVICE_WORKER) 30 30 31 #include "WebProcess.h" 32 #include "WebSWServerConnection.h" 33 #include "WebToStorageProcessConnection.h" 31 34 #include <WebCore/Exception.h> 32 35 #include <WebCore/ExceptionCode.h> 33 36 #include <WebCore/ServiceWorkerJob.h> 37 #include <pal/SessionID.h> 34 38 #include <wtf/text/WTFString.h> 35 39 40 using namespace PAL; 36 41 using namespace WebCore; 37 42 … … 48 53 } 49 54 50 void WebServiceWorkerProvider::scheduleJob(ServiceWorkerJob& job)55 SWServer::Connection& WebServiceWorkerProvider::serviceWorkerConnectionForSession(const SessionID& sessionID) 51 56 { 52 job.failedWithException(Exception { UnknownError, ASCIILiteral("serviceWorker job scheduling is not yet implemented") }); 57 ASSERT(WebProcess::singleton().webToStorageProcessConnection()); 58 return WebProcess::singleton().webToStorageProcessConnection()->serviceWorkerConnectionForSession(sessionID); 53 59 } 54 60 -
trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h
r220539 r220924 41 41 WebServiceWorkerProvider(); 42 42 43 void scheduleJob(WebCore::ServiceWorkerJob&) final;43 WebCore::SWServer::Connection& serviceWorkerConnectionForSession(const PAL::SessionID&) final; 44 44 45 45 }; // class WebServiceWorkerProvider -
trunk/Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.cpp
r220857 r220924 31 31 #include "WebIDBConnectionToServerMessages.h" 32 32 #include "WebProcess.h" 33 #include "WebSWServerConnection.h" 34 #include "WebSWServerConnectionMessages.h" 33 35 36 using namespace PAL; 34 37 using namespace WebCore; 35 38 … … 56 59 } 57 60 #endif 58 61 62 #if ENABLE(SERVICE_WORKER) 63 if (decoder.messageReceiverName() == Messages::WebSWServerConnection::messageReceiverName()) { 64 auto serviceWorkerConnection = m_serviceWorkerConnectionsByIdentifier.get(decoder.destinationID()); 65 if (serviceWorkerConnection) 66 serviceWorkerConnection->didReceiveMessage(connection, decoder); 67 return; 68 } 69 #endif 59 70 ASSERT_NOT_REACHED(); 60 71 } … … 91 102 #endif 92 103 104 #if ENABLE(SERVICE_WORKER) 105 WebSWServerConnection& WebToStorageProcessConnection::serviceWorkerConnectionForSession(const SessionID& sessionID) 106 { 107 auto result = m_serviceWorkerConnectionsBySession.add(sessionID, nullptr); 108 if (result.isNewEntry) { 109 result.iterator->value = WebSWServerConnection::create(sessionID); 110 ASSERT(!m_serviceWorkerConnectionsByIdentifier.contains(result.iterator->value->identifier())); 111 m_serviceWorkerConnectionsByIdentifier.set(result.iterator->value->identifier(), result.iterator->value); 112 } 113 114 return *result.iterator->value; 115 } 116 #endif 117 93 118 } // namespace WebKit -
trunk/Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.h
r220887 r220924 39 39 namespace WebKit { 40 40 41 class WebSWServerConnection; 42 41 43 class WebToStorageProcessConnection : public RefCounted<WebToStorageProcessConnection>, public IPC::Connection::Client, public IPC::MessageSender { 42 44 public: … … 51 53 #if ENABLE(INDEXED_DATABASE) 52 54 WebIDBConnectionToServer& idbConnectionToServerForSession(const PAL::SessionID&); 55 #endif 56 #if ENABLE(SERVICE_WORKER) 57 WebSWServerConnection& serviceWorkerConnectionForSession(const PAL::SessionID&); 53 58 #endif 54 59 … … 71 76 HashMap<uint64_t, RefPtr<WebIDBConnectionToServer>> m_webIDBConnectionsByIdentifier; 72 77 #endif 78 79 #if ENABLE(SERVICE_WORKER) 80 HashMap<PAL::SessionID, RefPtr<WebSWServerConnection>> m_serviceWorkerConnectionsBySession; 81 HashMap<uint64_t, RefPtr<WebSWServerConnection>> m_serviceWorkerConnectionsByIdentifier; 82 #endif 73 83 }; 74 84
Note: See TracChangeset
for help on using the changeset viewer.