Changeset 220977 in webkit
- Timestamp:
- Aug 21, 2017 1:02:42 PM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 19 edited
- 5 copied
- 3 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r220956 r220977 2992 2992 workers/service/ServiceWorkerRegistrationParameters.cpp 2993 2993 2994 workers/service/server/SWClientConnection.cpp 2994 2995 workers/service/server/SWServer.cpp 2995 2996 -
trunk/Source/WebCore/ChangeLog
r220971 r220977 1 2017-08-21 Brady Eidson <beidson@apple.com> 2 3 Split the one SWServer::Connection into SWClientConnection and SWServer::Connection. 4 https://bugs.webkit.org/show_bug.cgi?id=175745 5 6 Reviewed by Andy Estes. 7 8 No new tests (No behavior change). 9 10 Each of these has a much different environment that it lives in, so being the same object 11 hinders clean development. 12 13 This split will also make it easier for the WebCore objects to directly handle WK2 messages. 14 15 * CMakeLists.txt: 16 * WebCore.xcodeproj/project.pbxproj: 17 18 * platform/Logging.h: 19 20 * workers/service/ServiceWorkerContainer.cpp: 21 (WebCore::ServiceWorkerContainer::addRegistration): 22 (WebCore::ServiceWorkerContainer::scheduleJob): 23 * workers/service/ServiceWorkerContainer.h: 24 25 * workers/service/ServiceWorkerProvider.h: 26 27 * workers/service/server/SWClientConnection.cpp: Copied from Source/WebCore/workers/service/server/SWServer.cpp. 28 (WebCore::SWClientConnection::SWClientConnection): 29 (WebCore::SWClientConnection::~SWClientConnection): 30 (WebCore::SWClientConnection::scheduleJob): 31 (WebCore::SWClientConnection::jobRejectedInServer): 32 * workers/service/server/SWClientConnection.h: Copied from Source/WebCore/workers/service/server/SWServer.h. 33 34 * workers/service/server/SWServer.cpp: 35 (WebCore::SWServer::Connection::Connection): 36 (WebCore::SWServer::Connection::~Connection): 37 (WebCore::SWServer::~SWServer): 38 (WebCore::SWServer::Connection::scheduleJobInServer): 39 (WebCore::SWServer::scheduleJob): 40 (WebCore::SWServer::registerConnection): 41 (WebCore::SWServer::unregisterConnection): 42 (WebCore::SWServer::Connection::scheduleJob): Deleted. 43 (WebCore::SWServer::Connection::jobRejected): Deleted. 44 * workers/service/server/SWServer.h: 45 (WebCore::SWServer::Connection::server): 46 (WebCore::SWServer::Connection::~Connection): Deleted. 47 1 48 2017-08-21 Andy Estes <aestes@apple.com> 2 49 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r220971 r220977 2308 2308 517A52F01F47535B00DCDC0A /* SWServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A52EE1F47535900DCDC0A /* SWServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2309 2309 517A52F11F4754E700DCDC0A /* SWServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A52EF1F47535900DCDC0A /* SWServer.cpp */; }; 2310 517A531C1F4B53B100DCDC0A /* SWClientConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A52FE1F478CCE00DCDC0A /* SWClientConnection.cpp */; }; 2311 517A531D1F4B53B100DCDC0A /* SWClientConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A52FF1F478CCE00DCDC0A /* SWClientConnection.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2310 2312 517A63C31B74318700E7DCDC /* KeyedDecoderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */; }; 2311 2313 517A63C41B74318B00E7DCDC /* KeyedEncoderCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A63C11B74317E00E7DCDC /* KeyedEncoderCF.cpp */; }; … … 10102 10104 517A52EE1F47535900DCDC0A /* SWServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWServer.h; sourceTree = "<group>"; }; 10103 10105 517A52EF1F47535900DCDC0A /* SWServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SWServer.cpp; sourceTree = "<group>"; }; 10106 517A52FE1F478CCE00DCDC0A /* SWClientConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SWClientConnection.cpp; sourceTree = "<group>"; }; 10107 517A52FF1F478CCE00DCDC0A /* SWClientConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWClientConnection.h; sourceTree = "<group>"; }; 10104 10108 517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyedDecoderCF.cpp; sourceTree = "<group>"; }; 10105 10109 517A63C01B74317E00E7DCDC /* KeyedDecoderCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyedDecoderCF.h; sourceTree = "<group>"; }; … … 18688 18692 isa = PBXGroup; 18689 18693 children = ( 18694 517A52FE1F478CCE00DCDC0A /* SWClientConnection.cpp */, 18695 517A52FF1F478CCE00DCDC0A /* SWClientConnection.h */, 18690 18696 517A52EF1F47535900DCDC0A /* SWServer.cpp */, 18691 18697 517A52EE1F47535900DCDC0A /* SWServer.h */, … … 29413 29419 E46180291C8A06CD0026C02C /* RenderTreeUpdater.h in Headers */, 29414 29420 E48E332C1F47037C00BAB0EF /* RenderTreeUpdaterFirstLetter.h in Headers */, 29421 E48E33321F47437300BAB0EF /* RenderTreeUpdaterGeneratedContent.h in Headers */, 29415 29422 E48E332E1F47038000BAB0EF /* RenderTreeUpdaterListItem.h in Headers */, 29416 29423 E44614520CD68A3500FADA75 /* RenderVideo.h in Headers */, … … 29627 29634 FD45A95B175D41EE00C21EC8 /* ShapeInterval.h in Headers */, 29628 29635 FD45A952175D3F3E00C21EC8 /* ShapeOutsideInfo.h in Headers */, 29629 E48E33321F47437300BAB0EF /* RenderTreeUpdaterGeneratedContent.h in Headers */,29630 29636 FD1AF1501656F15100C6D4F7 /* ShapeValue.h in Headers */, 29631 29637 1A4A954E0B4EDCCB002D8C3C /* SharedBuffer.h in Headers */, … … 30032 30038 B2227AF60D00BF220071B782 /* SVGZoomAndPan.h in Headers */, 30033 30039 B2E4EC980D00C22B00432643 /* SVGZoomEvent.h in Headers */, 30040 517A531D1F4B53B100DCDC0A /* SWClientConnection.h in Headers */, 30034 30041 517A52F01F47535B00DCDC0A /* SWServer.h in Headers */, 30035 30042 E180811716FCF9CB00B80D07 /* SynchronousLoaderClient.h in Headers */, … … 31276 31283 62CD32591157E57C0063B0A7 /* CustomEvent.cpp in Sources */, 31277 31284 97BC6A201505F081001B74AC /* Database.cpp in Sources */, 31278 E48E33311F47437000BAB0EF /* RenderTreeUpdaterGeneratedContent.cpp in Sources */,31279 31285 97BC6A231505F081001B74AC /* DatabaseAuthorizer.cpp in Sources */, 31280 31286 97BC6A271505F081001B74AC /* DatabaseContext.cpp in Sources */, … … 33306 33312 E461802B1C8A06D90026C02C /* RenderTreeUpdater.cpp in Sources */, 33307 33313 E48284081F44594C00863AC3 /* RenderTreeUpdaterFirstLetter.cpp in Sources */, 33314 E48E33311F47437000BAB0EF /* RenderTreeUpdaterGeneratedContent.cpp in Sources */, 33308 33315 E48E332D1F47038000BAB0EF /* RenderTreeUpdaterListItem.cpp in Sources */, 33309 33316 E44614510CD68A3500FADA75 /* RenderVideo.cpp in Sources */, … … 33785 33792 B2227AF50D00BF220071B782 /* SVGZoomAndPan.cpp in Sources */, 33786 33793 B2E4EC970D00C22B00432643 /* SVGZoomEvent.cpp in Sources */, 33794 517A531C1F4B53B100DCDC0A /* SWClientConnection.cpp in Sources */, 33787 33795 517A52F11F4754E700DCDC0A /* SWServer.cpp in Sources */, 33788 33796 E180811216FCF42F00B80D07 /* SynchronousLoaderClient.cpp in Sources */, -
trunk/Source/WebCore/platform/Logging.h
r220812 r220977 82 82 M(Scrolling) \ 83 83 M(Services) \ 84 M(ServiceWorker) \ 84 85 M(SpellingAndGrammar) \ 85 86 M(SQLDatabase) \ -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp
r220924 r220977 81 81 } 82 82 83 if (!m_s erverConnection)84 m_s erverConnection = &ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(context->sessionID());83 if (!m_swConnection) 84 m_swConnection = &ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(context->sessionID()); 85 85 86 86 if (relativeScriptURL.isEmpty()) { … … 121 121 void ServiceWorkerContainer::scheduleJob(Ref<ServiceWorkerJob>&& job) 122 122 { 123 ASSERT(m_s erverConnection);123 ASSERT(m_swConnection); 124 124 125 125 ServiceWorkerJob& rawJob = job.get(); … … 127 127 ASSERT_UNUSED(result, result.isNewEntry); 128 128 129 m_s erverConnection->scheduleJob(rawJob);129 m_swConnection->scheduleJob(rawJob); 130 130 } 131 131 -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h
r220924 r220977 31 31 #include "DOMPromiseProxy.h" 32 32 #include "EventTarget.h" 33 #include "SWClientConnection.h" 33 34 #include "SWServer.h" 34 35 #include "ServiceWorkerJobClient.h" … … 83 84 NavigatorBase& m_navigator; 84 85 85 RefPtr<SW Server::Connection> m_serverConnection;86 RefPtr<SWClientConnection> m_swConnection; 86 87 HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_jobMap; 87 88 -
trunk/Source/WebCore/workers/service/ServiceWorkerProvider.h
r220924 r220977 28 28 #if ENABLE(SERVICE_WORKER) 29 29 30 #include "SWServer.h"31 32 30 namespace PAL { 33 31 class SessionID; … … 36 34 namespace WebCore { 37 35 36 class SWClientConnection; 38 37 class ServiceWorkerJob; 39 38 … … 45 44 WEBCORE_EXPORT static void setSharedProvider(ServiceWorkerProvider&); 46 45 47 virtual SW Server::Connection& serviceWorkerConnectionForSession(const PAL::SessionID&) = 0;46 virtual SWClientConnection& serviceWorkerConnectionForSession(const PAL::SessionID&) = 0; 48 47 }; 49 48 -
trunk/Source/WebCore/workers/service/server/SWClientConnection.cpp
r220974 r220977 25 25 26 26 #include "config.h" 27 #include "SW Server.h"27 #include "SWClientConnection.h" 28 28 29 29 #if ENABLE(SERVICE_WORKER) 30 30 31 #include "ExceptionCode.h"32 31 #include "ExceptionData.h" 33 32 #include "ServiceWorkerJobData.h" 34 #include <wtf/text/WTFString.h>35 33 36 34 namespace WebCore { 37 35 38 void SWServer::Connection::scheduleJob(ServiceWorkerJob& job) 36 SWClientConnection::SWClientConnection() 37 { 38 } 39 40 SWClientConnection::~SWClientConnection() 41 { 42 } 43 44 void SWClientConnection::scheduleJob(ServiceWorkerJob& job) 39 45 { 40 46 auto addResult = m_scheduledJobs.add(job.identifier(), &job); 41 47 ASSERT_UNUSED(addResult, addResult.isNewEntry); 42 48 43 scheduleJob (job.data());49 scheduleJobInServer(job.data()); 44 50 } 45 51 46 void SW Server::Connection::jobRejected(uint64_t jobIdentifier, const ExceptionData& exceptionData)52 void SWClientConnection::jobRejectedInServer(uint64_t jobIdentifier, const ExceptionData& exceptionData) 47 53 { 48 54 auto job = m_scheduledJobs.take(jobIdentifier); -
trunk/Source/WebCore/workers/service/server/SWClientConnection.h
r220974 r220977 36 36 struct ExceptionData; 37 37 38 class SW Server{38 class SWClientConnection : public ThreadSafeRefCounted<SWClientConnection> { 39 39 public: 40 class Connection : public ThreadSafeRefCounted<Connection> { 41 public: 42 virtual ~Connection() { } 43 void scheduleJob(ServiceWorkerJob&); 40 WEBCORE_EXPORT SWClientConnection(); 41 WEBCORE_EXPORT virtual ~SWClientConnection(); 44 42 45 protected: 46 WEBCORE_EXPORT void jobRejected(uint64_t jobIdentifier, const ExceptionData&); 43 void scheduleJob(ServiceWorkerJob&); 47 44 48 private:49 virtual void scheduleJob(const ServiceWorkerJobData&) = 0;45 protected: 46 WEBCORE_EXPORT void jobRejectedInServer(uint64_t jobIdentifier, const ExceptionData&); 50 47 51 HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_scheduledJobs; 52 };48 private: 49 virtual void scheduleJobInServer(const ServiceWorkerJobData&) = 0; 53 50 51 HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_scheduledJobs; 54 52 }; 55 53 -
trunk/Source/WebCore/workers/service/server/SWServer.cpp
r220924 r220977 31 31 #include "ExceptionCode.h" 32 32 #include "ExceptionData.h" 33 #include "Logging.h" 33 34 #include "ServiceWorkerJobData.h" 34 35 #include <wtf/text/WTFString.h> … … 36 37 namespace WebCore { 37 38 38 void SWServer::Connection::scheduleJob(ServiceWorkerJob& job) 39 SWServer::Connection::Connection(SWServer& server) 40 : m_server(server) 39 41 { 40 auto addResult = m_scheduledJobs.add(job.identifier(), &job); 41 ASSERT_UNUSED(addResult, addResult.isNewEntry); 42 43 scheduleJob(job.data()); 42 m_server.registerConnection(*this); 44 43 } 45 44 46 void SWServer::Connection::jobRejected(uint64_t jobIdentifier, const ExceptionData& exceptionData)45 SWServer::Connection::~Connection() 47 46 { 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 } 47 m_server.unregisterConnection(*this); 48 } 53 49 54 job->failedWithException(exceptionData.toException()); 50 51 SWServer::~SWServer() 52 { 53 RELEASE_ASSERT(m_connections.isEmpty()); 54 } 55 56 void SWServer::Connection::scheduleJobInServer(const ServiceWorkerJobData& jobData) 57 { 58 LOG(ServiceWorker, "Scheduling ServiceWorker job %" PRIu64 " in server", jobData.identifier); 59 m_server.scheduleJob(*this, jobData); 60 } 61 62 void SWServer::scheduleJob(Connection& connection, const ServiceWorkerJobData& jobData) 63 { 64 // FIXME: For now, all scheduled jobs immediately reject. 65 connection.rejectJobInClient(jobData.identifier, ExceptionData { UnknownError, ASCIILiteral("serviceWorker job scheduling is not yet implemented") }); 66 } 67 68 void SWServer::registerConnection(Connection& connection) 69 { 70 auto result = m_connections.add(&connection); 71 ASSERT_UNUSED(result, result.isNewEntry); 72 } 73 74 void SWServer::unregisterConnection(Connection& connection) 75 { 76 ASSERT(!m_connections.contains(&connection)); 77 m_connections.remove(&connection); 55 78 } 56 79 -
trunk/Source/WebCore/workers/service/server/SWServer.h
r220924 r220977 30 30 #include "ServiceWorkerJob.h" 31 31 #include <wtf/HashMap.h> 32 #include <wtf/HashSet.h> 32 33 #include <wtf/ThreadSafeRefCounted.h> 33 34 … … 38 39 class SWServer { 39 40 public: 40 class Connection : public ThreadSafeRefCounted<Connection> { 41 class Connection { 42 friend class SWServer; 41 43 public: 42 virtual ~Connection() { } 43 void scheduleJob(ServiceWorkerJob&); 44 WEBCORE_EXPORT virtual ~Connection(); 44 45 45 46 protected: 46 WEBCORE_EXPORT void jobRejected(uint64_t jobIdentifier, const ExceptionData&); 47 WEBCORE_EXPORT Connection(SWServer&); 48 SWServer& server() { return m_server; } 49 50 WEBCORE_EXPORT void scheduleJobInServer(const ServiceWorkerJobData&); 47 51 48 52 private: 49 virtual void scheduleJob(const ServiceWorkerJobData&) = 0;53 virtual void rejectJobInClient(uint64_t jobIdentifier, const ExceptionData&) = 0; 50 54 51 HashMap<uint64_t, RefPtr<ServiceWorkerJob>> m_scheduledJobs;55 SWServer& m_server; 52 56 }; 53 57 58 WEBCORE_EXPORT ~SWServer(); 59 60 WEBCORE_EXPORT void scheduleJob(Connection&, const ServiceWorkerJobData&); 61 62 private: 63 void registerConnection(Connection&); 64 void unregisterConnection(Connection&); 65 66 HashSet<Connection*> m_connections; 54 67 }; 55 68 -
trunk/Source/WebKit/CMakeLists.txt
r220924 r220977 31 31 "${WEBKIT2_DIR}/StorageProcess" 32 32 "${WEBKIT2_DIR}/StorageProcess/IndexedDB" 33 "${WEBKIT2_DIR}/StorageProcess/ServiceWorker" 33 34 "${WEBKIT2_DIR}/UIProcess" 34 35 "${WEBKIT2_DIR}/UIProcess/API" … … 274 275 275 276 StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp 277 278 StorageProcess/ServiceWorker/WebSWServerConnection.cpp 279 276 280 UIProcess/BackgroundProcessResponsivenessTimer.cpp 277 281 UIProcess/ChildProcessProxy.cpp … … 529 533 WebProcess/Plugins/Netscape/NetscapePluginStream.cpp 530 534 531 WebProcess/Storage/WebSW ServerConnection.cpp535 WebProcess/Storage/WebSWClientConnection.cpp 532 536 WebProcess/Storage/WebServiceWorkerProvider.cpp 533 537 WebProcess/Storage/WebToStorageProcessConnection.cpp … … 613 617 StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in 614 618 619 StorageProcess/ServiceWorker/WebSWServerConnection.messages.in 620 615 621 UIProcess/DrawingAreaProxy.messages.in 616 622 UIProcess/RemoteWebInspectorProxy.messages.in … … 670 676 WebProcess/Plugins/PluginProxy.messages.in 671 677 672 WebProcess/Storage/WebSW ServerConnection.messages.in678 WebProcess/Storage/WebSWClientConnection.messages.in 673 679 674 680 WebProcess/UserContent/WebUserContentController.messages.in -
trunk/Source/WebKit/ChangeLog
r220963 r220977 1 2017-08-21 Brady Eidson <beidson@apple.com> 2 3 Split the one SWServer::Connection into SWClientConnection and SWServer::Connection. 4 https://bugs.webkit.org/show_bug.cgi?id=175745 5 6 Reviewed by Andy Estes. 7 8 * CMakeLists.txt: 9 * DerivedSources.make: 10 * WebKit.xcodeproj/project.pbxproj: 11 12 * StorageProcess/ServiceWorker/WebSWServerConnection.cpp: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.cpp. 13 (WebKit::WebSWServerConnection::WebSWServerConnection): 14 (WebKit::WebSWServerConnection::~WebSWServerConnection): 15 (WebKit::WebSWServerConnection::disconnectedFromWebProcess): 16 (WebKit::WebSWServerConnection::rejectJobInClient): 17 * StorageProcess/ServiceWorker/WebSWServerConnection.h: Copied from Source/WebKit/WebProcess/Storage/WebSWServerConnection.h. 18 (WebKit::WebSWServerConnection::identifier const): 19 * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in: Copied from Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in. 20 21 * StorageProcess/StorageToWebProcessConnection.cpp: 22 (WebKit::StorageToWebProcessConnection::didReceiveMessage): 23 (WebKit::StorageToWebProcessConnection::didClose): 24 (WebKit::StorageToWebProcessConnection::establishSWServerConnection): 25 (WebKit::StorageToWebProcessConnection::removeSWServerConnection): 26 * StorageProcess/StorageToWebProcessConnection.h: 27 28 * WebProcess/Storage/WebSWClientConnection.cpp: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp. 29 (WebKit::WebSWClientConnection::WebSWClientConnection): 30 (WebKit::WebSWClientConnection::~WebSWClientConnection): 31 (WebKit::WebSWClientConnection::scheduleJobInServer): 32 * WebProcess/Storage/WebSWClientConnection.h: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.h. 33 (WebKit::WebSWClientConnection::identifier const): 34 * WebProcess/Storage/WebSWClientConnection.messages.in: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in. 35 36 * WebProcess/Storage/WebServiceWorkerProvider.cpp: 37 (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession): 38 * WebProcess/Storage/WebServiceWorkerProvider.h: 39 40 * WebProcess/Storage/WebToStorageProcessConnection.cpp: 41 (WebKit::WebToStorageProcessConnection::didReceiveMessage): 42 (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession): 43 * WebProcess/Storage/WebToStorageProcessConnection.h: 44 1 45 2017-08-21 Charlie Turner <cturner@igalia.com> 2 46 -
trunk/Source/WebKit/DerivedSources.make
r220924 r220977 37 37 $(WebKit2)/StorageProcess \ 38 38 $(WebKit2)/StorageProcess/IndexedDB \ 39 $(WebKit2)/StorageProcess/ServiceWorker \ 39 40 $(WebKit2)/StorageProcess/mac \ 40 41 $(WebKit2)/WebProcess/ApplePay \ … … 159 160 WebPaymentCoordinator \ 160 161 WebPaymentCoordinatorProxy \ 162 WebSWClientConnection \ 161 163 WebSWServerConnection \ 162 164 PlaybackSessionManager \ -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp
r220974 r220977 32 32 #include "StorageToWebProcessConnectionMessages.h" 33 33 #include "WebProcess.h" 34 #include "WebSWClientConnectionMessages.h" 34 35 #include "WebSWServerConnectionMessages.h" 35 36 #include "WebToStorageProcessConnection.h" … … 44 45 namespace WebKit { 45 46 46 WebSWServerConnection::WebSWServerConnection(const SessionID& sessionID) 47 : m_sessionID(sessionID) 48 , m_connection(WebProcess::singleton().webToStorageProcessConnection()->connection()) 49 { 50 bool result = sendSync(Messages::StorageToWebProcessConnection::EstablishSWServerConnection(sessionID), Messages::StorageToWebProcessConnection::EstablishSWServerConnection::Reply(m_identifier)); 51 52 ASSERT_UNUSED(result, result); 53 } 54 55 WebSWServerConnection::WebSWServerConnection(IPC::Connection& connection, uint64_t connectionIdentifier, const SessionID& sessionID) 56 : m_sessionID(sessionID) 47 WebSWServerConnection::WebSWServerConnection(SWServer& server, IPC::Connection& connection, uint64_t connectionIdentifier, const SessionID& sessionID) 48 : SWServer::Connection(server) 49 , m_sessionID(sessionID) 57 50 , m_identifier(connectionIdentifier) 58 51 , m_connection(connection) … … 69 62 } 70 63 71 void WebSWServerConnection:: scheduleJob(const ServiceWorkerJobData& jobData)64 void WebSWServerConnection::rejectJobInClient(uint64_t jobIdentifier, const ExceptionData& exceptionData) 72 65 { 73 LOG(ServiceWorker, "Scheduling ServiceWorker job %" PRIu64 " in storage process", jobData.identifier); 74 send(Messages::WebSWServerConnection::ScheduleStorageJob(jobData)); 75 } 76 77 void WebSWServerConnection::scheduleStorageJob(const ServiceWorkerJobData& jobData) 78 { 79 ASSERT(isMainThread()); 80 LOG(ServiceWorker, "Received ServiceWorker job %" PRIu64 " in storage process", jobData.identifier); 81 82 // FIXME: For now, all scheduled jobs immediately reject. 83 send(Messages::WebSWServerConnection::JobRejected(jobData.identifier, ExceptionData { UnknownError, ASCIILiteral("serviceWorker job scheduling is not yet implemented") })); 66 send(Messages::WebSWClientConnection::JobRejectedInServer(jobIdentifier, exceptionData)); 84 67 } 85 68 -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h
r220974 r220977 41 41 class WebSWServerConnection : public WebCore::SWServer::Connection, public IPC::MessageSender, public IPC::MessageReceiver { 42 42 public: 43 static Ref<WebSWServerConnection> create(const PAL::SessionID& sessionID) 44 { 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)); 50 } 51 43 WebSWServerConnection(WebCore::SWServer&, IPC::Connection&, uint64_t connectionIdentifier, const PAL::SessionID&); 44 WebSWServerConnection(const WebSWServerConnection&) = delete; 52 45 ~WebSWServerConnection() final; 53 46 54 47 uint64_t identifier() const { return m_identifier; } 55 56 void scheduleJob(const WebCore::ServiceWorkerJobData&) final;57 48 58 49 void disconnectedFromWebProcess(); … … 60 51 61 52 private: 62 WebSWServerConnection(const PAL::SessionID&); 63 WebSWServerConnection(IPC::Connection&, uint64_t connectionIdentifier, const PAL::SessionID&); 64 65 void scheduleStorageJob(const WebCore::ServiceWorkerJobData&); 53 // Implement SWServer::Connection 54 void rejectJobInClient(uint64_t jobIdentifier, const WebCore::ExceptionData&) final; 66 55 67 56 IPC::Connection* messageSenderConnection() final { return m_connection.ptr(); } -
trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.messages.in
r220974 r220977 24 24 25 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) 26 # When possible, these messages can be implemented directly by WebCore::SWClientConnection 27 ScheduleJobInServer(struct WebCore::ServiceWorkerJobData jobData) 32 28 } 33 29 -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.cpp
r220924 r220977 36 36 37 37 using namespace PAL; 38 using namespace WebCore; 38 39 39 40 namespace WebKit { … … 74 75 #if ENABLE(SERVICE_WORKER) 75 76 if (decoder.messageReceiverName() == Messages::WebSWServerConnection::messageReceiverName()) { 76 auto iterator = m_ webServiceWorkerConnections.find(decoder.destinationID());77 if (iterator != m_ webServiceWorkerConnections.end())77 auto iterator = m_swConnections.find(decoder.destinationID()); 78 if (iterator != m_swConnections.end()) 78 79 iterator->value->didReceiveMessage(connection, decoder); 79 80 return; … … 105 106 106 107 #if ENABLE(SERVICE_WORKER) 107 auto serviceWorkerConnections = m_webServiceWorkerConnections; 108 for (auto& connection : serviceWorkerConnections.values()) 108 Vector<std::unique_ptr<WebSWServerConnection>> connectionVector; 109 connectionVector.reserveInitialCapacity(m_swConnections.size()); 110 111 for (auto& connection : m_swConnections.values()) 112 connectionVector.uncheckedAppend(WTFMove(connection)); 113 for (auto& connection : connectionVector) 109 114 connection->disconnectedFromWebProcess(); 110 115 111 m_ webServiceWorkerConnections.clear();116 m_swConnections.clear(); 112 117 #endif 113 118 } … … 130 135 serverConnectionIdentifier = generateConnectionToServerIdentifier(); 131 136 LOG(ServiceWorker, "StorageToWebProcessConnection::establishSWServerConnection - %" PRIu64, serverConnectionIdentifier); 132 ASSERT(!m_ webServiceWorkerConnections.contains(serverConnectionIdentifier));137 ASSERT(!m_swConnections.contains(serverConnectionIdentifier)); 133 138 134 m_webServiceWorkerConnections.set(serverConnectionIdentifier, WebSWServerConnection::create(m_connection.get(), serverConnectionIdentifier, sessionID)); 139 auto result = m_swServers.add(sessionID, nullptr); 140 if (result.isNewEntry) 141 result.iterator->value = std::make_unique<SWServer>(); 142 143 ASSERT(result.iterator->value); 144 145 m_swConnections.set(serverConnectionIdentifier, std::make_unique<WebSWServerConnection>(*result.iterator->value, m_connection.get(), serverConnectionIdentifier, sessionID)); 135 146 } 136 147 137 148 void StorageToWebProcessConnection::removeSWServerConnection(uint64_t serverConnectionIdentifier) 138 149 { 139 ASSERT(m_ webServiceWorkerConnections.contains(serverConnectionIdentifier));150 ASSERT(m_swConnections.contains(serverConnectionIdentifier)); 140 151 141 auto connection = m_ webServiceWorkerConnections.take(serverConnectionIdentifier);152 auto connection = m_swConnections.take(serverConnectionIdentifier); 142 153 connection->disconnectedFromWebProcess(); 143 154 } -
trunk/Source/WebKit/StorageProcess/StorageToWebProcessConnection.h
r220924 r220977 29 29 #include "MessageSender.h" 30 30 31 #include <WebCore/SWServer.h> 31 32 #include <pal/SessionID.h> 32 33 #include <wtf/HashMap.h> … … 70 71 void establishSWServerConnection(PAL::SessionID, uint64_t& serverConnectionIdentifier); 71 72 void removeSWServerConnection(uint64_t serverConnectionIdentifier); 72 HashMap<uint64_t, RefPtr<WebSWServerConnection>> m_webServiceWorkerConnections; 73 HashMap<PAL::SessionID, std::unique_ptr<WebCore::SWServer>> m_swServers; 74 HashMap<uint64_t, std::unique_ptr<WebSWServerConnection>> m_swConnections; 73 75 #endif 74 76 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r220924 r220977 1029 1029 517A52D81F43A9DA00DCDC0A /* WebSWServerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A52D71F43A9B600DCDC0A /* WebSWServerConnectionMessageReceiver.cpp */; }; 1030 1030 517A52D91F43A9DA00DCDC0A /* WebSWServerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */; }; 1031 517A53041F4793C600DCDC0A /* WebSWClientConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A53031F4793B200DCDC0A /* WebSWClientConnection.cpp */; }; 1032 517A53051F4793C600DCDC0A /* WebSWClientConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A53021F4793B200DCDC0A /* WebSWClientConnection.h */; }; 1033 517A530A1F479E3600DCDC0A /* WebSWServerConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A53091F479E3100DCDC0A /* WebSWServerConnection.cpp */; }; 1034 517A530B1F479E3600DCDC0A /* WebSWServerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A53071F479E3100DCDC0A /* WebSWServerConnection.h */; }; 1035 517A530F1F47A86200DCDC0A /* WebSWClientConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */; }; 1036 517A53101F47A86200DCDC0A /* WebSWClientConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */; }; 1031 1037 517CF0E3163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */; }; 1032 1038 517CF0E3163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */; }; … … 1111 1117 51F060E11654318500F3282C /* WebRTCResolverMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */; }; 1112 1118 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 */; };1115 1119 51F7DC41180CC93600212CA3 /* XPCServiceMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC82839616B47EC400A278FE /* XPCServiceMain.mm */; }; 1116 1120 51F7DC43180CC93600212CA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC3DE46815A91763008D26FC /* Foundation.framework */; }; … … 3308 3312 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSWServerConnectionMessages.h; sourceTree = "<group>"; }; 3309 3313 517A52D71F43A9B600DCDC0A /* WebSWServerConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSWServerConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; 3314 517A53021F4793B200DCDC0A /* WebSWClientConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSWClientConnection.h; sourceTree = "<group>"; }; 3315 517A53031F4793B200DCDC0A /* WebSWClientConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSWClientConnection.cpp; sourceTree = "<group>"; }; 3316 517A53071F479E3100DCDC0A /* WebSWServerConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSWServerConnection.h; sourceTree = "<group>"; }; 3317 517A53081F479E3100DCDC0A /* WebSWServerConnection.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebSWServerConnection.messages.in; sourceTree = "<group>"; }; 3318 517A53091F479E3100DCDC0A /* WebSWServerConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSWServerConnection.cpp; sourceTree = "<group>"; }; 3319 517A530C1F479E9700DCDC0A /* WebSWClientConnection.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebSWClientConnection.messages.in; sourceTree = "<group>"; }; 3320 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSWClientConnectionMessages.h; sourceTree = "<group>"; }; 3321 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSWClientConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; 3310 3322 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkProcessConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; 3311 3323 517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCacheStorageConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; … … 3416 3428 51F060DD1654317500F3282E /* NetworkRTCProviderMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkRTCProviderMessageReceiver.cpp; sourceTree = "<group>"; }; 3417 3429 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>"; };3421 3430 51F7DC4A180CC93600212CA3 /* com.apple.WebKit.Storage.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; includeInIndex = 0; path = com.apple.WebKit.Storage.xpc; sourceTree = BUILT_PRODUCTS_DIR; }; 3422 3431 51F886A31F2C214A00C193EF /* WKTestingSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKTestingSupport.cpp; sourceTree = "<group>"; }; … … 6076 6085 51BEB6291F3A5ACD005029B9 /* WebServiceWorkerProvider.cpp */, 6077 6086 51BEB62A1F3A5ACD005029B9 /* WebServiceWorkerProvider.h */, 6078 51 F645861F472E2600B54DED /* WebSWServerConnection.h*/,6079 51 F645871F472E2600B54DED /* WebSWServerConnection.cpp*/,6080 51 F645851F472E2600B54DED /* WebSWServerConnection.messages.in */,6087 517A53031F4793B200DCDC0A /* WebSWClientConnection.cpp */, 6088 517A53021F4793B200DCDC0A /* WebSWClientConnection.h */, 6089 517A530C1F479E9700DCDC0A /* WebSWClientConnection.messages.in */, 6081 6090 5118E9991F295259003EF9F5 /* WebToStorageProcessConnection.cpp */, 6082 6091 5118E99A1F295259003EF9F5 /* WebToStorageProcessConnection.h */, … … 6197 6206 sourceTree = "<group>"; 6198 6207 }; 6208 517A53061F479E0F00DCDC0A /* ServiceWorker */ = { 6209 isa = PBXGroup; 6210 children = ( 6211 517A53091F479E3100DCDC0A /* WebSWServerConnection.cpp */, 6212 517A53071F479E3100DCDC0A /* WebSWServerConnection.h */, 6213 517A53081F479E3100DCDC0A /* WebSWServerConnection.messages.in */, 6214 ); 6215 path = ServiceWorker; 6216 sourceTree = "<group>"; 6217 }; 6199 6218 517DD5BB180DA7C40081660B /* Storage */ = { 6200 6219 isa = PBXGroup; … … 6298 6317 E1FEF39B190F791C00731658 /* ios */, 6299 6318 517DD5C0180DB7AA0081660B /* mac */, 6319 517A53061F479E0F00DCDC0A /* ServiceWorker */, 6300 6320 51E351FA180F5D0B00E53BE9 /* StorageProcess.cpp */, 6301 6321 51E351FB180F5D0B00E53BE9 /* StorageProcess.h */, … … 8011 8031 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */, 8012 8032 51F060DD1654317500F3281C /* WebRTCSocketMessageReceiver.cpp */, 8033 5C0B17761E7C879C00E9123C /* WebSocketStreamMessageReceiver.cpp */, 8034 5C0B17771E7C879C00E9123C /* WebSocketStreamMessages.h */, 8035 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */, 8036 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */, 8013 8037 517A52D71F43A9B600DCDC0A /* WebSWServerConnectionMessageReceiver.cpp */, 8014 8038 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */, 8015 5C0B17761E7C879C00E9123C /* WebSocketStreamMessageReceiver.cpp */,8016 5C0B17771E7C879C00E9123C /* WebSocketStreamMessages.h */,8017 8039 1AAF08B519269E6D00B6390C /* WebUserContentControllerMessageReceiver.cpp */, 8018 8040 1AAF08B619269E6D00B6390C /* WebUserContentControllerMessages.h */, … … 8356 8378 1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */, 8357 8379 1AFDD3151891B54000153970 /* APIPolicyClient.h in Headers */, 8358 51F645881F472E2E00B54DED /* WebSWServerConnection.h in Headers */,8359 8380 7CE4D2201A4914CA00C7F152 /* APIProcessPoolConfiguration.h in Headers */, 8360 8381 F634445612A885C8000612D8 /* APISecurityOrigin.h in Headers */, … … 8905 8926 D3B9484911FF4B6500032B39 /* WebSearchPopupMenu.h in Headers */, 8906 8927 51BEB62C1F3A5AD7005029B9 /* WebServiceWorkerProvider.h in Headers */, 8907 517A52D91F43A9DA00DCDC0A /* WebSWServerConnectionMessages.h in Headers */,8908 8928 1A4832D71A9CDF96008B4DFE /* WebsiteData.h in Headers */, 8909 8929 1A4832D11A9BDC2F008B4DFE /* WebsiteDataRecord.h in Headers */, … … 8912 8932 836034A01ACB34D600626549 /* WebSQLiteDatabaseTracker.h in Headers */, 8913 8933 1A52C0F81A38CDC70016160A /* WebStorageNamespaceProvider.h in Headers */, 8934 517A53051F4793C600DCDC0A /* WebSWClientConnection.h in Headers */, 8935 517A53101F47A86200DCDC0A /* WebSWClientConnectionMessages.h in Headers */, 8936 517A530B1F479E3600DCDC0A /* WebSWServerConnection.h in Headers */, 8937 517A52D91F43A9DA00DCDC0A /* WebSWServerConnectionMessages.h in Headers */, 8914 8938 BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */, 8915 8939 5118E99C1F295266003EF9F5 /* WebToStorageProcessConnection.h in Headers */, … … 10538 10562 D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */, 10539 10563 51BEB62B1F3A5AD7005029B9 /* WebServiceWorkerProvider.cpp in Sources */, 10540 517A52D81F43A9DA00DCDC0A /* WebSWServerConnectionMessageReceiver.cpp in Sources */,10541 10564 1A4832D61A9CDF96008B4DFE /* WebsiteData.cpp in Sources */, 10542 10565 1A4832D91A9D1FD2008B4DFE /* WebsiteDataRecord.cpp in Sources */, … … 10549 10572 8360349F1ACB34D600626549 /* WebSQLiteDatabaseTracker.cpp in Sources */, 10550 10573 1A52C0F71A38CDC70016160A /* WebStorageNamespaceProvider.cpp in Sources */, 10574 517A53041F4793C600DCDC0A /* WebSWClientConnection.cpp in Sources */, 10575 517A530F1F47A86200DCDC0A /* WebSWClientConnectionMessageReceiver.cpp in Sources */, 10576 517A530A1F479E3600DCDC0A /* WebSWServerConnection.cpp in Sources */, 10577 517A52D81F43A9DA00DCDC0A /* WebSWServerConnectionMessageReceiver.cpp in Sources */, 10551 10578 BCC5715C115ADAEF001CCAF9 /* WebSystemInterface.mm in Sources */, 10552 10579 5118E99B1F295266003EF9F5 /* WebToStorageProcessConnection.cpp in Sources */, … … 10675 10702 370F34A21829BE1E009027C8 /* WKNavigationData.mm in Sources */, 10676 10703 BCF69FAA1176D1CB00471A52 /* WKNavigationDataRef.cpp in Sources */, 10677 51F645891F472E2E00B54DED /* WebSWServerConnection.cpp in Sources */,10678 10704 2D3A65E21A7C3A9300CAC637 /* WKNavigationRef.cpp in Sources */, 10679 10705 1A1B0EB518A424950038481A /* WKNavigationResponse.mm in Sources */, -
trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.cpp
r220974 r220977 25 25 26 26 #include "config.h" 27 #include "WebS erviceWorkerProvider.h"27 #include "WebSWClientConnection.h" 28 28 29 29 #if ENABLE(SERVICE_WORKER) 30 30 31 #include "WebProcess.h" 32 #include "WebSWServerConnection.h" 33 #include "WebToStorageProcessConnection.h" 34 #include <WebCore/Exception.h> 35 #include <WebCore/ExceptionCode.h> 36 #include <WebCore/ServiceWorkerJob.h> 37 #include <pal/SessionID.h> 38 #include <wtf/text/WTFString.h> 31 #include "Logging.h" 32 #include "StorageToWebProcessConnectionMessages.h" 33 #include "WebSWServerConnectionMessages.h" 34 #include <WebCore/ServiceWorkerJobData.h> 39 35 40 36 using namespace PAL; … … 43 39 namespace WebKit { 44 40 45 WebServiceWorkerProvider& WebServiceWorkerProvider::singleton() 41 WebSWClientConnection::WebSWClientConnection(IPC::Connection& connection, const SessionID& sessionID) 42 : m_sessionID(sessionID) 43 , m_connection(connection) 46 44 { 47 static NeverDestroyed<WebServiceWorkerProvider> provider; 48 return provider; 45 bool result = sendSync(Messages::StorageToWebProcessConnection::EstablishSWServerConnection(sessionID), Messages::StorageToWebProcessConnection::EstablishSWServerConnection::Reply(m_identifier)); 46 47 ASSERT_UNUSED(result, result); 49 48 } 50 49 51 WebS erviceWorkerProvider::WebServiceWorkerProvider()50 WebSWClientConnection::~WebSWClientConnection() 52 51 { 53 52 } 54 53 55 SWServer::Connection& WebServiceWorkerProvider::serviceWorkerConnectionForSession(const SessionID& sessionID)54 void WebSWClientConnection::scheduleJobInServer(const ServiceWorkerJobData& jobData) 56 55 { 57 ASSERT(WebProcess::singleton().webToStorageProcessConnection()); 58 return WebProcess::singleton().webToStorageProcessConnection()->serviceWorkerConnectionForSession(sessionID); 56 send(Messages::WebSWServerConnection::ScheduleJobInServer(jobData)); 59 57 } 60 58 -
trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.h
r220974 r220977 28 28 #if ENABLE(SERVICE_WORKER) 29 29 30 #include "Connection.h" 30 31 #include "MessageReceiver.h" 31 32 #include "MessageSender.h" 32 #include <WebCore/SW Server.h>33 #include <WebCore/SWClientConnection.h> 33 34 #include <pal/SessionID.h> 34 35 … … 39 40 namespace WebKit { 40 41 41 class WebSW ServerConnection : public WebCore::SWServer::Connection, public IPC::MessageSender, public IPC::MessageReceiver {42 class WebSWClientConnection : public WebCore::SWClientConnection, public IPC::MessageSender, public IPC::MessageReceiver { 42 43 public: 43 static Ref<WebSWServerConnection> create(const PAL::SessionID& sessionID) 44 { 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)); 50 } 51 52 ~WebSWServerConnection() final; 44 WebSWClientConnection(IPC::Connection&, const PAL::SessionID&); 45 WebSWClientConnection(const WebSWClientConnection&) = delete; 46 ~WebSWClientConnection() final; 53 47 54 48 uint64_t identifier() const { return m_identifier; } 55 49 56 void scheduleJob (const WebCore::ServiceWorkerJobData&) final;50 void scheduleJobInServer(const WebCore::ServiceWorkerJobData&) final; 57 51 58 52 void disconnectedFromWebProcess(); … … 60 54 61 55 private: 62 WebSWServerConnection(const PAL::SessionID&);63 WebSWServerConnection(IPC::Connection&, uint64_t connectionIdentifier, const PAL::SessionID&);64 65 56 void scheduleStorageJob(const WebCore::ServiceWorkerJobData&); 66 57 -
trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.messages.in
r220974 r220977 23 23 #if ENABLE(SERVICE_WORKER) 24 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) 25 messages -> WebSWClientConnection { 26 # When possible, these messages can be implemented directly by WebCore::SWServer::Connection 27 JobRejectedInServer(uint64_t identifier, struct WebCore::ExceptionData exception) 32 28 } 33 29 -
trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp
r220924 r220977 53 53 } 54 54 55 SWServer::Connection& WebServiceWorkerProvider::serviceWorkerConnectionForSession(const SessionID& sessionID)55 WebCore::SWClientConnection& WebServiceWorkerProvider::serviceWorkerConnectionForSession(const SessionID& sessionID) 56 56 { 57 57 ASSERT(WebProcess::singleton().webToStorageProcessConnection()); -
trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h
r220924 r220977 41 41 WebServiceWorkerProvider(); 42 42 43 WebCore::SW Server::Connection& serviceWorkerConnectionForSession(const PAL::SessionID&) final;43 WebCore::SWClientConnection& serviceWorkerConnectionForSession(const PAL::SessionID&) final; 44 44 45 45 }; // class WebServiceWorkerProvider -
trunk/Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.cpp
r220924 r220977 31 31 #include "WebIDBConnectionToServerMessages.h" 32 32 #include "WebProcess.h" 33 #include "WebSW ServerConnection.h"34 #include "WebSW ServerConnectionMessages.h"33 #include "WebSWClientConnection.h" 34 #include "WebSWClientConnectionMessages.h" 35 35 36 36 using namespace PAL; … … 61 61 62 62 #if ENABLE(SERVICE_WORKER) 63 if (decoder.messageReceiverName() == Messages::WebSW ServerConnection::messageReceiverName()) {64 auto serviceWorkerConnection = m_s erviceWorkerConnectionsByIdentifier.get(decoder.destinationID());63 if (decoder.messageReceiverName() == Messages::WebSWClientConnection::messageReceiverName()) { 64 auto serviceWorkerConnection = m_swConnectionsByIdentifier.get(decoder.destinationID()); 65 65 if (serviceWorkerConnection) 66 66 serviceWorkerConnection->didReceiveMessage(connection, decoder); … … 103 103 104 104 #if ENABLE(SERVICE_WORKER) 105 WebSW ServerConnection& WebToStorageProcessConnection::serviceWorkerConnectionForSession(const SessionID& sessionID)105 WebSWClientConnection& WebToStorageProcessConnection::serviceWorkerConnectionForSession(const SessionID& sessionID) 106 106 { 107 auto result = m_s erviceWorkerConnectionsBySession.add(sessionID, nullptr);107 auto result = m_swConnectionsBySession.add(sessionID, nullptr); 108 108 if (result.isNewEntry) { 109 result.iterator->value = WebSWServerConnection::create(sessionID);110 ASSERT(!m_s erviceWorkerConnectionsByIdentifier.contains(result.iterator->value->identifier()));111 m_s erviceWorkerConnectionsByIdentifier.set(result.iterator->value->identifier(), result.iterator->value);109 result.iterator->value = std::make_unique<WebSWClientConnection>(m_connection.get(), sessionID); 110 ASSERT(!m_swConnectionsByIdentifier.contains(result.iterator->value->identifier())); 111 m_swConnectionsByIdentifier.set(result.iterator->value->identifier(), result.iterator->value.get()); 112 112 } 113 113 -
trunk/Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.h
r220924 r220977 30 30 #include "MessageSender.h" 31 31 #include "WebIDBConnectionToServer.h" 32 #include "WebSWClientConnection.h" 33 #include <WebCore/SWServer.h> 32 34 #include <pal/SessionID.h> 33 35 #include <wtf/RefCounted.h> … … 38 40 39 41 namespace WebKit { 40 41 class WebSWServerConnection;42 42 43 43 class WebToStorageProcessConnection : public RefCounted<WebToStorageProcessConnection>, public IPC::Connection::Client, public IPC::MessageSender { … … 55 55 #endif 56 56 #if ENABLE(SERVICE_WORKER) 57 WebSW ServerConnection& serviceWorkerConnectionForSession(const PAL::SessionID&);57 WebSWClientConnection& serviceWorkerConnectionForSession(const PAL::SessionID&); 58 58 #endif 59 59 … … 78 78 79 79 #if ENABLE(SERVICE_WORKER) 80 HashMap<PAL::SessionID, RefPtr<WebSWServerConnection>> m_serviceWorkerConnectionsBySession;81 HashMap<uint64_t, RefPtr<WebSWServerConnection>> m_serviceWorkerConnectionsByIdentifier;80 HashMap<PAL::SessionID, std::unique_ptr<WebSWClientConnection>> m_swConnectionsBySession; 81 HashMap<uint64_t, WebSWClientConnection*> m_swConnectionsByIdentifier; 82 82 #endif 83 83 };
Note: See TracChangeset
for help on using the changeset viewer.