Changeset 249155 in webkit
- Timestamp:
- Aug 27, 2019, 11:22:12 AM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 4 added
- 10 edited
-
ChangeLog (modified) (1 diff)
-
PlatformMac.cmake (modified) (2 diffs)
-
Shared/API/Cocoa/RemoteObjectRegistry.h (modified) (4 diffs)
-
Shared/API/Cocoa/RemoteObjectRegistry.mm (modified) (4 diffs)
-
Shared/API/Cocoa/_WKRemoteObjectRegistry.mm (modified) (4 diffs)
-
SourcesCocoa.txt (modified) (2 diffs)
-
UIProcess/Cocoa/UIRemoteObjectRegistry.cpp (added)
-
UIProcess/Cocoa/UIRemoteObjectRegistry.h (added)
-
WebKit.xcodeproj/project.pbxproj (modified) (6 diffs)
-
WebProcess/WebPage/Cocoa/WebPageCocoa.mm (modified) (2 diffs)
-
WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp (added)
-
WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.h (added)
-
WebProcess/WebPage/WebPage.cpp (modified) (3 diffs)
-
WebProcess/WebPage/WebPage.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r249147 r249155 1 2019-08-27 Chris Dumez <cdumez@apple.com> 2 3 Introduce subclasses to RemoteObjectRegistry for the UIProcess and the WebProcess 4 https://bugs.webkit.org/show_bug.cgi?id=201153 5 6 Reviewed by Alex Christensen. 7 8 This better factoring improves code clarity. 9 10 * PlatformMac.cmake: 11 * Shared/API/Cocoa/RemoteObjectRegistry.h: 12 (WebKit::RemoteObjectRegistry::~RemoteObjectRegistry): 13 (WebKit::RemoteObjectRegistry::takeBackgroundActivityToken): 14 * Shared/API/Cocoa/RemoteObjectRegistry.mm: 15 (WebKit::RemoteObjectRegistry::RemoteObjectRegistry): 16 (WebKit::RemoteObjectRegistry::sendInvocation): 17 (WebKit::RemoteObjectRegistry::sendReplyBlock): 18 (WebKit::RemoteObjectRegistry::sendUnusedReply): 19 * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: 20 (-[_WKRemoteObjectRegistry _initWithWebPage:]): 21 (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]): 22 * SourcesCocoa.txt: 23 * UIProcess/Cocoa/UIRemoteObjectRegistry.cpp: Added. 24 (WebKit::UIRemoteObjectRegistry::takeBackgroundActivityToken): 25 (WebKit::UIRemoteObjectRegistry::UIRemoteObjectRegistry): 26 (WebKit::UIRemoteObjectRegistry::sendInvocation): 27 (WebKit::UIRemoteObjectRegistry::messageSender): 28 * UIProcess/Cocoa/UIRemoteObjectRegistry.h: Added. 29 * WebKit.xcodeproj/project.pbxproj: 30 * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: 31 (WebKit::WebPage::setRemoteObjectRegistry): 32 (WebKit::WebPage::remoteObjectRegistry): 33 * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp: Added. 34 (WebKit::WebRemoteObjectRegistry::WebRemoteObjectRegistry): 35 (WebKit::WebRemoteObjectRegistry::~WebRemoteObjectRegistry): 36 (WebKit::WebRemoteObjectRegistry::close): 37 (WebKit::WebRemoteObjectRegistry::messageSender): 38 * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.h: Added. 39 * WebProcess/WebPage/WebPage.cpp: 40 (WebKit::WebPage::close): 41 * WebProcess/WebPage/WebPage.h: 42 1 43 2019-08-26 Jer Noble <jer.noble@apple.com> 2 44 -
trunk/Source/WebKit/PlatformMac.cmake
r246126 r249155 253 253 UIProcess/Cocoa/SessionStateCoding.mm 254 254 UIProcess/Cocoa/UIDelegate.mm 255 UIProcess/Cocoa/UIRemoteObjectRegistry.cpp 255 256 UIProcess/Cocoa/VersionChecks.mm 256 257 UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm … … 363 364 364 365 WebProcess/WebPage/Cocoa/WebPageCocoa.mm 366 WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp 365 367 366 368 WebProcess/WebPage/mac/PageBannerMac.mm -
trunk/Source/WebKit/Shared/API/Cocoa/RemoteObjectRegistry.h
r245796 r249155 1 1 /* 2 * Copyright (C) 2013 Apple Inc. All rights reserved.2 * Copyright (C) 2013-2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 28 28 #include "MessageReceiver.h" 29 29 #include "ProcessThrottler.h" 30 #include <WebCore/PageIdentifier.h> 31 #include <wtf/Function.h> 30 #include <wtf/HashMap.h> 32 31 #include <wtf/WeakObjCPtr.h> 33 32 #include <wtf/WeakPtr.h> … … 43 42 class RemoteObjectInvocation; 44 43 class UserData; 45 class WebPage;46 class WebPageProxy;47 44 48 class RemoteObjectRegistry final: public CanMakeWeakPtr<RemoteObjectRegistry>, public IPC::MessageReceiver {45 class RemoteObjectRegistry : public CanMakeWeakPtr<RemoteObjectRegistry>, public IPC::MessageReceiver { 49 46 WTF_MAKE_FAST_ALLOCATED; 50 47 public: 51 RemoteObjectRegistry(_WKRemoteObjectRegistry *, WebPage&); 52 RemoteObjectRegistry(_WKRemoteObjectRegistry *, WebPageProxy&); 48 virtual ~RemoteObjectRegistry(); 53 49 54 ~RemoteObjectRegistry(); 55 56 void sendInvocation(const RemoteObjectInvocation&); 50 virtual void sendInvocation(const RemoteObjectInvocation&); 57 51 void sendReplyBlock(uint64_t replyID, const UserData& blockInvocation); 58 52 void sendUnusedReply(uint64_t replyID); 59 53 60 void close(); 54 protected: 55 explicit RemoteObjectRegistry(_WKRemoteObjectRegistry *); 56 57 private: 58 virtual ProcessThrottler::BackgroundActivityToken takeBackgroundActivityToken() { return nullptr; } 59 virtual IPC::MessageSender& messageSender() = 0; 61 60 62 private:63 61 // IPC::MessageReceiver 64 62 void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override; … … 70 68 71 69 WeakObjCPtr<_WKRemoteObjectRegistry> m_remoteObjectRegistry; 72 IPC::MessageSender& m_messageSender;73 Function<ProcessThrottler::BackgroundActivityToken()> m_takeBackgroundActivityToken;74 Function<void()> m_launchInitialProcessIfNecessary;75 70 HashMap<uint64_t, ProcessThrottler::BackgroundActivityToken> m_pendingReplies; 76 bool m_isRegisteredAsMessageReceiver { false };77 WebCore::PageIdentifier m_messageReceiverID;78 71 }; 79 72 -
trunk/Source/WebKit/Shared/API/Cocoa/RemoteObjectRegistry.mm
r244139 r249155 1 1 /* 2 * Copyright (C) 2013 Apple Inc. All rights reserved.2 * Copyright (C) 2013-2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 28 28 29 29 #import "MessageSender.h" 30 #import "ProcessThrottler.h"31 30 #import "RemoteObjectInvocation.h" 32 31 #import "RemoteObjectRegistryMessages.h" 33 32 #import "UserData.h" 34 #import "WebPage.h"35 #import "WebPageProxy.h"36 #import "WebProcess.h"37 #import "WebProcessProxy.h"38 33 #import "_WKRemoteObjectRegistryInternal.h" 39 34 40 35 namespace WebKit { 41 36 42 RemoteObjectRegistry::RemoteObjectRegistry(_WKRemoteObjectRegistry *remoteObjectRegistry , WebPage& page)37 RemoteObjectRegistry::RemoteObjectRegistry(_WKRemoteObjectRegistry *remoteObjectRegistry) 43 38 : m_remoteObjectRegistry(remoteObjectRegistry) 44 , m_messageSender(page)45 , m_takeBackgroundActivityToken([] { return ProcessThrottler::BackgroundActivityToken(); })46 , m_isRegisteredAsMessageReceiver(true)47 , m_messageReceiverID(page.pageID())48 {49 WebProcess::singleton().addMessageReceiver(Messages::RemoteObjectRegistry::messageReceiverName(), m_messageReceiverID, *this);50 page.setRemoteObjectRegistry(*this);51 }52 53 RemoteObjectRegistry::RemoteObjectRegistry(_WKRemoteObjectRegistry *remoteObjectRegistry, WebPageProxy& page)54 : m_remoteObjectRegistry(remoteObjectRegistry)55 , m_messageSender(page)56 , m_takeBackgroundActivityToken([&page] { return page.process().throttler().backgroundActivityToken(); })57 , m_launchInitialProcessIfNecessary([&page] { page.launchInitialProcessIfNecessary(); })58 39 { 59 40 } … … 61 42 RemoteObjectRegistry::~RemoteObjectRegistry() 62 43 { 63 close();64 }65 66 void RemoteObjectRegistry::close()67 {68 if (m_isRegisteredAsMessageReceiver) {69 WebProcess::singleton().removeMessageReceiver(Messages::RemoteObjectRegistry::messageReceiverName(), m_messageReceiverID);70 m_isRegisteredAsMessageReceiver = false;71 }72 44 } 73 45 74 46 void RemoteObjectRegistry::sendInvocation(const RemoteObjectInvocation& invocation) 75 47 { 76 // For backward-compatibility, support invoking injected bundle methods before having done any load in the WebView.77 if (m_launchInitialProcessIfNecessary)78 m_launchInitialProcessIfNecessary();79 48 80 49 if (auto* replyInfo = invocation.replyInfo()) { 81 50 ASSERT(!m_pendingReplies.contains(replyInfo->replyID)); 82 m_pendingReplies.add(replyInfo->replyID, m_takeBackgroundActivityToken());51 m_pendingReplies.add(replyInfo->replyID, takeBackgroundActivityToken()); 83 52 } 84 53 85 m _messageSender.send(Messages::RemoteObjectRegistry::InvokeMethod(invocation));54 messageSender().send(Messages::RemoteObjectRegistry::InvokeMethod(invocation)); 86 55 } 87 56 88 57 void RemoteObjectRegistry::sendReplyBlock(uint64_t replyID, const UserData& blockInvocation) 89 58 { 90 m _messageSender.send(Messages::RemoteObjectRegistry::CallReplyBlock(replyID, blockInvocation));59 messageSender().send(Messages::RemoteObjectRegistry::CallReplyBlock(replyID, blockInvocation)); 91 60 } 92 61 93 62 void RemoteObjectRegistry::sendUnusedReply(uint64_t replyID) 94 63 { 95 m _messageSender.send(Messages::RemoteObjectRegistry::ReleaseUnusedReplyBlock(replyID));64 messageSender().send(Messages::RemoteObjectRegistry::ReleaseUnusedReplyBlock(replyID)); 96 65 } 97 66 … … 116 85 [m_remoteObjectRegistry _releaseReplyWithID:replyID]; 117 86 } 87 118 88 } // namespace WebKit -
trunk/Source/WebKit/Shared/API/Cocoa/_WKRemoteObjectRegistry.mm
r248846 r249155 31 31 #import "Connection.h" 32 32 #import "RemoteObjectInvocation.h" 33 #import " RemoteObjectRegistry.h"33 #import "UIRemoteObjectRegistry.h" 34 34 #import "UserData.h" 35 35 #import "WKConnectionRef.h" … … 38 38 #import "WKSharedAPICast.h" 39 39 #import "WebPage.h" 40 #import "WebRemoteObjectRegistry.h" 40 41 #import "_WKRemoteObjectInterface.h" 41 42 #import <objc/runtime.h> … … 110 111 return nil; 111 112 112 _remoteObjectRegistry = makeUnique<WebKit:: RemoteObjectRegistry>(self, page);113 _remoteObjectRegistry = makeUnique<WebKit::WebRemoteObjectRegistry>(self, page); 113 114 114 115 return self; … … 120 121 return nil; 121 122 122 _remoteObjectRegistry = makeUnique<WebKit:: RemoteObjectRegistry>(self, page);123 _remoteObjectRegistry = makeUnique<WebKit::UIRemoteObjectRegistry>(self, page); 123 124 124 125 return self; -
trunk/Source/WebKit/SourcesCocoa.txt
r249096 r249155 357 357 UIProcess/Cocoa/TextCheckingController.mm 358 358 UIProcess/Cocoa/UIDelegate.mm 359 UIProcess/Cocoa/UIRemoteObjectRegistry.cpp 359 360 UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 360 361 UIProcess/Cocoa/VersionChecks.mm … … 580 581 WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm 581 582 WebProcess/WebPage/Cocoa/WebPageCocoa.mm 583 WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp 582 584 583 585 WebProcess/WebPage/ios/FindControllerIOS.mm -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r249096 r249155 903 903 460F488F1F996F7100CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 460F488D1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp */; }; 904 904 460F48901F996F7100CF4B87 /* WebSWContextManagerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 460F488E1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessages.h */; }; 905 461CCCA5231485A700B659B9 /* UIRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 463236852314833F00A48FA7 /* UIRemoteObjectRegistry.h */; }; 906 461CCCA6231485AA00B659B9 /* WebRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 46323683231481EF00A48FA7 /* WebRemoteObjectRegistry.h */; }; 905 907 463FD4801EB9459600A2982C /* WKProcessTerminationReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 463FD47F1EB9458400A2982C /* WKProcessTerminationReason.h */; settings = {ATTRIBUTES = (Private, ); }; }; 906 908 463FD4821EB94EC000A2982C /* ProcessTerminationReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 463FD4811EB94EAD00A2982C /* ProcessTerminationReason.h */; }; … … 3196 3198 460F488E1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSWContextManagerConnectionMessages.h; path = DerivedSources/WebKit2/WebSWContextManagerConnectionMessages.h; sourceTree = BUILT_PRODUCTS_DIR; }; 3197 3199 462107D71F38DBD300DD7810 /* PingLoad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PingLoad.cpp; sourceTree = "<group>"; }; 3200 46323683231481EF00A48FA7 /* WebRemoteObjectRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebRemoteObjectRegistry.h; sourceTree = "<group>"; }; 3201 463236842314825C00A48FA7 /* WebRemoteObjectRegistry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebRemoteObjectRegistry.cpp; sourceTree = "<group>"; }; 3202 463236852314833F00A48FA7 /* UIRemoteObjectRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIRemoteObjectRegistry.h; sourceTree = "<group>"; }; 3203 463236862314833F00A48FA7 /* UIRemoteObjectRegistry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIRemoteObjectRegistry.cpp; sourceTree = "<group>"; }; 3198 3204 463FD47F1EB9458400A2982C /* WKProcessTerminationReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKProcessTerminationReason.h; sourceTree = "<group>"; }; 3199 3205 463FD4811EB94EAD00A2982C /* ProcessTerminationReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessTerminationReason.h; sourceTree = "<group>"; }; … … 5557 5563 1AFE436418B6C081009C7A48 /* UIDelegate.h */, 5558 5564 1AFE436318B6C081009C7A48 /* UIDelegate.mm */, 5565 463236862314833F00A48FA7 /* UIRemoteObjectRegistry.cpp */, 5566 463236852314833F00A48FA7 /* UIRemoteObjectRegistry.h */, 5559 5567 E4E8648E1B1673FB00C82F40 /* VersionChecks.h */, 5560 5568 E4E8648F1B1673FB00C82F40 /* VersionChecks.mm */, … … 5799 5807 2D9CD5EC21FA503F0029ACFA /* TextCheckingControllerProxy.mm */, 5800 5808 2DC4CF7A1D2DE24B00ECCC94 /* WebPageCocoa.mm */, 5809 463236842314825C00A48FA7 /* WebRemoteObjectRegistry.cpp */, 5810 46323683231481EF00A48FA7 /* WebRemoteObjectRegistry.h */, 5801 5811 ); 5802 5812 path = Cocoa; … … 9763 9773 CEE4AE2B1A5DCF430002F49B /* UIKitSPI.h in Headers */, 9764 9774 513FFB8D201459B0002596EA /* UIMessagePortChannelProvider.h in Headers */, 9775 461CCCA5231485A700B659B9 /* UIRemoteObjectRegistry.h in Headers */, 9765 9776 5C4B9D8B210A8CCF008F14D1 /* UndoOrRedo.h in Headers */, 9766 9777 1A64245E12DE29A100CAAE2C /* UpdateInfo.h in Headers */, … … 9959 9970 1A1E093418861D3800D2DC49 /* WebProgressTrackerClient.h in Headers */, 9960 9971 512F589D12A8838800629530 /* WebProtectionSpace.h in Headers */, 9972 461CCCA6231485AA00B659B9 /* WebRemoteObjectRegistry.h in Headers */, 9961 9973 37948404150C350600E52CE9 /* WebRenderLayer.h in Headers */, 9962 9974 3760881F150413E900FC82C7 /* WebRenderObject.h in Headers */, -
trunk/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
r247416 r249155 30 30 #import "LoadParameters.h" 31 31 #import "PluginView.h" 32 #import "RemoteObjectRegistry.h"33 32 #import "WKAccessibilityWebPageObjectBase.h" 34 33 #import "WebPageProxyMessages.h" 35 34 #import "WebPaymentCoordinator.h" 35 #import "WebRemoteObjectRegistry.h" 36 36 #import <WebCore/DictionaryLookup.h> 37 37 #import <WebCore/Editor.h> … … 218 218 } 219 219 220 void WebPage::setRemoteObjectRegistry( RemoteObjectRegistry®istry)220 void WebPage::setRemoteObjectRegistry(WebRemoteObjectRegistry* registry) 221 221 { 222 222 m_remoteObjectRegistry = makeWeakPtr(registry); 223 } 224 225 WebRemoteObjectRegistry* WebPage::remoteObjectRegistry() 226 { 227 return m_remoteObjectRegistry.get(); 223 228 } 224 229 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r249138 r249155 259 259 #include "PlaybackSessionManager.h" 260 260 #include "RemoteLayerTreeTransaction.h" 261 #include "RemoteObjectRegistry.h"262 261 #include "RemoteObjectRegistryMessages.h" 263 262 #include "TextCheckingControllerProxy.h" … … 266 265 #include "VideoFullscreenManager.h" 267 266 #include "WKStringCF.h" 267 #include "WebRemoteObjectRegistry.h" 268 268 #include <WebCore/LegacyWebArchive.h> 269 269 #include <WebCore/UTIRegistry.h> … … 1433 1433 if (m_remoteObjectRegistry) 1434 1434 m_remoteObjectRegistry->close(); 1435 ASSERT(!m_remoteObjectRegistry); 1435 1436 #endif 1436 1437 #if ENABLE(ASYNC_SCROLLING) -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r249093 r249155 218 218 class PageBanner; 219 219 class PluginView; 220 class RemoteObjectRegistry;221 220 class RemoteWebInspectorUI; 222 221 class TextCheckingControllerProxy; … … 248 247 class WebPaymentCoordinator; 249 248 class WebPopupMenu; 249 class WebRemoteObjectRegistry; 250 250 class WebTouchEvent; 251 251 class WebURLSchemeHandlerProxy; … … 1199 1199 #endif 1200 1200 1201 void setRemoteObjectRegistry(RemoteObjectRegistry&); 1201 #if PLATFORM(COCOA) 1202 void setRemoteObjectRegistry(WebRemoteObjectRegistry*); 1203 WebRemoteObjectRegistry* remoteObjectRegistry(); 1204 #endif 1202 1205 1203 1206 void updateIntrinsicContentSizeIfNeeded(const WebCore::IntSize&); … … 1953 1956 bool m_firstFlushAfterCommit { false }; 1954 1957 #if PLATFORM(COCOA) 1955 WeakPtr< RemoteObjectRegistry> m_remoteObjectRegistry;1958 WeakPtr<WebRemoteObjectRegistry> m_remoteObjectRegistry; 1956 1959 #endif 1957 1960 WebCore::IntSize m_lastSentIntrinsicContentSize;
Note:
See TracChangeset
for help on using the changeset viewer.