Changeset 225760 in webkit
- Timestamp:
- Dec 11, 2017 3:24:51 PM (6 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 deleted
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r225757 r225760 1 2017-12-11 Chris Dumez <cdumez@apple.com> 2 3 Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData 4 https://bugs.webkit.org/show_bug.cgi?id=180669 5 6 Reviewed by Youenn Fablet. 7 8 Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData, for consistency with 9 ServiceWorkerIdentifier / ServiceWorkerData, and start simplifying the postMessage() code. 10 11 * WebCore.xcodeproj/project.pbxproj: 12 * dom/Document.cpp: 13 (WebCore::Document::setServiceWorkerConnection): 14 * workers/service/SWClientConnection.h: 15 * workers/service/ServiceWorker.cpp: 16 (WebCore::ServiceWorker::postMessage): 17 * workers/service/ServiceWorkerClient.cpp: 18 (WebCore::ServiceWorkerClient::getOrCreate): 19 (WebCore::ServiceWorkerClient::ServiceWorkerClient): 20 * workers/service/ServiceWorkerClient.h: 21 (WebCore::ServiceWorkerClient::identifier const): 22 * workers/service/ServiceWorkerClientData.cpp: 23 (WebCore::ServiceWorkerClientData::isolatedCopy const): 24 (WebCore::ServiceWorkerClientData::from): 25 * workers/service/ServiceWorkerClientData.h: 26 (WebCore::ServiceWorkerClientData::encode const): 27 (WebCore::ServiceWorkerClientData::decode): 28 * workers/service/ServiceWorkerClientInformation.h: Removed. 29 * workers/service/ServiceWorkerClients.cpp: 30 (WebCore::didFinishGetRequest): 31 (WebCore::ServiceWorkerClients::get): 32 (WebCore::matchAllCompleted): 33 * workers/service/ServiceWorkerTypes.h: 34 * workers/service/ServiceWorkerWindowClient.cpp: 35 (WebCore::ServiceWorkerWindowClient::ServiceWorkerWindowClient): 36 * workers/service/ServiceWorkerWindowClient.h: 37 * workers/service/context/SWContextManager.cpp: 38 (WebCore::SWContextManager::postMessageToServiceWorker): 39 * workers/service/context/SWContextManager.h: 40 * workers/service/context/ServiceWorkerThread.cpp: 41 (WebCore::ServiceWorkerThread::postMessageToServiceWorker): 42 * workers/service/context/ServiceWorkerThread.h: 43 * workers/service/server/SWServer.cpp: 44 (WebCore::SWServer::findClientByIdentifier): 45 (WebCore::SWServer::matchAll): 46 (WebCore::SWServer::claim): 47 (WebCore::SWServer::registerServiceWorkerClient): 48 * workers/service/server/SWServer.h: 49 * workers/service/server/SWServerToContextConnection.h: 50 * workers/service/server/SWServerWorker.h: 51 1 52 2017-12-11 Daniel Bates <dabates@apple.com> 2 53 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r225745 r225760 1038 1038 41BF700C0FE86F49005E8DEC /* MessagePortChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BF700A0FE86F49005E8DEC /* MessagePortChannel.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1039 1039 41BF70100FE86F61005E8DEC /* PlatformMessagePortChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BF700E0FE86F61005E8DEC /* PlatformMessagePortChannel.h */; }; 1040 41C68AF51FD2279000AAA3B3 /* ServiceWorkerClientInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C68AF31FD21E8E00AAA3B3 /* ServiceWorkerClientInformation.h */; settings = {ATTRIBUTES = (Private, ); }; };1041 1040 41C760B10EDE03D300C1655F /* ScriptState.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C760B00EDE03D300C1655F /* ScriptState.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1042 1041 41CAD71E1EA090A100178164 /* VideoToolBoxEncoderFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41CAD71C1EA0905700178164 /* VideoToolBoxEncoderFactory.cpp */; }; … … 7052 7051 41BF700D0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformMessagePortChannel.cpp; path = default/PlatformMessagePortChannel.cpp; sourceTree = "<group>"; }; 7053 7052 41BF700E0FE86F61005E8DEC /* PlatformMessagePortChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformMessagePortChannel.h; path = default/PlatformMessagePortChannel.h; sourceTree = "<group>"; }; 7054 41C68AF31FD21E8E00AAA3B3 /* ServiceWorkerClientInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerClientInformation.h; sourceTree = "<group>"; };7055 7053 41C760B00EDE03D300C1655F /* ScriptState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptState.h; sourceTree = "<group>"; }; 7056 7054 41C7E1051E6A54360027B4DE /* CanvasCaptureMediaStreamTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasCaptureMediaStreamTrack.cpp; sourceTree = "<group>"; }; … … 17336 17334 8379363E1FBBB0A500C8023C /* ServiceWorkerClientData.h */, 17337 17335 837D46251FA2A8C50054E1FA /* ServiceWorkerClientIdentifier.h */, 17338 41C68AF31FD21E8E00AAA3B3 /* ServiceWorkerClientInformation.h */,17339 17336 413FC4CD1FD1DD8C00541C4B /* ServiceWorkerClientQueryOptions.h */, 17340 17337 46EF14211F97B7BA00C2A524 /* ServiceWorkerClients.cpp */, … … 29064 29061 8379363F1FBBB0B400C8023C /* ServiceWorkerClientData.h in Headers */, 29065 29062 837D46271FA2A8CE0054E1FA /* ServiceWorkerClientIdentifier.h in Headers */, 29066 41C68AF51FD2279000AAA3B3 /* ServiceWorkerClientInformation.h in Headers */,29067 29063 41519CB81FD1F02E007F623C /* ServiceWorkerClientQueryOptions.h in Headers */, 29068 29064 46EF142C1F97B7D800C2A524 /* ServiceWorkerClients.h in Headers */, -
trunk/Source/WebCore/dom/Document.cpp
r225702 r225760 7636 7636 7637 7637 auto controllingServiceWorkerIdentifier = activeServiceWorker() ? std::make_optional<ServiceWorkerIdentifier>(activeServiceWorker()->identifier()) : std::nullopt; 7638 m_serviceWorkerConnection->registerServiceWorkerClient(topOrigin(), identifier(), ServiceWorkerClientData::from(*this), controllingServiceWorkerIdentifier);7638 m_serviceWorkerConnection->registerServiceWorkerClient(topOrigin(), ServiceWorkerClientData::from(*this, *serviceWorkerConnection), controllingServiceWorkerIdentifier); 7639 7639 } 7640 7640 #endif -
trunk/Source/WebCore/workers/service/SWClientConnection.h
r225531 r225760 82 82 virtual void syncTerminateWorker(ServiceWorkerIdentifier) = 0; 83 83 84 virtual void registerServiceWorkerClient(const SecurityOrigin& topOrigin, DocumentIdentifier,const ServiceWorkerClientData&, const std::optional<ServiceWorkerIdentifier>&) = 0;84 virtual void registerServiceWorkerClient(const SecurityOrigin& topOrigin, const ServiceWorkerClientData&, const std::optional<ServiceWorkerIdentifier>&) = 0; 85 85 virtual void unregisterServiceWorkerClient(DocumentIdentifier) = 0; 86 86 -
trunk/Source/WebCore/workers/service/ServiceWorker.cpp
r225577 r225760 124 124 } 125 125 126 auto sourceClientData = ServiceWorkerClientData::from(context);127 126 auto& connection = ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(context.sessionID()); 127 // FIXME: We should be able to send only the client identifier and look up the clientData on server side. 128 auto sourceClientData = ServiceWorkerClientData::from(context, connection); 128 129 ServiceWorkerClientIdentifier sourceClientIdentifier { connection.serverConnectionIdentifier(), downcast<Document>(context).identifier() }; 129 130 connection.postMessageToServiceWorker(identifier(), message.releaseReturnValue(), WTFMove(sourceClientIdentifier), WTFMove(sourceClientData)); -
trunk/Source/WebCore/workers/service/ServiceWorkerClient.cpp
r225308 r225760 39 39 namespace WebCore { 40 40 41 Ref<ServiceWorkerClient> ServiceWorkerClient::getOrCreate(ServiceWorkerGlobalScope& context, ServiceWorkerClient Identifier identifier, ServiceWorkerClientData&& data)41 Ref<ServiceWorkerClient> ServiceWorkerClient::getOrCreate(ServiceWorkerGlobalScope& context, ServiceWorkerClientData&& data) 42 42 { 43 if (auto* client = context.serviceWorkerClient( identifier))43 if (auto* client = context.serviceWorkerClient(data.identifier)) 44 44 return *client; 45 45 46 46 if (data.type == ServiceWorkerClientType::Window) 47 return ServiceWorkerWindowClient::create(context, identifier,WTFMove(data));47 return ServiceWorkerWindowClient::create(context, WTFMove(data)); 48 48 49 return adoptRef(*new ServiceWorkerClient { context, identifier,WTFMove(data) });49 return adoptRef(*new ServiceWorkerClient { context, WTFMove(data) }); 50 50 } 51 51 52 ServiceWorkerClient::ServiceWorkerClient(ServiceWorkerGlobalScope& context, ServiceWorkerClient Identifier identifier, ServiceWorkerClientData&& data)52 ServiceWorkerClient::ServiceWorkerClient(ServiceWorkerGlobalScope& context, ServiceWorkerClientData&& data) 53 53 : ContextDestructionObserver(&context) 54 , m_identifier(identifier)55 54 , m_data(WTFMove(data)) 56 55 { -
trunk/Source/WebCore/workers/service/ServiceWorkerClient.h
r225308 r225760 49 49 using FrameType = ServiceWorkerClientFrameType; 50 50 51 static Ref<ServiceWorkerClient> getOrCreate(ServiceWorkerGlobalScope&, ServiceWorkerClient Identifier, ServiceWorkerClientData&&);51 static Ref<ServiceWorkerClient> getOrCreate(ServiceWorkerGlobalScope&, ServiceWorkerClientData&&); 52 52 53 53 ~ServiceWorkerClient(); … … 58 58 String id() const; 59 59 60 Identifier identifier() const { return m_ identifier; }60 Identifier identifier() const { return m_data.identifier; } 61 61 62 62 ExceptionOr<void> postMessage(ScriptExecutionContext&, JSC::JSValue message, Vector<JSC::Strong<JSC::JSObject>>&& transfer); 63 63 64 64 protected: 65 ServiceWorkerClient(ServiceWorkerGlobalScope&, ServiceWorkerClient Identifier, ServiceWorkerClientData&&);65 ServiceWorkerClient(ServiceWorkerGlobalScope&, ServiceWorkerClientData&&); 66 66 67 ServiceWorkerClientIdentifier m_identifier;68 67 ServiceWorkerClientData m_data; 69 68 }; -
trunk/Source/WebCore/workers/service/ServiceWorkerClientData.cpp
r225008 r225760 57 57 ServiceWorkerClientData ServiceWorkerClientData::isolatedCopy() const 58 58 { 59 return { type, frameType, url.isolatedCopy() };59 return { identifier, type, frameType, url.isolatedCopy() }; 60 60 } 61 61 62 ServiceWorkerClientData ServiceWorkerClientData::from(ScriptExecutionContext& context )62 ServiceWorkerClientData ServiceWorkerClientData::from(ScriptExecutionContext& context, SWClientConnection& connection) 63 63 { 64 64 bool isDocument = is<Document>(context); 65 RELEASE_ASSERT(isDocument); // We do not support dedicated workers as clients yet. 65 66 66 67 return { 68 { connection.serverConnectionIdentifier(), downcast<Document>(context).identifier() }, 67 69 isDocument ? ServiceWorkerClientType::Window : ServiceWorkerClientType::Worker, 68 70 toServiceWorkerClientFrameType(context), -
trunk/Source/WebCore/workers/service/ServiceWorkerClientData.h
r225008 r225760 35 35 namespace WebCore { 36 36 37 class SWClientConnection; 37 38 class ScriptExecutionContext; 38 39 39 40 struct ServiceWorkerClientData { 41 ServiceWorkerClientIdentifier identifier; 40 42 ServiceWorkerClientType type; 41 43 ServiceWorkerClientFrameType frameType; … … 44 46 ServiceWorkerClientData isolatedCopy() const; 45 47 46 static ServiceWorkerClientData from(ScriptExecutionContext& );48 static ServiceWorkerClientData from(ScriptExecutionContext&, SWClientConnection&); 47 49 48 50 template<class Encoder> void encode(Encoder&) const; … … 53 55 void ServiceWorkerClientData::encode(Encoder& encoder) const 54 56 { 55 encoder << type << frameType << url;57 encoder << identifier << type << frameType << url; 56 58 } 57 59 … … 59 61 std::optional<ServiceWorkerClientData> ServiceWorkerClientData::decode(Decoder& decoder) 60 62 { 63 std::optional<ServiceWorkerClientIdentifier> identifier; 64 decoder >> identifier; 65 if (!identifier) 66 return std::nullopt; 67 61 68 std::optional<ServiceWorkerClientType> type; 62 69 decoder >> type; … … 74 81 return std::nullopt; 75 82 76 return { { WTFMove(* type), WTFMove(*frameType), WTFMove(*url) } };83 return { { WTFMove(*identifier), WTFMove(*type), WTFMove(*frameType), WTFMove(*url) } }; 77 84 } 85 86 using ServiceWorkerClientsMatchAllCallback = WTF::CompletionHandler<void(Vector<ServiceWorkerClientData>&&)>; 78 87 79 88 } // namespace WebCore -
trunk/Source/WebCore/workers/service/ServiceWorkerClients.cpp
r225537 r225760 35 35 namespace WebCore { 36 36 37 static inline void didFinishGetRequest(ServiceWorkerGlobalScope& scope, DeferredPromise& promise, ServiceWorkerClientIdentifier identifier,ExceptionOr<std::optional<ServiceWorkerClientData>>&& clientData)37 static inline void didFinishGetRequest(ServiceWorkerGlobalScope& scope, DeferredPromise& promise, ExceptionOr<std::optional<ServiceWorkerClientData>>&& clientData) 38 38 { 39 39 if (clientData.hasException()) { … … 47 47 } 48 48 49 promise.resolve<IDLInterface<ServiceWorkerClient>>(ServiceWorkerClient::getOrCreate(scope, identifier,WTFMove(data.value())));49 promise.resolve<IDLInterface<ServiceWorkerClient>>(ServiceWorkerClient::getOrCreate(scope, WTFMove(data.value()))); 50 50 } 51 51 … … 66 66 callOnMainThread([promisePointer, serviceWorkerIdentifier, clientIdentifier] () { 67 67 auto connection = SWContextManager::singleton().connection(); 68 connection->findClientByIdentifier(serviceWorkerIdentifier, clientIdentifier, [promisePointer, serviceWorkerIdentifier , clientIdentifier] (auto&& clientData) {69 SWContextManager::singleton().postTaskToServiceWorker(serviceWorkerIdentifier, [promisePointer, clientIdentifier,data = crossThreadCopy(clientData)] (auto& context) mutable {68 connection->findClientByIdentifier(serviceWorkerIdentifier, clientIdentifier, [promisePointer, serviceWorkerIdentifier] (auto&& clientData) { 69 SWContextManager::singleton().postTaskToServiceWorker(serviceWorkerIdentifier, [promisePointer, data = crossThreadCopy(clientData)] (auto& context) mutable { 70 70 if (auto promise = context.clients().m_pendingPromises.take(promisePointer)) 71 didFinishGetRequest(context, *promise, clientIdentifier,WTFMove(data));71 didFinishGetRequest(context, *promise, WTFMove(data)); 72 72 }); 73 73 }); … … 76 76 77 77 78 static inline void matchAllCompleted(ServiceWorkerGlobalScope& scope, DeferredPromise& promise, Vector<ServiceWorkerClient Information>&& clientsData)78 static inline void matchAllCompleted(ServiceWorkerGlobalScope& scope, DeferredPromise& promise, Vector<ServiceWorkerClientData>&& clientsData) 79 79 { 80 auto clients = WTF::map(clientsData, [&] (auto&& client ) {81 return ServiceWorkerClient::getOrCreate(scope, client.identifier, WTFMove(client.data));80 auto clients = WTF::map(clientsData, [&] (auto&& clientData) { 81 return ServiceWorkerClient::getOrCreate(scope, WTFMove(clientData)); 82 82 }); 83 83 promise.resolve<IDLSequence<IDLInterface<ServiceWorkerClient>>>(WTFMove(clients)); -
trunk/Source/WebCore/workers/service/ServiceWorkerTypes.h
r225455 r225760 36 36 namespace WebCore { 37 37 38 struct ServiceWorkerData; 39 struct ServiceWorkerClientData; 40 38 41 enum class ServiceWorkerRegistrationState { 39 42 Installing = 0, … … 72 75 73 76 using DocumentOrWorkerIdentifier = Variant<DocumentIdentifier, ServiceWorkerIdentifier>; 77 78 using ServiceWorkerOrClientData = Variant<ServiceWorkerData, ServiceWorkerClientData>; 74 79 75 80 } // namespace WebCore -
trunk/Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp
r225308 r225760 33 33 namespace WebCore { 34 34 35 ServiceWorkerWindowClient::ServiceWorkerWindowClient(ServiceWorkerGlobalScope& context, ServiceWorkerClient Identifier identifier, ServiceWorkerClientData&& data)36 : ServiceWorkerClient(context, identifier,WTFMove(data))35 ServiceWorkerWindowClient::ServiceWorkerWindowClient(ServiceWorkerGlobalScope& context, ServiceWorkerClientData&& data) 36 : ServiceWorkerClient(context, WTFMove(data)) 37 37 { 38 38 } -
trunk/Source/WebCore/workers/service/ServiceWorkerWindowClient.h
r225308 r225760 38 38 class ServiceWorkerWindowClient final : public ServiceWorkerClient { 39 39 public: 40 static Ref<ServiceWorkerWindowClient> create(ServiceWorkerGlobalScope& context, ServiceWorkerClient Identifier identifier, ServiceWorkerClientData&& data)40 static Ref<ServiceWorkerWindowClient> create(ServiceWorkerGlobalScope& context, ServiceWorkerClientData&& data) 41 41 { 42 return adoptRef(*new ServiceWorkerWindowClient(context, identifier,WTFMove(data)));42 return adoptRef(*new ServiceWorkerWindowClient(context, WTFMove(data))); 43 43 } 44 44 … … 50 50 51 51 private: 52 ServiceWorkerWindowClient(ServiceWorkerGlobalScope&, ServiceWorkerClient Identifier, ServiceWorkerClientData&&);52 ServiceWorkerWindowClient(ServiceWorkerGlobalScope&, ServiceWorkerClientData&&); 53 53 }; 54 54 -
trunk/Source/WebCore/workers/service/context/SWContextManager.cpp
r225462 r225760 68 68 } 69 69 70 void SWContextManager::postMessageToServiceWorker(ServiceWorkerIdentifier destination, Ref<SerializedScriptValue>&& message, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData) 71 { 72 auto* serviceWorker = m_workerMap.get(destination); 73 ASSERT(serviceWorker); 74 ASSERT(!serviceWorker->isTerminatingOrTerminated()); 75 76 // FIXME: We should pass valid MessagePortChannels. 77 serviceWorker->thread().postMessageToServiceWorker(WTFMove(message), nullptr, sourceIdentifier, WTFMove(sourceData)); 78 } 79 80 void SWContextManager::postMessageToServiceWorker(ServiceWorkerIdentifier destination, Ref<SerializedScriptValue>&& message, ServiceWorkerData&& sourceData) 70 void SWContextManager::postMessageToServiceWorker(ServiceWorkerIdentifier destination, Ref<SerializedScriptValue>&& message, ServiceWorkerOrClientData&& sourceData) 81 71 { 82 72 auto* serviceWorker = m_workerMap.get(destination); -
trunk/Source/WebCore/workers/service/context/SWContextManager.h
r225537 r225760 29 29 30 30 #include "ExceptionOr.h" 31 #include "ServiceWorkerClient Information.h"31 #include "ServiceWorkerClientData.h" 32 32 #include "ServiceWorkerClientQueryOptions.h" 33 33 #include "ServiceWorkerIdentifier.h" … … 68 68 WEBCORE_EXPORT void registerServiceWorkerThreadForInstall(Ref<ServiceWorkerThreadProxy>&&); 69 69 WEBCORE_EXPORT ServiceWorkerThreadProxy* serviceWorkerThreadProxy(ServiceWorkerIdentifier) const; 70 WEBCORE_EXPORT void postMessageToServiceWorker(ServiceWorkerIdentifier destination, Ref<SerializedScriptValue>&& message, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData); 71 WEBCORE_EXPORT void postMessageToServiceWorker(ServiceWorkerIdentifier destination, Ref<SerializedScriptValue>&& message, ServiceWorkerData&& sourceData); 70 WEBCORE_EXPORT void postMessageToServiceWorker(ServiceWorkerIdentifier destination, Ref<SerializedScriptValue>&& message, ServiceWorkerOrClientData&& sourceData); 72 71 WEBCORE_EXPORT void fireInstallEvent(ServiceWorkerIdentifier); 73 72 WEBCORE_EXPORT void fireActivateEvent(ServiceWorkerIdentifier); -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.cpp
r225716 r225760 112 112 } 113 113 114 void ServiceWorkerThread::postMessageToServiceWorker(Ref<SerializedScriptValue>&& message, std::unique_ptr<MessagePortChannelArray>&& channels, ServiceWorker ClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData)114 void ServiceWorkerThread::postMessageToServiceWorker(Ref<SerializedScriptValue>&& message, std::unique_ptr<MessagePortChannelArray>&& channels, ServiceWorkerOrClientData&& sourceData) 115 115 { 116 runLoop().postTask([channels = WTFMove(channels), message = WTFMove(message), source Identifier, sourceData = sourceData.isolatedCopy()] (auto& context) mutable {116 runLoop().postTask([channels = WTFMove(channels), message = WTFMove(message), sourceData = WTFMove(sourceData)] (auto& context) mutable { 117 117 auto& serviceWorkerGlobalScope = downcast<ServiceWorkerGlobalScope>(context); 118 RefPtr<ServiceWorkerClient> source = ServiceWorkerClient::getOrCreate(serviceWorkerGlobalScope, sourceIdentifier, WTFMove(sourceData)); 119 auto sourceOrigin = SecurityOrigin::create(source->url()); 120 fireMessageEvent(serviceWorkerGlobalScope, WTFMove(message), WTFMove(channels), ExtendableMessageEventSource { source }, WTFMove(sourceOrigin)); 121 }); 122 } 123 124 void ServiceWorkerThread::postMessageToServiceWorker(Ref<SerializedScriptValue>&& message, std::unique_ptr<MessagePortChannelArray>&& channels, ServiceWorkerData&& sourceData) 125 { 126 runLoop().postTask([channels = WTFMove(channels), message = WTFMove(message), sourceData = sourceData.isolatedCopy()] (auto& context) mutable { 127 auto& serviceWorkerGlobalScope = downcast<ServiceWorkerGlobalScope>(context); 128 RefPtr<ServiceWorker> source = ServiceWorker::getOrCreate(serviceWorkerGlobalScope, WTFMove(sourceData)); 129 auto sourceOrigin = SecurityOrigin::create(source->scriptURL()); 130 fireMessageEvent(downcast<ServiceWorkerGlobalScope>(context), WTFMove(message), WTFMove(channels), ExtendableMessageEventSource { source }, WTFMove(sourceOrigin)); 118 RefPtr<SecurityOrigin> sourceOrigin; 119 ExtendableMessageEventSource source; 120 if (WTF::holds_alternative<ServiceWorkerClientData>(sourceData)) { 121 RefPtr<ServiceWorkerClient> sourceClient = ServiceWorkerClient::getOrCreate(serviceWorkerGlobalScope, WTFMove(WTF::get<ServiceWorkerClientData>(sourceData))); 122 sourceOrigin = SecurityOrigin::create(sourceClient->url()); 123 source = WTFMove(sourceClient); 124 } else { 125 RefPtr<ServiceWorker> sourceWorker = ServiceWorker::getOrCreate(serviceWorkerGlobalScope, WTFMove(WTF::get<ServiceWorkerData>(sourceData))); 126 sourceOrigin = SecurityOrigin::create(sourceWorker->scriptURL()); 127 source = WTFMove(sourceWorker); 128 } 129 fireMessageEvent(serviceWorkerGlobalScope, WTFMove(message), WTFMove(channels), ExtendableMessageEventSource { source }, sourceOrigin.releaseNonNull()); 131 130 }); 132 131 } -
trunk/Source/WebCore/workers/service/context/ServiceWorkerThread.h
r225716 r225760 59 59 WEBCORE_EXPORT void postFetchTask(Ref<ServiceWorkerFetch::Client>&&, ResourceRequest&&, FetchOptions&&); 60 60 WEBCORE_EXPORT void postFetchTask(Ref<ServiceWorkerFetch::Client>&&, std::optional<ServiceWorkerClientIdentifier>&&, ResourceRequest&&, FetchOptions&&); 61 WEBCORE_EXPORT void postMessageToServiceWorker(Ref<SerializedScriptValue>&&, std::unique_ptr<MessagePortChannelArray>&&, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData); 62 WEBCORE_EXPORT void postMessageToServiceWorker(Ref<SerializedScriptValue>&&, std::unique_ptr<MessagePortChannelArray>&&, ServiceWorkerData&& sourceData); 61 WEBCORE_EXPORT void postMessageToServiceWorker(Ref<SerializedScriptValue>&&, std::unique_ptr<MessagePortChannelArray>&&, ServiceWorkerOrClientData&& sourceData); 63 62 64 63 void fireInstallEvent(); -
trunk/Source/WebCore/workers/service/server/SWServer.cpp
r225717 r225760 347 347 }); 348 348 349 return (position != notFound) ? std::make_optional(clients[position] .data) : std::nullopt;349 return (position != notFound) ? std::make_optional(clients[position]) : std::nullopt; 350 350 } 351 351 … … 359 359 360 360 if (!options.includeUncontrolled) { 361 clients.removeAllMatching([&] (const auto& client ) {362 return worker.identifier() != m_clientToControllingWorker.get(client .identifier);361 clients.removeAllMatching([&] (const auto& clientData) { 362 return worker.identifier() != m_clientToControllingWorker.get(clientData.identifier); 363 363 }); 364 364 } 365 365 if (options.type != ServiceWorkerClientType::All) { 366 clients.removeAllMatching([&] (const auto& client ) {367 return options.type != client .data.type;366 clients.removeAllMatching([&] (const auto& clientData) { 367 return options.type != clientData.type; 368 368 }); 369 369 } … … 379 379 380 380 auto& clients = iterator->value.clients; 381 for (auto& client : clients) {382 auto* registration = doRegistrationMatching(origin.topOrigin, client .data.url);381 for (auto& clientData : clients) { 382 auto* registration = doRegistrationMatching(origin.topOrigin, clientData.url); 383 383 if (!(registration && registration->key() == worker.registrationKey())) 384 384 continue; 385 385 386 auto result = m_clientToControllingWorker.add(client .identifier, worker.identifier());386 auto result = m_clientToControllingWorker.add(clientData.identifier, worker.identifier()); 387 387 if (!result.isNewEntry) { 388 388 if (result.iterator->value == worker.identifier()) 389 389 continue; 390 390 if (auto* controllingRegistration = registrationFromServiceWorkerIdentifier(result.iterator->value)) 391 controllingRegistration->removeClientUsingRegistration(client .identifier);391 controllingRegistration->removeClientUsingRegistration(clientData.identifier); 392 392 result.iterator->value = worker.identifier(); 393 393 } 394 registration->controlClient(client .identifier);394 registration->controlClient(clientData.identifier); 395 395 } 396 396 } … … 688 688 } 689 689 690 void SWServer::registerServiceWorkerClient(ClientOrigin&& clientOrigin, ServiceWorkerClient Identifier clientIdentifier, ServiceWorkerClientData&& data, const std::optional<ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier)690 void SWServer::registerServiceWorkerClient(ClientOrigin&& clientOrigin, ServiceWorkerClientData&& data, const std::optional<ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier) 691 691 { 692 692 auto& clientsData = m_clients.ensure(WTFMove(clientOrigin), [] { … … 694 694 }).iterator->value; 695 695 696 clientsData.clients.append(ServiceWorkerClientInformation { clientIdentifier, WTFMove(data) });697 if (clientsData.terminateServiceWorkersTimer)698 696 auto clientIdentifier = data.identifier; 697 clientsData.clients.append(WTFMove(data)); 698 clientsData.terminateServiceWorkersTimer = nullptr; 699 699 700 700 if (!controllingServiceWorkerIdentifier) -
trunk/Source/WebCore/workers/service/server/SWServer.h
r225717 r225760 160 160 WEBCORE_EXPORT static HashSet<SWServer*>& allServers(); 161 161 162 WEBCORE_EXPORT void registerServiceWorkerClient(ClientOrigin&&, ServiceWorkerClient Identifier, ServiceWorkerClientData&&, const std::optional<ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier);162 WEBCORE_EXPORT void registerServiceWorkerClient(ClientOrigin&&, ServiceWorkerClientData&&, const std::optional<ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier); 163 163 WEBCORE_EXPORT void unregisterServiceWorkerClient(const ClientOrigin&, ServiceWorkerClientIdentifier); 164 164 … … 208 208 209 209 struct Clients { 210 Vector<ServiceWorkerClient Information> clients;210 Vector<ServiceWorkerClientData> clients; 211 211 std::unique_ptr<Timer> terminateServiceWorkersTimer; 212 212 }; -
trunk/Source/WebCore/workers/service/server/SWServerToContextConnection.h
r225703 r225760 42 42 struct ServiceWorkerClientData; 43 43 struct ServiceWorkerClientIdentifier; 44 struct ServiceWorkerClientInformation;45 44 struct ServiceWorkerContextData; 46 45 struct ServiceWorkerJobDataIdentifier; … … 59 58 virtual void syncTerminateWorker(ServiceWorkerIdentifier) = 0; 60 59 virtual void findClientByIdentifierCompleted(uint64_t requestIdentifier, const std::optional<ServiceWorkerClientData>&, bool hasSecurityError) = 0; 61 virtual void matchAllCompleted(uint64_t requestIdentifier, const Vector<ServiceWorkerClient Information>&) = 0;60 virtual void matchAllCompleted(uint64_t requestIdentifier, const Vector<ServiceWorkerClientData>&) = 0; 62 61 virtual void claimCompleted(uint64_t requestIdentifier) = 0; 63 62 virtual void didFinishSkipWaiting(uint64_t callbackID) = 0; -
trunk/Source/WebCore/workers/service/server/SWServerWorker.h
r225537 r225760 28 28 #if ENABLE(SERVICE_WORKER) 29 29 30 #include "ServiceWorkerClient Information.h"30 #include "ServiceWorkerClientData.h" 31 31 #include "ServiceWorkerData.h" 32 32 #include "ServiceWorkerIdentifier.h" -
trunk/Source/WebKit/ChangeLog
r225759 r225760 1 2017-12-11 Chris Dumez <cdumez@apple.com> 2 3 Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData 4 https://bugs.webkit.org/show_bug.cgi?id=180669 5 6 Reviewed by Youenn Fablet. 7 8 Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData, for consistency with 9 ServiceWorkerIdentifier / ServiceWorkerData, and start simplifying the postMessage() code. 10 11 * Scripts/webkit/messages.py: 12 (forward_declarations_and_headers): 13 (headers_for_type): 14 * Shared/WebCoreArgumentCoders.cpp: 15 (IPC::ArgumentCoder<ServiceWorkerOrClientData>::encode): 16 (IPC::ArgumentCoder<ServiceWorkerOrClientData>::decode): 17 * Shared/WebCoreArgumentCoders.h: 18 * StorageProcess/ServiceWorker/WebSWServerConnection.cpp: 19 (WebKit::WebSWServerConnection::~WebSWServerConnection): 20 (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient): 21 (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker): 22 (WebKit::WebSWServerConnection::registerServiceWorkerClient): 23 (WebKit::WebSWServerConnection::unregisterServiceWorkerClient): 24 * StorageProcess/ServiceWorker/WebSWServerConnection.h: 25 * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in: 26 * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp: 27 (WebKit::WebSWServerToContextConnection::matchAllCompleted): 28 * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h: 29 * WebProcess/Storage/WebSWClientConnection.cpp: 30 (WebKit::WebSWClientConnection::registerServiceWorkerClient): 31 (WebKit::WebSWClientConnection::unregisterServiceWorkerClient): 32 * WebProcess/Storage/WebSWClientConnection.h: 33 * WebProcess/Storage/WebSWContextManagerConnection.cpp: 34 (WebKit::WebSWContextManagerConnection::postMessageToServiceWorker): 35 (WebKit::WebSWContextManagerConnection::matchAllCompleted): 36 * WebProcess/Storage/WebSWContextManagerConnection.h: 37 * WebProcess/Storage/WebSWContextManagerConnection.messages.in: 38 1 39 2017-12-11 Youenn Fablet <youenn@apple.com> 2 40 -
trunk/Source/WebKit/Scripts/webkit/messages.py
r225311 r225760 187 187 'WebCore::DocumentIdentifier', 188 188 'WebCore::ServiceWorkerIdentifier', 189 'WebCore::ServiceWorkerOrClientData', 189 190 'WebCore::ServiceWorkerRegistrationIdentifier', 190 191 'WebCore::SWServerConnectionIdentifier', … … 383 384 'WebCore::RecentSearch': ['<WebCore/SearchPopupMenu.h>'], 384 385 'WebCore::SWServerConnectionIdentifier': ['<WebCore/ServiceWorkerTypes.h>'], 386 'WebCore::ServiceWorkerOrClientData': ['<WebCore/ServiceWorkerTypes.h>', '<WebCore/ServiceWorkerClientData.h>', '<WebCore/ServiceWorkerData.h>'], 385 387 'WebCore::ServiceWorkerRegistrationIdentifier': ['<WebCore/ServiceWorkerTypes.h>'], 386 388 'WebCore::ServiceWorkerRegistrationState': ['<WebCore/ServiceWorkerTypes.h>'], -
trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp
r225294 r225760 66 66 #include <WebCore/ScrollingCoordinator.h> 67 67 #include <WebCore/SearchPopupMenu.h> 68 #include <WebCore/ServiceWorkerClientData.h> 69 #include <WebCore/ServiceWorkerData.h> 68 70 #include <WebCore/TextCheckerClient.h> 69 71 #include <WebCore/TextIndicator.h> … … 2685 2687 #endif 2686 2688 2689 #if ENABLE(SERVICE_WORKER) 2690 void ArgumentCoder<ServiceWorkerOrClientData>::encode(Encoder& encoder, const ServiceWorkerOrClientData& data) 2691 { 2692 bool isServiceWorkerData = WTF::holds_alternative<ServiceWorkerData>(data); 2693 encoder << isServiceWorkerData; 2694 if (isServiceWorkerData) 2695 encoder << WTF::get<ServiceWorkerData>(data); 2696 else 2697 encoder << WTF::get<ServiceWorkerClientData>(data); 2698 } 2699 2700 bool ArgumentCoder<ServiceWorkerOrClientData>::decode(Decoder& decoder, ServiceWorkerOrClientData& data) 2701 { 2702 bool isServiceWorkerData; 2703 if (!decoder.decode(isServiceWorkerData)) 2704 return false; 2705 if (isServiceWorkerData) { 2706 std::optional<ServiceWorkerData> workerData; 2707 decoder >> workerData; 2708 if (!workerData) 2709 return false; 2710 2711 data = WTFMove(*workerData); 2712 } else { 2713 std::optional<ServiceWorkerClientData> clientData; 2714 decoder >> clientData; 2715 if (!clientData) 2716 return false; 2717 2718 data = WTFMove(*clientData); 2719 } 2720 return true; 2721 } 2722 #endif 2723 2687 2724 #if ENABLE(CSS_SCROLL_SNAP) 2688 2725 -
trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h
r224880 r225760 40 40 #include <WebCore/RealtimeMediaSource.h> 41 41 #include <WebCore/ScrollSnapOffsetsInfo.h> 42 #include <WebCore/ServiceWorkerTypes.h> 42 43 #include <WebCore/StoredCredentialsPolicy.h> 43 44 #include <WebCore/WorkerType.h> … … 668 669 #endif 669 670 671 #if ENABLE(SERVICE_WORKER) 672 673 template<> struct ArgumentCoder<WebCore::ServiceWorkerOrClientData> { 674 static void encode(Encoder&, const WebCore::ServiceWorkerOrClientData&); 675 static bool decode(Decoder&, WebCore::ServiceWorkerOrClientData&); 676 }; 677 678 #endif 679 670 680 #if ENABLE(CSS_SCROLL_SNAP) 671 681 -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp
r225758 r225760 69 69 StorageProcess::singleton().unregisterSWServerConnection(*this); 70 70 for (auto keyValue : m_clientOrigins) 71 server().unregisterServiceWorkerClient(keyValue.value, ServiceWorkerClientIdentifier { identifier(), keyValue.key });71 server().unregisterServiceWorkerClient(keyValue.value, keyValue.key); 72 72 } 73 73 … … 128 128 } 129 129 130 void WebSWServerConnection::postMessageToServiceWorkerFromClient(ServiceWorkerIdentifier destinationIdentifier, IPC::DataReference&& message, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData) 130 // FIXME: We should be able to only pass in the ServiceWorkerClientIdentifier here and look up the clientData from the SWServer. 131 void WebSWServerConnection::postMessageToServiceWorkerFromClient(ServiceWorkerIdentifier destinationIdentifier, IPC::DataReference&& message, ServiceWorkerClientIdentifier, ServiceWorkerClientData&& sourceData) 131 132 { 132 133 // It's possible this specific worker cannot be re-run (e.g. its registration has been removed) 133 server().runServiceWorkerIfNecessary(destinationIdentifier, [destinationIdentifier, message = message.vector(), source Identifier, sourceData = WTFMove(sourceData)](bool success, auto& contextConnection) mutable {134 server().runServiceWorkerIfNecessary(destinationIdentifier, [destinationIdentifier, message = message.vector(), sourceData = WTFMove(sourceData)](bool success, auto& contextConnection) mutable { 134 135 if (success) 135 sendToContextProcess(contextConnection, Messages::WebSWContextManagerConnection::PostMessageToServiceWorker FromClient { destinationIdentifier, message, sourceIdentifier, WTFMove(sourceData) });136 sendToContextProcess(contextConnection, Messages::WebSWContextManagerConnection::PostMessageToServiceWorker { destinationIdentifier, message, WTFMove(sourceData) }); 136 137 }); 137 138 } … … 148 149 return; 149 150 150 sendToContextProcess(contextConnection, Messages::WebSWContextManagerConnection::PostMessageToServiceWorker FromServiceWorker{ destinationIdentifier, message, WTFMove(sourceData) });151 sendToContextProcess(contextConnection, Messages::WebSWContextManagerConnection::PostMessageToServiceWorker { destinationIdentifier, message, WTFMove(sourceData) }); 151 152 }); 152 153 } … … 211 212 } 212 213 213 void WebSWServerConnection::registerServiceWorkerClient(SecurityOriginData&& topOrigin, DocumentIdentifier contextIdentifier,ServiceWorkerClientData&& data, const std::optional<ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier)214 void WebSWServerConnection::registerServiceWorkerClient(SecurityOriginData&& topOrigin, ServiceWorkerClientData&& data, const std::optional<ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier) 214 215 { 215 216 auto clientOrigin = ClientOrigin { WTFMove(topOrigin), SecurityOriginData::fromSecurityOrigin(SecurityOrigin::create(data.url)) }; 216 m_clientOrigins.add( contextIdentifier, clientOrigin);217 server().registerServiceWorkerClient(WTFMove(clientOrigin), ServiceWorkerClientIdentifier { this->identifier(), contextIdentifier } ,WTFMove(data), controllingServiceWorkerIdentifier);218 } 219 220 void WebSWServerConnection::unregisterServiceWorkerClient( DocumentIdentifier contextIdentifier)221 { 222 auto iterator = m_clientOrigins.find(c ontextIdentifier);217 m_clientOrigins.add(data.identifier, clientOrigin); 218 server().registerServiceWorkerClient(WTFMove(clientOrigin), WTFMove(data), controllingServiceWorkerIdentifier); 219 } 220 221 void WebSWServerConnection::unregisterServiceWorkerClient(const ServiceWorkerClientIdentifier& clientIdentifier) 222 { 223 auto iterator = m_clientOrigins.find(clientIdentifier); 223 224 if (iterator == m_clientOrigins.end()) 224 225 return; 225 226 226 server().unregisterServiceWorkerClient(iterator->value, ServiceWorkerClientIdentifier { this->identifier(), contextIdentifier });227 server().unregisterServiceWorkerClient(iterator->value, clientIdentifier); 227 228 m_clientOrigins.remove(iterator); 228 229 } -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h
r225665 r225760 90 90 void getRegistrations(uint64_t registrationMatchRequestIdentifier, const WebCore::SecurityOriginData& topOrigin, const WebCore::URL& clientURL); 91 91 92 void registerServiceWorkerClient(WebCore::SecurityOriginData&& topOrigin, WebCore:: DocumentIdentifier, WebCore::ServiceWorkerClientData&&, const std::optional<WebCore::ServiceWorkerIdentifier>&);93 void unregisterServiceWorkerClient( WebCore::DocumentIdentifier);92 void registerServiceWorkerClient(WebCore::SecurityOriginData&& topOrigin, WebCore::ServiceWorkerClientData&&, const std::optional<WebCore::ServiceWorkerIdentifier>&); 93 void unregisterServiceWorkerClient(const WebCore::ServiceWorkerClientIdentifier&); 94 94 95 95 IPC::Connection* messageSenderConnection() final { return m_contentConnection.ptr(); } … … 101 101 PAL::SessionID m_sessionID; 102 102 Ref<IPC::Connection> m_contentConnection; 103 HashMap<WebCore:: DocumentIdentifier, WebCore::ClientOrigin> m_clientOrigins;103 HashMap<WebCore::ServiceWorkerClientIdentifier, WebCore::ClientOrigin> m_clientOrigins; 104 104 }; 105 105 -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.messages.in
r225665 r225760 31 31 32 32 StartFetch(uint64_t identifier, WebCore::ServiceWorkerIdentifier serviceWorkerIdentifier, WebCore::ResourceRequest request, struct WebCore::FetchOptions options, IPC::FormDataReference requestBody) 33 34 # FIXME: We should be able to merge the 2 following messages and use a DocumentOrWorkerIdentifier as source identifier. 33 35 PostMessageToServiceWorkerFromClient(WebCore::ServiceWorkerIdentifier destinationServiceWorkerIdentifier, IPC::DataReference message, struct WebCore::ServiceWorkerClientIdentifier sourceIdentifier, struct WebCore::ServiceWorkerClientData sourceData) 34 36 PostMessageToServiceWorkerFromServiceWorker(WebCore::ServiceWorkerIdentifier destinationServiceWorkerIdentifier, IPC::DataReference message, struct WebCore::ServiceWorkerIdentifier sourceIdentifier) … … 39 41 WhenRegistrationReady(uint64_t serviceRegistrationMatchRequestIdentifier, struct WebCore::SecurityOriginData topOrigin, WebCore::URL clientURL) 40 42 GetRegistrations(uint64_t serviceRegistrationMatchRequestIdentifier, struct WebCore::SecurityOriginData topOrigin, WebCore::URL clientURL) 41 RegisterServiceWorkerClient(struct WebCore::SecurityOriginData topOrigin, WebCore::DocumentIdentifier identifier,struct WebCore::ServiceWorkerClientData data, std::optional<WebCore::ServiceWorkerIdentifier> controllingServiceWorkerIdentifier)42 UnregisterServiceWorkerClient( WebCore::DocumentIdentifier identifier)43 RegisterServiceWorkerClient(struct WebCore::SecurityOriginData topOrigin, struct WebCore::ServiceWorkerClientData data, std::optional<WebCore::ServiceWorkerIdentifier> controllingServiceWorkerIdentifier) 44 UnregisterServiceWorkerClient(struct WebCore::ServiceWorkerClientIdentifier identifier) 43 45 44 46 SyncTerminateWorker(WebCore::ServiceWorkerIdentifier workerIdentifier) -> () -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp
r225703 r225760 87 87 } 88 88 89 void WebSWServerToContextConnection::matchAllCompleted(uint64_t requestIdentifier, const Vector<ServiceWorkerClient Information>& clientsData)89 void WebSWServerToContextConnection::matchAllCompleted(uint64_t requestIdentifier, const Vector<ServiceWorkerClientData>& clientsData) 90 90 { 91 91 send(Messages::WebSWContextManagerConnection::MatchAllCompleted { requestIdentifier, clientsData }); -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.h
r225703 r225760 62 62 void syncTerminateWorker(WebCore::ServiceWorkerIdentifier) final; 63 63 void findClientByIdentifierCompleted(uint64_t requestIdentifier, const std::optional<WebCore::ServiceWorkerClientData>&, bool hasSecurityError) final; 64 void matchAllCompleted(uint64_t requestIdentifier, const Vector<WebCore::ServiceWorkerClient Information>&) final;64 void matchAllCompleted(uint64_t requestIdentifier, const Vector<WebCore::ServiceWorkerClientData>&) final; 65 65 void claimCompleted(uint64_t requestIdentifier) final; 66 66 void didFinishSkipWaiting(uint64_t callbackID) final; -
trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.cpp
r225717 r225760 93 93 } 94 94 95 void WebSWClientConnection::registerServiceWorkerClient(const SecurityOrigin& topOrigin, WebCore::DocumentIdentifier contextIdentifier,const WebCore::ServiceWorkerClientData& data, const std::optional<WebCore::ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier)96 { 97 send(Messages::WebSWServerConnection::RegisterServiceWorkerClient { SecurityOriginData::fromSecurityOrigin(topOrigin), contextIdentifier,data, controllingServiceWorkerIdentifier });98 } 99 100 void WebSWClientConnection::unregisterServiceWorkerClient( WebCore::DocumentIdentifier contextIdentifier)101 { 102 send(Messages::WebSWServerConnection::UnregisterServiceWorkerClient { contextIdentifier});95 void WebSWClientConnection::registerServiceWorkerClient(const SecurityOrigin& topOrigin, const WebCore::ServiceWorkerClientData& data, const std::optional<WebCore::ServiceWorkerIdentifier>& controllingServiceWorkerIdentifier) 96 { 97 send(Messages::WebSWServerConnection::RegisterServiceWorkerClient { SecurityOriginData::fromSecurityOrigin(topOrigin), data, controllingServiceWorkerIdentifier }); 98 } 99 100 void WebSWClientConnection::unregisterServiceWorkerClient(DocumentIdentifier contextIdentifier) 101 { 102 send(Messages::WebSWServerConnection::UnregisterServiceWorkerClient { ServiceWorkerClientIdentifier { serverConnectionIdentifier(), contextIdentifier } }); 103 103 } 104 104 -
trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.h
r225717 r225760 76 76 void postMessageToServiceWorker(WebCore::ServiceWorkerIdentifier destinationIdentifier, Ref<WebCore::SerializedScriptValue>&&, WebCore::ServiceWorkerClientIdentifier sourceIdentifier, WebCore::ServiceWorkerClientData&& source) final; 77 77 void postMessageToServiceWorker(WebCore::ServiceWorkerIdentifier destinationIdentifier, Ref<WebCore::SerializedScriptValue>&&, WebCore::ServiceWorkerIdentifier sourceWorkerIdentifier) final; 78 void registerServiceWorkerClient(const WebCore::SecurityOrigin& topOrigin, WebCore::DocumentIdentifier,const WebCore::ServiceWorkerClientData&, const std::optional<WebCore::ServiceWorkerIdentifier>&) final;78 void registerServiceWorkerClient(const WebCore::SecurityOrigin& topOrigin, const WebCore::ServiceWorkerClientData&, const std::optional<WebCore::ServiceWorkerIdentifier>&) final; 79 79 void unregisterServiceWorkerClient(WebCore::DocumentIdentifier) final; 80 80 -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
r225716 r225760 173 173 } 174 174 175 void WebSWContextManagerConnection::postMessageToServiceWorkerFromClient(ServiceWorkerIdentifier destinationIdentifier, const IPC::DataReference& message, ServiceWorkerClientIdentifier sourceIdentifier, ServiceWorkerClientData&& sourceData) 176 { 177 SWContextManager::singleton().postMessageToServiceWorker(destinationIdentifier, SerializedScriptValue::adopt(message.vector()), sourceIdentifier, WTFMove(sourceData)); 178 } 179 180 void WebSWContextManagerConnection::postMessageToServiceWorkerFromServiceWorker(ServiceWorkerIdentifier destinationIdentifier, const IPC::DataReference& message, ServiceWorkerData&& sourceData) 175 void WebSWContextManagerConnection::postMessageToServiceWorker(ServiceWorkerIdentifier destinationIdentifier, const IPC::DataReference& message, ServiceWorkerOrClientData&& sourceData) 181 176 { 182 177 SWContextManager::singleton().postMessageToServiceWorker(destinationIdentifier, SerializedScriptValue::adopt(message.vector()), WTFMove(sourceData)); … … 262 257 } 263 258 264 void WebSWContextManagerConnection::matchAllCompleted(uint64_t requestIdentifier, Vector<ServiceWorkerClient Information>&& clientsData)259 void WebSWContextManagerConnection::matchAllCompleted(uint64_t requestIdentifier, Vector<ServiceWorkerClientData>&& clientsData) 265 260 { 266 261 if (auto callback = m_matchAllRequests.take(requestIdentifier)) -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
r225716 r225760 32 32 #include "WebSWContextManagerConnectionMessages.h" 33 33 #include <WebCore/SWContextManager.h> 34 #include <WebCore/ServiceWorkerClient Information.h>34 #include <WebCore/ServiceWorkerClientData.h> 35 35 #include <WebCore/ServiceWorkerTypes.h> 36 36 … … 78 78 void installServiceWorker(const WebCore::ServiceWorkerContextData&, PAL::SessionID); 79 79 void startFetch(WebCore::SWServerConnectionIdentifier, uint64_t fetchIdentifier, WebCore::ServiceWorkerIdentifier, WebCore::ResourceRequest&&, WebCore::FetchOptions&&, IPC::FormDataReference&&); 80 void postMessageToServiceWorkerFromClient(WebCore::ServiceWorkerIdentifier destinationIdentifier, const IPC::DataReference& message, WebCore::ServiceWorkerClientIdentifier sourceIdentifier, WebCore::ServiceWorkerClientData&& sourceData); 81 void postMessageToServiceWorkerFromServiceWorker(WebCore::ServiceWorkerIdentifier destination, const IPC::DataReference& message, WebCore::ServiceWorkerData&& sourceData); 80 void postMessageToServiceWorker(WebCore::ServiceWorkerIdentifier destinationIdentifier, const IPC::DataReference& message, WebCore::ServiceWorkerOrClientData&& sourceData); 82 81 void fireInstallEvent(WebCore::ServiceWorkerIdentifier); 83 82 void fireActivateEvent(WebCore::ServiceWorkerIdentifier); … … 85 84 void syncTerminateWorker(WebCore::ServiceWorkerIdentifier, Ref<Messages::WebSWContextManagerConnection::SyncTerminateWorker::DelayedReply>&&); 86 85 void findClientByIdentifierCompleted(uint64_t requestIdentifier, std::optional<WebCore::ServiceWorkerClientData>&&, bool hasSecurityError); 87 void matchAllCompleted(uint64_t matchAllRequestIdentifier, Vector<WebCore::ServiceWorkerClient Information>&&);86 void matchAllCompleted(uint64_t matchAllRequestIdentifier, Vector<WebCore::ServiceWorkerClientData>&&); 88 87 void claimCompleted(uint64_t claimRequestIdentifier); 89 88 void didFinishSkipWaiting(uint64_t callbackID); -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in
r225716 r225760 26 26 InstallServiceWorker(struct WebCore::ServiceWorkerContextData contextData, PAL::SessionID sessionID) 27 27 StartFetch(WebCore::SWServerConnectionIdentifier serverConnectionIdentifier, uint64_t fetchIdentifier, WebCore::ServiceWorkerIdentifier serviceWorkerIdentifier, WebCore::ResourceRequest request, struct WebCore::FetchOptions options, IPC::FormDataReference requestBody) 28 PostMessageToServiceWorkerFromClient(WebCore::ServiceWorkerIdentifier destinationIdentifier, IPC::DataReference message, struct WebCore::ServiceWorkerClientIdentifier sourceIdentifier, struct WebCore::ServiceWorkerClientData sourceData) 29 PostMessageToServiceWorkerFromServiceWorker(WebCore::ServiceWorkerIdentifier destinationIdentifier, IPC::DataReference message, struct WebCore::ServiceWorkerData sourceData) 28 PostMessageToServiceWorker(WebCore::ServiceWorkerIdentifier destinationIdentifier, IPC::DataReference message, WebCore::ServiceWorkerOrClientData sourceData) 30 29 FireInstallEvent(WebCore::ServiceWorkerIdentifier identifier) 31 30 FireActivateEvent(WebCore::ServiceWorkerIdentifier identifier) … … 33 32 SyncTerminateWorker(WebCore::ServiceWorkerIdentifier identifier) -> () Delayed 34 33 FindClientByIdentifierCompleted(uint64_t clientIdRequestIdentifier, std::optional<WebCore::ServiceWorkerClientData> data, bool hasSecurityError) 35 MatchAllCompleted(uint64_t matchAllRequestIdentifier, Vector<WebCore::ServiceWorkerClient Information> clientsData)34 MatchAllCompleted(uint64_t matchAllRequestIdentifier, Vector<WebCore::ServiceWorkerClientData> clientsData) 36 35 ClaimCompleted(uint64_t claimRequestIdentifier) 37 36 DidFinishSkipWaiting(uint64_t callbackID)
Note: See TracChangeset
for help on using the changeset viewer.