Changeset 241988 in webkit
- Timestamp:
- Feb 22, 2019 9:30:19 PM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r241985 r241988 1 2019-02-22 Chris Dumez <cdumez@apple.com> 2 3 Give DrawingAreas their own identifiers 4 https://bugs.webkit.org/show_bug.cgi?id=194969 5 <rdar://problem/48154508> 6 7 Reviewed by Geoffrey Garen. 8 9 Give DrawingAreas their own identifiers instead of using the pageID. It will make the IPC more robust now that a 10 WebPageProxy can have several drawing areas with PSON. 11 12 * Shared/DrawingAreaInfo.h: 13 * Shared/WebPageCreationParameters.cpp: 14 (WebKit::WebPageCreationParameters::encode const): 15 (WebKit::WebPageCreationParameters::decode): 16 * Shared/WebPageCreationParameters.h: 17 * UIProcess/AcceleratedDrawingAreaProxy.cpp: 18 (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState): 19 (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState): 20 (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing): 21 (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing): 22 * UIProcess/DrawingAreaProxy.cpp: 23 (WebKit::DrawingAreaProxy::DrawingAreaProxy): 24 (WebKit::DrawingAreaProxy::~DrawingAreaProxy): 25 (WebKit::DrawingAreaProxy::messageSenderConnection const): 26 (WebKit::DrawingAreaProxy::sendMessage): 27 (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired): 28 * UIProcess/DrawingAreaProxy.h: 29 (WebKit::DrawingAreaProxy::identifier const): 30 (WebKit::DrawingAreaProxy::process const): 31 * UIProcess/DrawingAreaProxyImpl.cpp: 32 (WebKit::DrawingAreaProxyImpl::update): 33 * UIProcess/ProvisionalPageProxy.cpp: 34 (WebKit::ProvisionalPageProxy::initializeWebPage): 35 * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: 36 (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): 37 (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy): 38 (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange): 39 (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry): 40 (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart): 41 (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd): 42 (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): 43 (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState): 44 (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing): 45 * UIProcess/WebPageProxy.cpp: 46 (WebKit::WebPageProxy::initializeWebPage): 47 (WebKit::WebPageProxy::createNewPage): 48 (WebKit::WebPageProxy::creationParameters): 49 * UIProcess/WebPageProxy.h: 50 * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: 51 (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange): 52 (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange): 53 (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState): 54 (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry): 55 (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom): 56 (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom): 57 (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing): 58 * WebProcess/WebPage/AcceleratedDrawingArea.cpp: 59 (WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea): 60 (WebKit::AcceleratedDrawingArea::layerHostDidFlushLayers): 61 (WebKit::AcceleratedDrawingArea::sendDidUpdateBackingStoreState): 62 * WebProcess/WebPage/DrawingArea.cpp: 63 (WebKit::DrawingArea::DrawingArea): 64 (WebKit::DrawingArea::removeMessageReceiverIfNeeded): 65 * WebProcess/WebPage/DrawingArea.h: 66 (WebKit::DrawingArea::identifier const): 67 (WebKit::DrawingArea::send): 68 * WebProcess/WebPage/DrawingAreaImpl.cpp: 69 (WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState): 70 (WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode): 71 (WebKit::DrawingAreaImpl::display): 72 * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: 73 (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): 74 (WebKit::RemoteLayerTreeDrawingArea::updateGeometry): 75 (WebKit::RemoteLayerTreeDrawingArea::flushLayers): 76 * WebProcess/WebPage/WebPage.cpp: 77 (WebKit::WebPage::reinitializeWebPage): 78 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 79 (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): 80 (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded): 81 (WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded): 82 (WebKit::TiledCoreAnimationDrawingArea::flushLayers): 83 (WebKit::TiledCoreAnimationDrawingArea::updateGeometry): 84 (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode): 85 1 86 2019-02-22 Andy Estes <aestes@apple.com> 2 87 -
trunk/Source/WebKit/Shared/DrawingAreaInfo.h
r237266 r241988 26 26 #pragma once 27 27 28 #include <wtf/ObjectIdentifier.h> 29 28 30 namespace WebKit { 29 31 … … 44 46 typedef uint64_t ActivityStateChangeID; 45 47 48 enum DrawingAreaIdentifierType { }; 49 using DrawingAreaIdentifier = ObjectIdentifier<DrawingAreaIdentifierType>; 50 46 51 } // namespace WebKit -
trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp
r241260 r241988 38 38 encoder << store; 39 39 encoder.encodeEnum(drawingAreaType); 40 encoder << drawingAreaIdentifier; 40 41 encoder << pageGroupData; 41 42 encoder << drawsBackground; … … 139 140 if (!decoder.decodeEnum(parameters.drawingAreaType)) 140 141 return WTF::nullopt; 142 Optional<DrawingAreaIdentifier> drawingAreaIdentifier; 143 decoder >> drawingAreaIdentifier; 144 if (!drawingAreaIdentifier) 145 return WTF::nullopt; 146 parameters.drawingAreaIdentifier = *drawingAreaIdentifier; 141 147 Optional<WebPageGroupData> pageGroupData; 142 148 decoder >> pageGroupData; -
trunk/Source/WebKit/Shared/WebPageCreationParameters.h
r241260 r241988 72 72 WebPreferencesStore store; 73 73 DrawingAreaType drawingAreaType; 74 DrawingAreaIdentifier drawingAreaIdentifier; 74 75 WebPageGroupData pageGroupData; 75 76 -
trunk/Source/WebKit/UIProcess/AcceleratedDrawingAreaProxy.cpp
r240046 r241988 184 184 m_isWaitingForDidUpdateBackingStoreState = respondImmediatelyOrNot == RespondImmediately; 185 185 186 process().send(Messages::DrawingArea::UpdateBackingStoreState(m_nextBackingStoreStateID, respondImmediatelyOrNot == RespondImmediately, m_webPageProxy.deviceScaleFactor(), m_size, m_scrollOffset), m_webPageProxy.pageID());186 send(Messages::DrawingArea::UpdateBackingStoreState(m_nextBackingStoreStateID, respondImmediatelyOrNot == RespondImmediately, m_webPageProxy.deviceScaleFactor(), m_size, m_scrollOffset)); 187 187 m_scrollOffset = IntSize(); 188 188 … … 223 223 224 224 // The timeout, in seconds, we use when waiting for a DidUpdateBackingStoreState message when we're asked to paint. 225 process().connection()->waitForAndDispatchImmediately<Messages::DrawingAreaProxy::DidUpdateBackingStoreState>(m_ webPageProxy.pageID(), Seconds::fromMilliseconds(500));225 process().connection()->waitForAndDispatchImmediately<Messages::DrawingAreaProxy::DidUpdateBackingStoreState>(m_identifier.toUInt64(), Seconds::fromMilliseconds(500)); 226 226 } 227 227 … … 257 257 return; 258 258 } 259 process().send(Messages::DrawingArea::SetNativeSurfaceHandleForCompositing(handle), m_webPageProxy.pageID(), IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);259 send(Messages::DrawingArea::SetNativeSurfaceHandleForCompositing(handle), IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply); 260 260 } 261 261 … … 267 267 } 268 268 bool handled; 269 process().sendSync(Messages::DrawingArea::DestroyNativeSurfaceHandleForCompositing(), Messages::DrawingArea::DestroyNativeSurfaceHandleForCompositing::Reply(handled), m_webPageProxy.pageID());269 sendSync(Messages::DrawingArea::DestroyNativeSurfaceHandleForCompositing(), Messages::DrawingArea::DestroyNativeSurfaceHandleForCompositing::Reply(handled)); 270 270 } 271 271 #endif -
trunk/Source/WebKit/UIProcess/DrawingAreaProxy.cpp
r240046 r241988 41 41 DrawingAreaProxy::DrawingAreaProxy(DrawingAreaType type, WebPageProxy& webPageProxy, WebProcessProxy& process) 42 42 : m_type(type) 43 , m_identifier(DrawingAreaIdentifier::generate()) 43 44 , m_webPageProxy(webPageProxy) 44 45 , m_process(makeRef(process)) … … 48 49 #endif 49 50 { 50 process.addMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_ webPageProxy.pageID(), *this);51 process.addMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64(), *this); 51 52 } 52 53 53 54 DrawingAreaProxy::~DrawingAreaProxy() 54 55 { 55 process().removeMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_ webPageProxy.pageID());56 process().removeMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64()); 56 57 } 57 58 … … 73 74 } 74 75 #endif 76 77 IPC::Connection* DrawingAreaProxy::messageSenderConnection() const 78 { 79 return process().connection(); 80 } 81 82 bool DrawingAreaProxy::sendMessage(std::unique_ptr<IPC::Encoder> encoder, OptionSet<IPC::SendOption> sendOptions) 83 { 84 return process().sendMessage(WTFMove(encoder), sendOptions); 85 } 75 86 76 87 #if PLATFORM(MAC) … … 94 105 return; 95 106 96 process().send(Messages::DrawingArea::SetViewExposedRect(m_viewExposedRect), m_webPageProxy.pageID());107 send(Messages::DrawingArea::SetViewExposedRect(m_viewExposedRect)); 97 108 m_lastSentViewExposedRect = m_viewExposedRect; 98 109 } -
trunk/Source/WebKit/UIProcess/DrawingAreaProxy.h
r240046 r241988 30 30 #include "GenericCallback.h" 31 31 #include "MessageReceiver.h" 32 #include "MessageSender.h" 32 33 #include <WebCore/FloatRect.h> 33 34 #include <WebCore/IntRect.h> … … 51 52 class WebProcessProxy; 52 53 53 class DrawingAreaProxy : public IPC::MessageReceiver {54 class DrawingAreaProxy : public IPC::MessageReceiver, protected IPC::MessageSender { 54 55 WTF_MAKE_NONCOPYABLE(DrawingAreaProxy); 55 56 … … 58 59 59 60 DrawingAreaType type() const { return m_type; } 61 DrawingAreaIdentifier identifier() const { return m_identifier; } 60 62 61 63 virtual void deviceScaleFactorDidChange() = 0; … … 110 112 WebPageProxy& page() const { return m_webPageProxy; } 111 113 WebProcessProxy& process() { return m_process.get(); } 114 const WebProcessProxy& process() const { return m_process.get(); } 112 115 113 116 protected: … … 115 118 116 119 DrawingAreaType m_type; 120 DrawingAreaIdentifier m_identifier; 117 121 WebPageProxy& m_webPageProxy; 118 122 Ref<WebProcessProxy> m_process; … … 126 130 private: 127 131 virtual void sizeDidChange() = 0; 132 133 IPC::Connection* messageSenderConnection() const final; 134 uint64_t messageSenderDestinationID() const final { return m_identifier.toUInt64(); } 135 bool sendMessage(std::unique_ptr<IPC::Encoder>, OptionSet<IPC::SendOption>) final; 128 136 129 137 // Message handlers. -
trunk/Source/WebKit/UIProcess/DrawingAreaProxyImpl.cpp
r240046 r241988 125 125 126 126 incorporateUpdate(updateInfo); 127 process().send(Messages::DrawingArea::DidUpdate(), m_webPageProxy.pageID());127 send(Messages::DrawingArea::DidUpdate()); 128 128 } 129 129 -
trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
r241963 r241988 136 136 m_drawingArea = m_page.pageClient().createDrawingAreaProxy(m_process); 137 137 138 auto parameters = m_page.creationParameters(m_process );138 auto parameters = m_page.creationParameters(m_process, *m_drawingArea); 139 139 parameters.isProcessSwap = true; 140 140 m_process->send(Messages::WebProcess::CreateWebPage(m_page.pageID(), parameters), 0); -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
r241934 r241988 116 116 #endif 117 117 118 process.addMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_ webPageProxy.pageID(), *this);118 process.addMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64(), *this); 119 119 120 120 if (m_webPageProxy.preferences().tiledScrollingIndicatorVisible()) … … 125 125 { 126 126 m_callbacks.invalidate(CallbackBase::Error::OwnerWasInvalidated); 127 process().removeMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_ webPageProxy.pageID());127 process().removeMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64()); 128 128 129 129 #if PLATFORM(IOS_FAMILY) … … 162 162 void RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange() 163 163 { 164 process().send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()), m_webPageProxy.pageID());164 send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor())); 165 165 } 166 166 … … 180 180 { 181 181 m_lastSentSize = m_size; 182 process().send(Messages::DrawingArea::UpdateGeometry(m_size, false /* flushSynchronously */, MachSendRight()), m_webPageProxy.pageID());182 send(Messages::DrawingArea::UpdateGeometry(m_size, false /* flushSynchronously */, MachSendRight())); 183 183 m_isWaitingForDidUpdateGeometry = true; 184 184 } … … 265 265 void RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart(uint64_t layerID, const String& key, MonotonicTime startTime) 266 266 { 267 process().send(Messages::DrawingArea::AcceleratedAnimationDidStart(layerID, key, startTime), m_webPageProxy.pageID());267 send(Messages::DrawingArea::AcceleratedAnimationDidStart(layerID, key, startTime)); 268 268 } 269 269 270 270 void RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd(uint64_t layerID, const String& key) 271 271 { 272 process().send(Messages::DrawingArea::AcceleratedAnimationDidEnd(layerID, key), m_webPageProxy.pageID());272 send(Messages::DrawingArea::AcceleratedAnimationDidEnd(layerID, key)); 273 273 } 274 274 … … 431 431 // using our backing store. We can improve this by waiting for the render server to commit 432 432 // if we find API to do so, but for now we will make extra buffers if need be. 433 process().send(Messages::DrawingArea::DidUpdate(), m_webPageProxy.pageID());433 send(Messages::DrawingArea::DidUpdate()); 434 434 435 435 m_lastVisibleTransactionID = m_transactionIDForPendingCACommit; … … 459 459 460 460 auto startTime = MonotonicTime::now(); 461 while (process().connection()->waitForAndDispatchImmediately<Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree>(m_ webPageProxy.pageID(), activityStateUpdateTimeout - (MonotonicTime::now() - startTime), IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives)) {461 while (process().connection()->waitForAndDispatchImmediately<Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree>(m_identifier.toUInt64(), activityStateUpdateTimeout - (MonotonicTime::now() - startTime), IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives)) { 462 462 if (activityStateChangeID == ActivityStateChangeAsynchronous || activityStateChangeID <= m_activityStateChangeID) 463 463 return; … … 472 472 } 473 473 474 process().send(Messages::DrawingArea::AddTransactionCallbackID(m_callbacks.put(WTFMove(callbackFunction), process().throttler().backgroundActivityToken())), m_webPageProxy.pageID());474 send(Messages::DrawingArea::AddTransactionCallbackID(m_callbacks.put(WTFMove(callbackFunction), process().throttler().backgroundActivityToken()))); 475 475 } 476 476 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r241926 r241988 945 945 ASSERT(m_drawingArea); 946 946 947 process().send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters(m_process )), 0);947 process().send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters(m_process, *m_drawingArea)), 0); 948 948 949 949 m_needsToFinishInitializingWebPageAfterProcessLaunch = true; … … 4879 4879 newPage->setOpenedByDOM(); 4880 4880 4881 reply(newPage->pageID(), newPage->creationParameters(m_process ));4881 reply(newPage->pageID(), newPage->creationParameters(m_process, *newPage->drawingArea())); 4882 4882 4883 4883 WebsiteDataStore::cloneSessionData(*this, *newPage); … … 6858 6858 } 6859 6859 6860 WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process )6860 WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea) 6861 6861 { 6862 6862 WebPageCreationParameters parameters; … … 6864 6864 parameters.viewSize = pageClient().viewSize(); 6865 6865 parameters.activityState = m_activityState; 6866 parameters.drawingAreaType = m_drawingArea->type(); 6866 parameters.drawingAreaType = drawingArea.type(); 6867 parameters.drawingAreaIdentifier = drawingArea.identifier(); 6867 6868 parameters.store = preferencesStore(); 6868 6869 parameters.pageGroupData = m_pageGroup->data(); -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r241971 r241988 1080 1080 void didCancelForOpenPanel(); 1081 1081 1082 WebPageCreationParameters creationParameters(WebProcessProxy& );1082 WebPageCreationParameters creationParameters(WebProcessProxy&, DrawingAreaProxy&); 1083 1083 1084 1084 void handleDownloadRequest(DownloadProxy*); -
trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm
r240046 r241988 56 56 void TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange() 57 57 { 58 process().send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()), m_webPageProxy.pageID());58 send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor())); 59 59 } 60 60 … … 74 74 void TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange() 75 75 { 76 process().send(Messages::DrawingArea::SetColorSpace(m_webPageProxy.colorSpace()), m_webPageProxy.pageID());76 send(Messages::DrawingArea::SetColorSpace(m_webPageProxy.colorSpace())); 77 77 } 78 78 … … 123 123 { 124 124 Seconds activityStateUpdateTimeout = Seconds::fromMilliseconds(250); 125 process().connection()->waitForAndDispatchImmediately<Messages::WebPageProxy::DidUpdateActivityState>(m_ webPageProxy.pageID(), activityStateUpdateTimeout, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);125 process().connection()->waitForAndDispatchImmediately<Messages::WebPageProxy::DidUpdateActivityState>(m_identifier.toUInt64(), activityStateUpdateTimeout, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives); 126 126 } 127 127 … … 183 183 184 184 willSendUpdateGeometry(); 185 process().send(Messages::DrawingArea::UpdateGeometry(m_size, true /* flushSynchronously */, createFence()), m_webPageProxy.pageID());185 send(Messages::DrawingArea::UpdateGeometry(m_size, true /* flushSynchronously */, createFence())); 186 186 } 187 187 188 188 void TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom(double scale, FloatPoint origin) 189 189 { 190 process().send(Messages::DrawingArea::AdjustTransientZoom(scale, origin), m_webPageProxy.pageID());190 send(Messages::DrawingArea::AdjustTransientZoom(scale, origin)); 191 191 } 192 192 193 193 void TiledCoreAnimationDrawingAreaProxy::commitTransientZoom(double scale, FloatPoint origin) 194 194 { 195 process().send(Messages::DrawingArea::CommitTransientZoom(scale, origin), m_webPageProxy.pageID());195 send(Messages::DrawingArea::CommitTransientZoom(scale, origin)); 196 196 } 197 197 … … 203 203 } 204 204 205 process().send(Messages::DrawingArea::AddTransactionCallbackID(m_callbacks.put(WTFMove(callback), nullptr)), m_webPageProxy.pageID());205 send(Messages::DrawingArea::AddTransactionCallbackID(m_callbacks.put(WTFMove(callback), nullptr))); 206 206 } 207 207 -
trunk/Source/WebKit/WebProcess/WebPage/AcceleratedDrawingArea.cpp
r240940 r241988 54 54 55 55 AcceleratedDrawingArea::AcceleratedDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters) 56 : DrawingArea(DrawingAreaTypeImpl, webPage)56 : DrawingArea(DrawingAreaTypeImpl, parameters.drawingAreaIdentifier, webPage) 57 57 , m_exitCompositingTimer(RunLoop::main(), this, &AcceleratedDrawingArea::exitAcceleratedCompositingMode) 58 58 , m_discardPreviousLayerTreeHostTimer(RunLoop::main(), this, &AcceleratedDrawingArea::discardPreviousLayerTreeHost) … … 184 184 ASSERT(!m_compositingAccordingToProxyMessages); 185 185 if (!exitAcceleratedCompositingModePending()) { 186 m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(m_backingStoreStateID, m_layerTreeHost->layerTreeContext()));186 send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(m_backingStoreStateID, m_layerTreeHost->layerTreeContext())); 187 187 m_compositingAccordingToProxyMessages = true; 188 188 } … … 308 308 } 309 309 310 m_webPage.send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext));310 send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext)); 311 311 m_compositingAccordingToProxyMessages = !layerTreeContext.isEmpty(); 312 312 } -
trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.cpp
r241899 r241988 70 70 } 71 71 72 DrawingArea::DrawingArea(DrawingAreaType type, WebPage& webPage)72 DrawingArea::DrawingArea(DrawingAreaType type, DrawingAreaIdentifier identifier, WebPage& webPage) 73 73 : m_type(type) 74 , m_identifier(identifier) 74 75 , m_webPage(webPage) 75 76 { 76 WebProcess::singleton().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_ webPage.pageID(), *this);77 WebProcess::singleton().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_identifier.toUInt64(), *this); 77 78 } 78 79 … … 100 101 return; 101 102 m_hasRemovedMessageReceiver = true; 102 WebProcess::singleton().removeMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_ webPage.pageID());103 WebProcess::singleton().removeMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_identifier.toUInt64()); 103 104 } 104 105 -
trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h
r241899 r241988 30 30 #include "LayerTreeContext.h" 31 31 #include "MessageReceiver.h" 32 #include "WebPage.h" 32 33 #include <WebCore/ActivityState.h> 33 34 #include <WebCore/FloatRect.h> … … 62 63 struct ColorSpaceData; 63 64 class LayerTreeHost; 64 class WebPage;65 65 struct WebPageCreationParameters; 66 66 struct WebPreferencesStore; … … 75 75 76 76 DrawingAreaType type() const { return m_type; } 77 DrawingAreaIdentifier identifier() const { return m_identifier; } 77 78 78 79 virtual void setNeedsDisplay() = 0; … … 156 157 157 158 protected: 158 DrawingArea(DrawingAreaType, WebPage&); 159 DrawingArea(DrawingAreaType, DrawingAreaIdentifier, WebPage&); 160 161 template<typename U> bool send(const U& message) 162 { 163 return m_webPage.send(message, m_identifier.toUInt64(), { }); 164 } 159 165 160 166 DrawingAreaType m_type; 167 DrawingAreaIdentifier m_identifier; 161 168 WebPage& m_webPage; 162 169 -
trunk/Source/WebKit/WebProcess/WebPage/DrawingAreaImpl.cpp
r239535 r241988 243 243 244 244 LayerTreeContext layerTreeContext; 245 m_webPage.send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext));245 send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext)); 246 246 m_compositingAccordingToProxyMessages = false; 247 247 return; … … 309 309 // accelerated compositing mode, eliminiating flicker. 310 310 if (m_compositingAccordingToProxyMessages) { 311 m_webPage.send(Messages::DrawingAreaProxy::ExitAcceleratedCompositingMode(m_backingStoreStateID, updateInfo));311 send(Messages::DrawingAreaProxy::ExitAcceleratedCompositingMode(m_backingStoreStateID, updateInfo)); 312 312 m_compositingAccordingToProxyMessages = false; 313 313 } else { 314 314 // If we left accelerated compositing mode before we sent an EnterAcceleratedCompositingMode message to the 315 315 // UI process, we still need to let it know about the new contents, so send an Update message. 316 m_webPage.send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo));316 send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo)); 317 317 } 318 318 } … … 368 368 } 369 369 370 m_webPage.send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo));370 send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo)); 371 371 m_isWaitingForDidUpdate = true; 372 372 } -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
r241899 r241988 37 37 #import "RemoteScrollingCoordinatorTransaction.h" 38 38 #import "WebPage.h" 39 #import "WebPageCreationParameters.h" 39 40 #import "WebPageProxyMessages.h" 40 41 #import "WebProcess.h" … … 55 56 using namespace WebCore; 56 57 57 RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage& webPage, const WebPageCreationParameters& )58 : DrawingArea(DrawingAreaTypeRemoteLayerTree, webPage)58 RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters) 59 : DrawingArea(DrawingAreaTypeRemoteLayerTree, parameters.drawingAreaIdentifier, webPage) 59 60 , m_remoteLayerTreeContext(std::make_unique<RemoteLayerTreeContext>(webPage)) 60 61 , m_rootLayer(GraphicsLayer::create(graphicsLayerFactory(), *this)) … … 147 148 scheduleCompositingLayerFlush(); 148 149 149 m_webPage.send(Messages::DrawingAreaProxy::DidUpdateGeometry());150 send(Messages::DrawingAreaProxy::DidUpdateGeometry()); 150 151 } 151 152 … … 400 401 m_waitingForBackingStoreSwap = true; 401 402 402 m_webPage.send(Messages::RemoteLayerTreeDrawingAreaProxy::WillCommitLayerTree(layerTransaction.transactionID()));403 send(Messages::RemoteLayerTreeDrawingAreaProxy::WillCommitLayerTree(layerTransaction.transactionID())); 403 404 404 405 Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree message(layerTransaction, scrollingTransaction); 405 auto commitEncoder = std::make_unique<IPC::Encoder>(Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::receiverName(), Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::name(), m_ webPage.pageID());406 auto commitEncoder = std::make_unique<IPC::Encoder>(Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::receiverName(), Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::name(), m_identifier.toUInt64()); 406 407 commitEncoder->encode(message.arguments()); 407 408 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r241950 r241988 710 710 unfreezeLayerTree(LayerTreeFreezeReason::PageSuspended); 711 711 } 712 RELEASE_ASSERT(m_drawingArea->identifier() == parameters.drawingAreaIdentifier); 712 713 713 714 setViewLayoutSize(parameters.viewLayoutSize); -
trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r240963 r241988 75 75 76 76 TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters) 77 : DrawingArea(DrawingAreaTypeTiledCoreAnimation, webPage)77 : DrawingArea(DrawingAreaTypeTiledCoreAnimation, parameters.drawingAreaIdentifier, webPage) 78 78 , m_layerTreeStateIsFrozen(false) 79 79 , m_isPaintingSuspended(!(parameters.activityState & ActivityState::IsVisible)) … … 119 119 LayerTreeContext layerTreeContext; 120 120 layerTreeContext.contextID = m_layerHostingContext->contextID(); 121 m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext));121 send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext)); 122 122 }); 123 123 } … … 299 299 300 300 m_lastSentIntrinsicContentSize = contentSize; 301 m_webPage.send(Messages::DrawingAreaProxy::IntrinsicContentSizeDidChange(contentSize));301 send(Messages::DrawingAreaProxy::IntrinsicContentSizeDidChange(contentSize)); 302 302 } 303 303 … … 505 505 506 506 if (!m_pendingCallbackIDs.isEmpty()) { 507 m_webPage.send(Messages::DrawingAreaProxy::DispatchPresentationCallbacksAfterFlushingLayers(m_pendingCallbackIDs));507 send(Messages::DrawingAreaProxy::DispatchPresentationCallbacksAfterFlushingLayers(m_pendingCallbackIDs)); 508 508 m_pendingCallbackIDs.clear(); 509 509 } … … 631 631 [CATransaction flush]; 632 632 633 m_webPage.send(Messages::DrawingAreaProxy::DidUpdateGeometry());633 send(Messages::DrawingAreaProxy::DidUpdateGeometry()); 634 634 635 635 m_inUpdateGeometry = false; … … 650 650 LayerTreeContext layerTreeContext; 651 651 layerTreeContext.contextID = m_layerHostingContext->contextID(); 652 m_webPage.send(Messages::DrawingAreaProxy::UpdateAcceleratedCompositingMode(0, layerTreeContext));652 send(Messages::DrawingAreaProxy::UpdateAcceleratedCompositingMode(0, layerTreeContext)); 653 653 } 654 654
Note: See TracChangeset
for help on using the changeset viewer.