Changeset 281854 in webkit
- Timestamp:
- Sep 1, 2021 9:30:39 AM (11 months ago)
- Location:
- trunk
- Files:
-
- 38 edited
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/global-serviceworker.https.any.serviceworker-expected.txt (modified) (1 diff)
-
Source/WTF/wtf/URL.cpp (modified) (1 diff)
-
Source/WTF/wtf/URL.h (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/loader/CrossOriginEmbedderPolicy.cpp (modified) (2 diffs)
-
Source/WebCore/loader/CrossOriginEmbedderPolicy.h (modified) (1 diff)
-
Source/WebCore/page/SecurityOriginData.cpp (modified) (2 diffs)
-
Source/WebCore/page/SecurityOriginData.h (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorker.idl (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerContextData.cpp (modified) (2 diffs)
-
Source/WebCore/workers/service/ServiceWorkerContextData.h (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerData.cpp (modified) (2 diffs)
-
Source/WebCore/workers/service/ServiceWorkerData.h (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp (modified) (2 diffs)
-
Source/WebCore/workers/service/ServiceWorkerGlobalScope.h (modified) (4 diffs)
-
Source/WebCore/workers/service/ServiceWorkerGlobalScope.idl (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp (modified) (2 diffs)
-
Source/WebCore/workers/service/ServiceWorkerRegistrationData.h (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerRegistrationKey.cpp (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h (modified) (1 diff)
-
Source/WebCore/workers/service/ServiceWorkerTypes.h (modified) (2 diffs)
-
Source/WebCore/workers/service/context/ServiceWorkerThread.cpp (modified) (2 diffs)
-
Source/WebCore/workers/service/context/ServiceWorkerThread.h (modified) (2 diffs)
-
Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp (modified) (1 diff)
-
Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h (modified) (1 diff)
-
Source/WebCore/workers/service/server/SWServer.cpp (modified) (2 diffs)
-
Source/WebCore/workers/service/server/SWServerRegistration.cpp (modified) (1 diff)
-
Source/WebCore/workers/service/server/SWServerToContextConnection.h (modified) (1 diff)
-
Source/WebCore/workers/service/server/SWServerWorker.cpp (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp (modified) (1 diff)
-
Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h (modified) (1 diff)
-
Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp (modified) (2 diffs)
-
Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h (modified) (1 diff)
-
Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/TestExpectations
r281842 r281854 408 408 imported/w3c/web-platform-tests/html/cross-origin-opener-policy/navigate-to-aboutblank.https.html [ DumpJSConsoleLogInStdErr ] 409 409 imported/w3c/web-platform-tests/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html [ DumpJSConsoleLogInStdErr ] 410 imported/w3c/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https.html [ DumpJSConsoleLogInStdErr ] 410 411 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html [ DumpJSConsoleLogInStdErr ] 411 412 imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/integrity.html [ DumpJSConsoleLogInStdErr ] -
trunk/LayoutTests/imported/w3c/ChangeLog
r281845 r281854 1 2021-09-01 Chris Dumez <cdumez@apple.com> 2 3 Add support for ServiceWorkerGlobalScope.serviceWorker 4 https://bugs.webkit.org/show_bug.cgi?id=229720 5 6 Reviewed by Youenn Fablet. 7 8 Rebaseline WPT tests that are now passing. 9 10 * web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https-expected.txt: 11 * web-platform-tests/service-workers/service-worker/global-serviceworker.https.any.serviceworker-expected.txt: 12 1 13 2021-09-01 Myles C. Maxfield <mmaxfield@apple.com> 2 14 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https-expected.txt
r281775 r281854 1 1 2 Harness Error (TIMEOUT), message = null 2 PASS opener:basic, openee:basic, sw:basic 3 PASS opener:basic, openee:basic, sw:coi 4 PASS opener:basic, openee:coi, sw:basic 5 PASS opener:basic, openee:coi, sw:coi 6 PASS opener:coi, openee:basic, sw:basic 7 PASS opener:coi, openee:basic, sw:coi 8 PASS opener:coi, openee:coi, sw:basic 9 PASS opener:coi, openee:coi, sw:coi 3 10 4 TIMEOUT opener:basic, openee:basic, sw:basic Test timed out5 NOTRUN opener:basic, openee:basic, sw:coi6 NOTRUN opener:basic, openee:coi, sw:basic7 NOTRUN opener:basic, openee:coi, sw:coi8 NOTRUN opener:coi, openee:basic, sw:basic9 NOTRUN opener:coi, openee:basic, sw:coi10 NOTRUN opener:coi, openee:coi, sw:basic11 NOTRUN opener:coi, openee:coi, sw:coi12 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/global-serviceworker.https.any.serviceworker-expected.txt
r253457 r281854 1 1 2 FAIL First run assert_true: self.serviceWorker exists expected true got false 3 FAIL Can post message to self during startup assert_true: self.serviceWorker exists expected true got false 4 FAIL During install assert_true: self.serviceWorker exists expected true got false 5 FAIL During activate assert_true: self.serviceWorker exists expected true got false2 PASS First run 3 PASS Can post message to self during startup 4 PASS During install 5 PASS During activate 6 6 -
trunk/Source/WTF/wtf/URL.cpp
r280626 r281854 73 73 } 74 74 75 URL URL::isolatedCopy() const 75 URL URL::isolatedCopy() const & 76 76 { 77 77 URL result = *this; 78 78 result.m_string = result.m_string.isolatedCopy(); 79 return result; 80 } 81 82 URL URL::isolatedCopy() && 83 { 84 URL result = *this; 85 result.m_string = WTFMove(result.m_string).isolatedCopy(); 79 86 return result; 80 87 } -
trunk/Source/WTF/wtf/URL.h
r281258 r281854 76 76 // thread. Since the underlying StringImpl objects are immutable, there's 77 77 // no other reason to ever prefer isolatedCopy() over plain old assignment. 78 WTF_EXPORT_PRIVATE URL isolatedCopy() const; 78 WTF_EXPORT_PRIVATE URL isolatedCopy() const &; 79 WTF_EXPORT_PRIVATE URL isolatedCopy() &&; 79 80 80 81 bool isNull() const; -
trunk/Source/WebCore/ChangeLog
r281852 r281854 1 2021-09-01 Chris Dumez <cdumez@apple.com> 2 3 Add support for ServiceWorkerGlobalScope.serviceWorker 4 https://bugs.webkit.org/show_bug.cgi?id=229720 5 6 Reviewed by Youenn Fablet. 7 8 Add support for ServiceWorkerGlobalScope.serviceWorker: 9 - https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-serviceworker 10 11 Also add support for the "parsed" initial ServiceWorkerState: 12 - https://w3c.github.io/ServiceWorker/#enumdef-serviceworkerstate 13 14 No new tests, rebaselined existing tests. 15 16 * workers/service/ServiceWorker.idl: 17 * workers/service/ServiceWorkerGlobalScope.cpp: 18 (WebCore::ServiceWorkerGlobalScope::create): 19 (WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope): 20 * workers/service/ServiceWorkerGlobalScope.h: 21 * workers/service/ServiceWorkerGlobalScope.idl: 22 * workers/service/ServiceWorkerTypes.h: 23 * workers/service/context/ServiceWorkerThread.cpp: 24 (WebCore::ServiceWorkerThread::ServiceWorkerThread): 25 (WebCore::ServiceWorkerThread::createWorkerGlobalScope): 26 * workers/service/context/ServiceWorkerThread.h: 27 * workers/service/context/ServiceWorkerThreadProxy.cpp: 28 (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): 29 * workers/service/context/ServiceWorkerThreadProxy.h: 30 * workers/service/server/SWServer.cpp: 31 (WebCore::SWServer::installContextData): 32 (WebCore::SWServer::runServiceWorker): 33 * workers/service/server/SWServerRegistration.cpp: 34 (WebCore::SWServerRegistration::clear): 35 * workers/service/server/SWServerToContextConnection.h: 36 * workers/service/server/SWServerWorker.cpp: 37 (WebCore::SWServerWorker::SWServerWorker): 38 1 39 2021-09-01 Eric Carlson <eric.carlson@apple.com> 2 40 -
trunk/Source/WebCore/loader/CrossOriginEmbedderPolicy.cpp
r281055 r281854 65 65 } 66 66 67 CrossOriginEmbedderPolicy CrossOriginEmbedderPolicy::isolatedCopy() const 67 CrossOriginEmbedderPolicy CrossOriginEmbedderPolicy::isolatedCopy() const & 68 68 { 69 69 return { … … 72 72 reportOnlyValue, 73 73 reportOnlyReportingEndpoint.isolatedCopy() 74 }; 75 } 76 77 CrossOriginEmbedderPolicy CrossOriginEmbedderPolicy::isolatedCopy() && 78 { 79 return { 80 value, 81 WTFMove(reportingEndpoint).isolatedCopy(), 82 reportOnlyValue, 83 WTFMove(reportOnlyReportingEndpoint).isolatedCopy() 74 84 }; 75 85 } -
trunk/Source/WebCore/loader/CrossOriginEmbedderPolicy.h
r281055 r281854 46 46 String reportOnlyReportingEndpoint; 47 47 48 CrossOriginEmbedderPolicy isolatedCopy() const; 48 CrossOriginEmbedderPolicy isolatedCopy() const &; 49 CrossOriginEmbedderPolicy isolatedCopy() &&; 49 50 template<class Encoder> void encode(Encoder&) const; 50 51 template<class Decoder> static std::optional<CrossOriginEmbedderPolicy> decode(Decoder&); -
trunk/Source/WebCore/page/SecurityOriginData.cpp
r278253 r281854 116 116 } 117 117 118 SecurityOriginData SecurityOriginData::isolatedCopy() const 118 SecurityOriginData SecurityOriginData::isolatedCopy() const & 119 119 { 120 120 SecurityOriginData result; … … 122 122 result.protocol = protocol.isolatedCopy(); 123 123 result.host = host.isolatedCopy(); 124 result.port = port; 125 126 return result; 127 } 128 129 SecurityOriginData SecurityOriginData::isolatedCopy() && 130 { 131 SecurityOriginData result; 132 133 result.protocol = WTFMove(protocol).isolatedCopy(); 134 result.host = WTFMove(host).isolatedCopy(); 124 135 result.port = port; 125 136 -
trunk/Source/WebCore/page/SecurityOriginData.h
r278253 r281854 65 65 std::optional<uint16_t> port; 66 66 67 WEBCORE_EXPORT SecurityOriginData isolatedCopy() const; 67 WEBCORE_EXPORT SecurityOriginData isolatedCopy() const &; 68 WEBCORE_EXPORT SecurityOriginData isolatedCopy() &&; 68 69 69 70 // Serialize the security origin to a string that could be used as part of -
trunk/Source/WebCore/workers/service/ServiceWorker.idl
r281808 r281854 46 46 47 47 enum ServiceWorkerState { 48 "parsed", 48 49 "installing", 49 50 "installed", -
trunk/Source/WebCore/workers/service/ServiceWorkerContextData.cpp
r280953 r281854 32 32 namespace WebCore { 33 33 34 ServiceWorkerContextData ServiceWorkerContextData::isolatedCopy() const 34 ServiceWorkerContextData ServiceWorkerContextData::isolatedCopy() const & 35 35 { 36 36 return { … … 51 51 } 52 52 53 ServiceWorkerContextData ServiceWorkerContextData::isolatedCopy() && 54 { 55 return { 56 jobDataIdentifier, 57 WTFMove(registration).isolatedCopy(), 58 serviceWorkerIdentifier, 59 WTFMove(script).isolatedCopy(), 60 WTFMove(certificateInfo).isolatedCopy(), 61 WTFMove(contentSecurityPolicy).isolatedCopy(), 62 WTFMove(crossOriginEmbedderPolicy).isolatedCopy(), 63 WTFMove(referrerPolicy).isolatedCopy(), 64 WTFMove(scriptURL).isolatedCopy(), 65 workerType, 66 loadedFromDisk, 67 lastNavigationWasAppInitiated, 68 crossThreadCopy(WTFMove(scriptResourceMap)) 69 }; 70 } 71 53 72 } // namespace WebCore 54 73 -
trunk/Source/WebCore/workers/service/ServiceWorkerContextData.h
r280953 r281854 98 98 template<class Decoder> static std::optional<ServiceWorkerContextData> decode(Decoder&); 99 99 100 ServiceWorkerContextData isolatedCopy() const; 100 ServiceWorkerContextData isolatedCopy() const &; 101 ServiceWorkerContextData isolatedCopy() &&; 101 102 }; 102 103 -
trunk/Source/WebCore/workers/service/ServiceWorkerData.cpp
r225198 r281854 31 31 namespace WebCore { 32 32 33 ServiceWorkerData ServiceWorkerData::isolatedCopy() const 33 ServiceWorkerData ServiceWorkerData::isolatedCopy() const & 34 34 { 35 35 return { … … 42 42 } 43 43 44 ServiceWorkerData ServiceWorkerData::isolatedCopy() && 45 { 46 return { 47 identifier, 48 WTFMove(scriptURL).isolatedCopy(), 49 state, 50 type, 51 registrationIdentifier 52 }; 53 } 54 44 55 } // namespace WebCore 45 56 -
trunk/Source/WebCore/workers/service/ServiceWorkerData.h
r278253 r281854 42 42 ServiceWorkerRegistrationIdentifier registrationIdentifier; 43 43 44 ServiceWorkerData isolatedCopy() const; 44 ServiceWorkerData isolatedCopy() const &; 45 ServiceWorkerData isolatedCopy() &&; 45 46 46 47 template<class Encoder> void encode(Encoder&) const; -
trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp
r275465 r281854 33 33 #include "JSDOMPromiseDeferred.h" 34 34 #include "SWContextManager.h" 35 #include "ServiceWorker.h" 35 36 #include "ServiceWorkerClient.h" 36 37 #include "ServiceWorkerClients.h" … … 45 46 WTF_MAKE_ISO_ALLOCATED_IMPL(ServiceWorkerGlobalScope); 46 47 47 Ref<ServiceWorkerGlobalScope> ServiceWorkerGlobalScope::create(ServiceWorkerContextData&& data, const WorkerParameters& params, Ref<SecurityOrigin>&& origin, ServiceWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)48 Ref<ServiceWorkerGlobalScope> ServiceWorkerGlobalScope::create(ServiceWorkerContextData&& contextData, ServiceWorkerData&& workerData, const WorkerParameters& params, Ref<SecurityOrigin>&& origin, ServiceWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider) 48 49 { 49 auto scope = adoptRef(*new ServiceWorkerGlobalScope { WTFMove( data), params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider });50 auto scope = adoptRef(*new ServiceWorkerGlobalScope { WTFMove(contextData), WTFMove(workerData), params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider }); 50 51 scope->applyContentSecurityPolicyResponseHeaders(params.contentSecurityPolicyResponseHeaders); 51 52 return scope; 52 53 } 53 54 54 ServiceWorkerGlobalScope::ServiceWorkerGlobalScope(ServiceWorkerContextData&& data, const WorkerParameters& params, Ref<SecurityOrigin>&& origin, ServiceWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)55 ServiceWorkerGlobalScope::ServiceWorkerGlobalScope(ServiceWorkerContextData&& contextData, ServiceWorkerData&& workerData, const WorkerParameters& params, Ref<SecurityOrigin>&& origin, ServiceWorkerThread& thread, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider) 55 56 : WorkerGlobalScope(WorkerThreadType::ServiceWorker, params, WTFMove(origin), thread, WTFMove(topOrigin), connectionProxy, socketProvider) 56 , m_contextData(WTFMove( data))57 , m_contextData(WTFMove(contextData)) 57 58 , m_registration(ServiceWorkerRegistration::getOrCreate(*this, navigator().serviceWorker(), WTFMove(m_contextData.registration))) 59 , m_serviceWorker(ServiceWorker::getOrCreate(*this, WTFMove(workerData))) 58 60 , m_clients(ServiceWorkerClients::create()) 59 61 { -
trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.h
r275650 r281854 46 46 WTF_MAKE_ISO_ALLOCATED(ServiceWorkerGlobalScope); 47 47 public: 48 static Ref<ServiceWorkerGlobalScope> create(ServiceWorkerContextData&&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);48 static Ref<ServiceWorkerGlobalScope> create(ServiceWorkerContextData&&, ServiceWorkerData&&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*); 49 49 50 50 ~ServiceWorkerGlobalScope(); … … 54 54 ServiceWorkerClients& clients() { return m_clients.get(); } 55 55 ServiceWorkerRegistration& registration() { return m_registration.get(); } 56 ServiceWorker& serviceWorker() { return m_serviceWorker.get(); } 56 57 57 58 void skipWaiting(Ref<DeferredPromise>&&); … … 78 79 79 80 private: 80 ServiceWorkerGlobalScope(ServiceWorkerContextData&&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);81 ServiceWorkerGlobalScope(ServiceWorkerContextData&&, ServiceWorkerData&&, const WorkerParameters&, Ref<SecurityOrigin>&&, ServiceWorkerThread&, Ref<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*); 81 82 82 83 bool hasPendingEvents() const { return !m_extendedEvents.isEmpty(); } … … 84 85 ServiceWorkerContextData m_contextData; 85 86 Ref<ServiceWorkerRegistration> m_registration; 87 Ref<ServiceWorker> m_serviceWorker; 86 88 Ref<ServiceWorkerClients> m_clients; 87 89 HashMap<ServiceWorkerClientIdentifier, ServiceWorkerClient*> m_clientMap; -
trunk/Source/WebCore/workers/service/ServiceWorkerGlobalScope.idl
r277830 r281854 35 35 [SameObject] readonly attribute ServiceWorkerClients clients; 36 36 [SameObject] readonly attribute ServiceWorkerRegistration registration; 37 [SameObject] readonly attribute ServiceWorker serviceWorker; 37 38 38 39 [NewObject] Promise<undefined> skipWaiting(); -
trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp
r278253 r281854 31 31 namespace WebCore { 32 32 33 ServiceWorkerRegistrationData ServiceWorkerRegistrationData::isolatedCopy() const 33 ServiceWorkerRegistrationData ServiceWorkerRegistrationData::isolatedCopy() const & 34 34 { 35 35 return { … … 39 39 updateViaCache, 40 40 lastUpdateTime, 41 installingWorker ? std::optional<ServiceWorkerData>(installingWorker->isolatedCopy()) : std::nullopt, 42 waitingWorker ? std::optional<ServiceWorkerData>(waitingWorker->isolatedCopy()) : std::nullopt, 43 activeWorker ? std::optional<ServiceWorkerData>(activeWorker->isolatedCopy()) : std::nullopt, 41 crossThreadCopy(installingWorker), 42 crossThreadCopy(waitingWorker), 43 crossThreadCopy(activeWorker), 44 }; 45 } 46 47 ServiceWorkerRegistrationData ServiceWorkerRegistrationData::isolatedCopy() && 48 { 49 return { 50 WTFMove(key).isolatedCopy(), 51 identifier, 52 WTFMove(scopeURL).isolatedCopy(), 53 updateViaCache, 54 lastUpdateTime, 55 crossThreadCopy(WTFMove(installingWorker)), 56 crossThreadCopy(WTFMove(waitingWorker)), 57 crossThreadCopy(WTFMove(activeWorker)), 44 58 }; 45 59 } -
trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationData.h
r278253 r281854 50 50 std::optional<ServiceWorkerData> activeWorker; 51 51 52 ServiceWorkerRegistrationData isolatedCopy() const; 52 ServiceWorkerRegistrationData isolatedCopy() const &; 53 ServiceWorkerRegistrationData isolatedCopy() &&; 53 54 54 55 template<class Encoder> void encode(Encoder&) const; -
trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationKey.cpp
r278253 r281854 61 61 } 62 62 63 ServiceWorkerRegistrationKey ServiceWorkerRegistrationKey::isolatedCopy() const 63 ServiceWorkerRegistrationKey ServiceWorkerRegistrationKey::isolatedCopy() const & 64 64 { 65 65 return { m_topOrigin.isolatedCopy(), m_scope.isolatedCopy() }; 66 } 67 68 ServiceWorkerRegistrationKey ServiceWorkerRegistrationKey::isolatedCopy() && 69 { 70 return { WTFMove(m_topOrigin).isolatedCopy(), WTFMove(m_scope).isolatedCopy() }; 66 71 } 67 72 -
trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h
r278253 r281854 54 54 bool relatesToOrigin(const SecurityOriginData&) const; 55 55 56 ServiceWorkerRegistrationKey isolatedCopy() const; 56 ServiceWorkerRegistrationKey isolatedCopy() const &; 57 ServiceWorkerRegistrationKey isolatedCopy() &&; 57 58 58 59 template<class Encoder> void encode(Encoder&) const; -
trunk/Source/WebCore/workers/service/ServiceWorkerTypes.h
r249832 r281854 47 47 48 48 enum class ServiceWorkerState : uint8_t { 49 Parsed, 49 50 Installing, 50 51 Installed, … … 106 107 using values = EnumValues< 107 108 WebCore::ServiceWorkerState, 109 WebCore::ServiceWorkerState::Parsed, 108 110 WebCore::ServiceWorkerState::Installing, 109 111 WebCore::ServiceWorkerState::Installed, -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp
r280953 r281854 74 74 // FIXME: Use valid runtime flags 75 75 76 ServiceWorkerThread::ServiceWorkerThread(ServiceWorkerContextData&& data, String&& userAgent, const Settings::Values& settingsValues, WorkerLoaderProxy& loaderProxy, WorkerDebuggerProxy& debuggerProxy, IDBClient::IDBConnectionProxy* idbConnectionProxy, SocketProvider* socketProvider) 77 : WorkerThread({ data.scriptURL, emptyString(), "serviceworker:" + Inspector::IdentifiersFactory::createIdentifier(), WTFMove(userAgent), platformStrategies()->loaderStrategy()->isOnLine(), data.contentSecurityPolicy, false, data.crossOriginEmbedderPolicy, MonotonicTime::now(), { }, data.workerType, FetchRequestCredentials::Omit, settingsValues }, data.script, loaderProxy, debuggerProxy, DummyServiceWorkerThreadProxy::shared(), WorkerThreadStartMode::Normal, data.registration.key.topOrigin().securityOrigin().get(), idbConnectionProxy, socketProvider, JSC::RuntimeFlags::createAllEnabled()) 78 , m_serviceWorkerIdentifier(data.serviceWorkerIdentifier) 79 , m_jobDataIdentifier(data.jobDataIdentifier) 80 , m_data(crossThreadCopy(data)) 76 ServiceWorkerThread::ServiceWorkerThread(ServiceWorkerContextData&& contextData, ServiceWorkerData&& workerData, String&& userAgent, const Settings::Values& settingsValues, WorkerLoaderProxy& loaderProxy, WorkerDebuggerProxy& debuggerProxy, IDBClient::IDBConnectionProxy* idbConnectionProxy, SocketProvider* socketProvider) 77 : WorkerThread({ contextData.scriptURL, emptyString(), "serviceworker:" + Inspector::IdentifiersFactory::createIdentifier(), WTFMove(userAgent), platformStrategies()->loaderStrategy()->isOnLine(), contextData.contentSecurityPolicy, false, contextData.crossOriginEmbedderPolicy, MonotonicTime::now(), { }, contextData.workerType, FetchRequestCredentials::Omit, settingsValues }, contextData.script, loaderProxy, debuggerProxy, DummyServiceWorkerThreadProxy::shared(), WorkerThreadStartMode::Normal, contextData.registration.key.topOrigin().securityOrigin().get(), idbConnectionProxy, socketProvider, JSC::RuntimeFlags::createAllEnabled()) 78 , m_serviceWorkerIdentifier(contextData.serviceWorkerIdentifier) 79 , m_jobDataIdentifier(contextData.jobDataIdentifier) 80 , m_contextData(crossThreadCopy(WTFMove(contextData))) 81 , m_workerData(crossThreadCopy(WTFMove(workerData))) 81 82 , m_workerObjectProxy(DummyServiceWorkerThreadProxy::shared()) 82 83 , m_heartBeatTimeout(SWContextManager::singleton().connection()->shouldUseShortTimeout() ? heartBeatTimeoutForTest : heartBeatTimeout) … … 91 92 Ref<WorkerGlobalScope> ServiceWorkerThread::createWorkerGlobalScope(const WorkerParameters& params, Ref<SecurityOrigin>&& origin, Ref<SecurityOrigin>&& topOrigin) 92 93 { 93 RELEASE_ASSERT(m_ data);94 return ServiceWorkerGlobalScope::create(*std::exchange(m_ data, std::nullopt), params, WTFMove(origin), *this, WTFMove(topOrigin), idbConnectionProxy(), socketProvider());94 RELEASE_ASSERT(m_contextData); 95 return ServiceWorkerGlobalScope::create(*std::exchange(m_contextData, std::nullopt), *std::exchange(m_workerData, std::nullopt), params, WTFMove(origin), *this, WTFMove(topOrigin), idbConnectionProxy(), socketProvider()); 95 96 } 96 97 -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h
r278253 r281854 80 80 81 81 private: 82 WEBCORE_EXPORT ServiceWorkerThread(ServiceWorkerContextData&&, S tring&& userAgent, const Settings::Values&, WorkerLoaderProxy&, WorkerDebuggerProxy&, IDBClient::IDBConnectionProxy*, SocketProvider*);82 WEBCORE_EXPORT ServiceWorkerThread(ServiceWorkerContextData&&, ServiceWorkerData&&, String&& userAgent, const Settings::Values&, WorkerLoaderProxy&, WorkerDebuggerProxy&, IDBClient::IDBConnectionProxy*, SocketProvider*); 83 83 84 84 bool isServiceWorkerThread() const final { return true; } … … 96 96 ServiceWorkerIdentifier m_serviceWorkerIdentifier; 97 97 std::optional<ServiceWorkerJobDataIdentifier> m_jobDataIdentifier; 98 std::optional<ServiceWorkerContextData> m_data; // Becomes std::nullopt after the ServiceWorkerGlobalScope has been created. 98 std::optional<ServiceWorkerContextData> m_contextData; // Becomes std::nullopt after the ServiceWorkerGlobalScope has been created. 99 std::optional<ServiceWorkerData> m_workerData; // Becomes std::nullopt after the ServiceWorkerGlobalScope has been created. 99 100 WorkerObjectProxy& m_workerObjectProxy; 100 101 bool m_doesHandleFetch { false }; -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp
r281831 r281854 94 94 } 95 95 96 ServiceWorkerThreadProxy::ServiceWorkerThreadProxy(PageConfiguration&& pageConfiguration, ServiceWorkerContextData&& data, String&& userAgent, CacheStorageProvider& cacheStorageProvider, StorageBlockingPolicy storageBlockingPolicy)97 : m_page(createPageForServiceWorker(WTFMove(pageConfiguration), data, storageBlockingPolicy))96 ServiceWorkerThreadProxy::ServiceWorkerThreadProxy(PageConfiguration&& pageConfiguration, ServiceWorkerContextData&& contextData, ServiceWorkerData&& workerData, String&& userAgent, CacheStorageProvider& cacheStorageProvider, StorageBlockingPolicy storageBlockingPolicy) 97 : m_page(createPageForServiceWorker(WTFMove(pageConfiguration), contextData, storageBlockingPolicy)) 98 98 , m_document(*m_page->mainFrame().document()) 99 99 #if ENABLE(REMOTE_INSPECTOR) 100 , m_remoteDebuggable(makeUnique<ServiceWorkerDebuggable>(*this, data))100 , m_remoteDebuggable(makeUnique<ServiceWorkerDebuggable>(*this, contextData)) 101 101 #endif 102 , m_serviceWorkerThread(ServiceWorkerThread::create(WTFMove( data), WTFMove(userAgent), m_document->settingsValues(), *this, *this, idbConnectionProxy(m_document), m_document->socketProvider()))102 , m_serviceWorkerThread(ServiceWorkerThread::create(WTFMove(contextData), WTFMove(workerData), WTFMove(userAgent), m_document->settingsValues(), *this, *this, idbConnectionProxy(m_document), m_document->socketProvider())) 103 103 , m_cacheStorageProvider(cacheStorageProvider) 104 104 , m_inspectorProxy(*this) -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h
r279750 r281854 86 86 87 87 private: 88 WEBCORE_EXPORT ServiceWorkerThreadProxy(PageConfiguration&&, ServiceWorkerContextData&&, S tring&& userAgent, CacheStorageProvider&, StorageBlockingPolicy);88 WEBCORE_EXPORT ServiceWorkerThreadProxy(PageConfiguration&&, ServiceWorkerContextData&&, ServiceWorkerData&&, String&& userAgent, CacheStorageProvider&, StorageBlockingPolicy); 89 89 90 90 WEBCORE_EXPORT static void networkStateChanged(bool isOnLine); -
trunk/Source/WebCore/workers/service/server/SWServer.cpp
r280953 r281854 728 728 worker->setState(SWServerWorker::State::Running); 729 729 auto userAgent = worker->userAgent(); 730 auto result = m_runningOrTerminatingWorkers.add(data.serviceWorkerIdentifier, WTFMove(worker));730 auto result = m_runningOrTerminatingWorkers.add(data.serviceWorkerIdentifier, worker.copyRef()); 731 731 ASSERT_UNUSED(result, result.isNewEntry); 732 732 733 connection->installServiceWorkerContext(data, userAgent);733 connection->installServiceWorkerContext(data, worker->data(), userAgent); 734 734 } 735 735 … … 799 799 ASSERT(contextConnection); 800 800 801 contextConnection->installServiceWorkerContext(worker->contextData(), worker-> userAgent());801 contextConnection->installServiceWorkerContext(worker->contextData(), worker->data(), worker->userAgent()); 802 802 803 803 return true; -
trunk/Source/WebCore/workers/service/server/SWServerRegistration.cpp
r279750 r281854 234 234 { 235 235 if (m_preInstallationWorker) { 236 ASSERT(m_preInstallationWorker->state() == ServiceWorkerState:: Redundant);236 ASSERT(m_preInstallationWorker->state() == ServiceWorkerState::Parsed); 237 237 m_preInstallationWorker->terminate(); 238 238 m_preInstallationWorker = nullptr; -
trunk/Source/WebCore/workers/service/server/SWServerToContextConnection.h
r279750 r281854 52 52 53 53 // Messages to the SW host process 54 virtual void installServiceWorkerContext(const ServiceWorkerContextData&, const S tring& userAgent) = 0;54 virtual void installServiceWorkerContext(const ServiceWorkerContextData&, const ServiceWorkerData&, const String& userAgent) = 0; 55 55 virtual void updateAppInitiatedValue(ServiceWorkerIdentifier, LastNavigationWasAppInitiated) = 0; 56 56 virtual void fireInstallEvent(ServiceWorkerIdentifier) = 0; -
trunk/Source/WebCore/workers/service/server/SWServerWorker.cpp
r280953 r281854 55 55 , m_registrationKey(registration.key()) 56 56 , m_registration(makeWeakPtr(registration)) 57 , m_data { identifier, scriptURL, ServiceWorkerState:: Redundant, type, registration.identifier() }57 , m_data { identifier, scriptURL, ServiceWorkerState::Parsed, type, registration.identifier() } 58 58 , m_script(script) 59 59 , m_certificateInfo(certificateInfo) -
trunk/Source/WebKit/ChangeLog
r281841 r281854 1 2021-09-01 Chris Dumez <cdumez@apple.com> 2 3 Add support for ServiceWorkerGlobalScope.serviceWorker 4 https://bugs.webkit.org/show_bug.cgi?id=229720 5 6 Reviewed by Youenn Fablet. 7 8 Add support for ServiceWorkerGlobalScope.serviceWorker: 9 - https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-serviceworker 10 11 Also add support for the "parsed" initial ServiceWorkerState: 12 - https://w3c.github.io/ServiceWorker/#enumdef-serviceworkerstate 13 14 * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: 15 (WebKit::WebSWServerToContextConnection::installServiceWorkerContext): 16 * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: 17 * WebProcess/Storage/WebSWContextManagerConnection.cpp: 18 (WebKit::WebSWContextManagerConnection::installServiceWorker): 19 * WebProcess/Storage/WebSWContextManagerConnection.h: 20 * WebProcess/Storage/WebSWContextManagerConnection.messages.in: 21 1 22 2021-09-01 Tomoki Imai <Tomoki.Imai@sony.com> 2 23 -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp
r279750 r281854 88 88 } 89 89 90 void WebSWServerToContextConnection::installServiceWorkerContext(const ServiceWorkerContextData& data, const String& userAgent)90 void WebSWServerToContextConnection::installServiceWorkerContext(const ServiceWorkerContextData& contextData, const ServiceWorkerData& workerData, const String& userAgent) 91 91 { 92 send(Messages::WebSWContextManagerConnection::InstallServiceWorker { data, userAgent });92 send(Messages::WebSWContextManagerConnection::InstallServiceWorker { contextData, workerData, userAgent }); 93 93 } 94 94 -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h
r279750 r281854 86 86 87 87 // Messages to the SW host WebProcess 88 void installServiceWorkerContext(const WebCore::ServiceWorkerContextData&, const String& userAgent) final;88 void installServiceWorkerContext(const WebCore::ServiceWorkerContextData&, const WebCore::ServiceWorkerData&, const String& userAgent) final; 89 89 void updateAppInitiatedValue(WebCore::ServiceWorkerIdentifier, WebCore::LastNavigationWasAppInitiated) final; 90 90 void fireInstallEvent(WebCore::ServiceWorkerIdentifier) final; -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
r281831 r281854 142 142 } 143 143 144 void WebSWContextManagerConnection::installServiceWorker(ServiceWorkerContextData&& data, String&& userAgent)144 void WebSWContextManagerConnection::installServiceWorker(ServiceWorkerContextData&& contextData, ServiceWorkerData&& workerData, String&& userAgent) 145 145 { 146 146 auto pageConfiguration = pageConfigurationWithEmptyClients(WebProcess::singleton().sessionID()); … … 160 160 161 161 #if !RELEASE_LOG_DISABLED 162 auto serviceWorkerIdentifier = data.serviceWorkerIdentifier;162 auto serviceWorkerIdentifier = contextData.serviceWorkerIdentifier; 163 163 #endif 164 164 165 auto lastNavigationWasAppInitiated = data.lastNavigationWasAppInitiated;166 auto serviceWorkerThreadProxy = ServiceWorkerThreadProxy::create(WTFMove(pageConfiguration), WTFMove( data), WTFMove(effectiveUserAgent), WebProcess::singleton().cacheStorageProvider(), m_storageBlockingPolicy);165 auto lastNavigationWasAppInitiated = contextData.lastNavigationWasAppInitiated; 166 auto serviceWorkerThreadProxy = ServiceWorkerThreadProxy::create(WTFMove(pageConfiguration), WTFMove(contextData), WTFMove(workerData), WTFMove(effectiveUserAgent), WebProcess::singleton().cacheStorageProvider(), m_storageBlockingPolicy); 167 167 168 168 if (lastNavigationWasAppInitiated) -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
r281398 r281854 87 87 void serviceWorkerStarted(std::optional<WebCore::ServiceWorkerJobDataIdentifier>, WebCore::ServiceWorkerIdentifier, bool doesHandleFetch) final; 88 88 void serviceWorkerFailedToStart(std::optional<WebCore::ServiceWorkerJobDataIdentifier>, WebCore::ServiceWorkerIdentifier, const String& exceptionMessage) final; 89 void installServiceWorker(WebCore::ServiceWorkerContextData&&, String&& userAgent);89 void installServiceWorker(WebCore::ServiceWorkerContextData&&, WebCore::ServiceWorkerData&&, String&& userAgent); 90 90 void updateAppInitiatedValue(WebCore::ServiceWorkerIdentifier, WebCore::LastNavigationWasAppInitiated); 91 91 void startFetch(WebCore::SWServerConnectionIdentifier, WebCore::ServiceWorkerIdentifier, WebCore::FetchIdentifier, WebCore::ResourceRequest&&, WebCore::FetchOptions&&, IPC::FormDataReference&&, String&& referrer); -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in
r279750 r281854 24 24 25 25 messages -> WebSWContextManagerConnection NotRefCounted { 26 InstallServiceWorker(struct WebCore::ServiceWorkerContextData contextData, String userAgent)26 InstallServiceWorker(struct WebCore::ServiceWorkerContextData contextData, struct WebCore::ServiceWorkerData workerData, String userAgent) 27 27 UpdateAppInitiatedValue(WebCore::ServiceWorkerIdentifier serviceWorkerIdentifier, enum:bool WebCore::LastNavigationWasAppInitiated lastNavigationWasAppInitiated) 28 28 StartFetch(WebCore::SWServerConnectionIdentifier serverConnectionIdentifier, WebCore::ServiceWorkerIdentifier serviceWorkerIdentifier, WebCore::FetchIdentifier fetchIdentifier, WebCore::ResourceRequest request, struct WebCore::FetchOptions options, IPC::FormDataReference requestBody, String referrer)
Note: See TracChangeset
for help on using the changeset viewer.