Changeset 241988 in webkit


Ignore:
Timestamp:
Feb 22, 2019 9:30:19 PM (5 years ago)
Author:
Chris Dumez
Message:

Give DrawingAreas their own identifiers
https://bugs.webkit.org/show_bug.cgi?id=194969
<rdar://problem/48154508>

Reviewed by Geoffrey Garen.

Give DrawingAreas their own identifiers instead of using the pageID. It will make the IPC more robust now that a
WebPageProxy can have several drawing areas with PSON.

  • Shared/DrawingAreaInfo.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
(WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
(WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):

  • UIProcess/DrawingAreaProxy.cpp:

(WebKit::DrawingAreaProxy::DrawingAreaProxy):
(WebKit::DrawingAreaProxy::~DrawingAreaProxy):
(WebKit::DrawingAreaProxy::messageSenderConnection const):
(WebKit::DrawingAreaProxy::sendMessage):
(WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):

  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::identifier const):
(WebKit::DrawingAreaProxy::process const):

  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::update):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::initializeWebPage):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
(WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
(WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
(WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
(WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
(WebKit::AcceleratedDrawingArea::layerHostDidFlushLayers):
(WebKit::AcceleratedDrawingArea::sendDidUpdateBackingStoreState):

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::DrawingArea):
(WebKit::DrawingArea::removeMessageReceiverIfNeeded):

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::identifier const):
(WebKit::DrawingArea::send):

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState):
(WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
(WebKit::DrawingAreaImpl::display):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::reinitializeWebPage):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
(WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):

Location:
trunk/Source/WebKit
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r241985 r241988  
     12019-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
    1862019-02-22  Andy Estes  <aestes@apple.com>
    287
  • trunk/Source/WebKit/Shared/DrawingAreaInfo.h

    r237266 r241988  
    2626#pragma once
    2727
     28#include <wtf/ObjectIdentifier.h>
     29
    2830namespace WebKit {
    2931
     
    4446typedef uint64_t ActivityStateChangeID;
    4547
     48enum DrawingAreaIdentifierType { };
     49using DrawingAreaIdentifier = ObjectIdentifier<DrawingAreaIdentifierType>;
     50
    4651} // namespace WebKit
  • trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp

    r241260 r241988  
    3838    encoder << store;
    3939    encoder.encodeEnum(drawingAreaType);
     40    encoder << drawingAreaIdentifier;
    4041    encoder << pageGroupData;
    4142    encoder << drawsBackground;
     
    139140    if (!decoder.decodeEnum(parameters.drawingAreaType))
    140141        return WTF::nullopt;
     142    Optional<DrawingAreaIdentifier> drawingAreaIdentifier;
     143    decoder >> drawingAreaIdentifier;
     144    if (!drawingAreaIdentifier)
     145        return WTF::nullopt;
     146    parameters.drawingAreaIdentifier = *drawingAreaIdentifier;
    141147    Optional<WebPageGroupData> pageGroupData;
    142148    decoder >> pageGroupData;
  • trunk/Source/WebKit/Shared/WebPageCreationParameters.h

    r241260 r241988  
    7272    WebPreferencesStore store;
    7373    DrawingAreaType drawingAreaType;
     74    DrawingAreaIdentifier drawingAreaIdentifier;
    7475    WebPageGroupData pageGroupData;
    7576
  • trunk/Source/WebKit/UIProcess/AcceleratedDrawingAreaProxy.cpp

    r240046 r241988  
    184184    m_isWaitingForDidUpdateBackingStoreState = respondImmediatelyOrNot == RespondImmediately;
    185185
    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));
    187187    m_scrollOffset = IntSize();
    188188
     
    223223
    224224    // 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));
    226226}
    227227
     
    257257        return;
    258258    }
    259     process().send(Messages::DrawingArea::SetNativeSurfaceHandleForCompositing(handle), m_webPageProxy.pageID(), IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
     259    send(Messages::DrawingArea::SetNativeSurfaceHandleForCompositing(handle), IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
    260260}
    261261
     
    267267    }
    268268    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));
    270270}
    271271#endif
  • trunk/Source/WebKit/UIProcess/DrawingAreaProxy.cpp

    r240046 r241988  
    4141DrawingAreaProxy::DrawingAreaProxy(DrawingAreaType type, WebPageProxy& webPageProxy, WebProcessProxy& process)
    4242    : m_type(type)
     43    , m_identifier(DrawingAreaIdentifier::generate())
    4344    , m_webPageProxy(webPageProxy)
    4445    , m_process(makeRef(process))
     
    4849#endif
    4950{
    50     process.addMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_webPageProxy.pageID(), *this);
     51    process.addMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64(), *this);
    5152}
    5253
    5354DrawingAreaProxy::~DrawingAreaProxy()
    5455{
    55     process().removeMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_webPageProxy.pageID());
     56    process().removeMessageReceiver(Messages::DrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64());
    5657}
    5758
     
    7374}
    7475#endif
     76
     77IPC::Connection* DrawingAreaProxy::messageSenderConnection() const
     78{
     79    return process().connection();
     80}
     81
     82bool DrawingAreaProxy::sendMessage(std::unique_ptr<IPC::Encoder> encoder, OptionSet<IPC::SendOption> sendOptions)
     83{
     84    return process().sendMessage(WTFMove(encoder), sendOptions);
     85}
    7586
    7687#if PLATFORM(MAC)
     
    94105        return;
    95106
    96     process().send(Messages::DrawingArea::SetViewExposedRect(m_viewExposedRect), m_webPageProxy.pageID());
     107    send(Messages::DrawingArea::SetViewExposedRect(m_viewExposedRect));
    97108    m_lastSentViewExposedRect = m_viewExposedRect;
    98109}
  • trunk/Source/WebKit/UIProcess/DrawingAreaProxy.h

    r240046 r241988  
    3030#include "GenericCallback.h"
    3131#include "MessageReceiver.h"
     32#include "MessageSender.h"
    3233#include <WebCore/FloatRect.h>
    3334#include <WebCore/IntRect.h>
     
    5152class WebProcessProxy;
    5253
    53 class DrawingAreaProxy : public IPC::MessageReceiver {
     54class DrawingAreaProxy : public IPC::MessageReceiver, protected IPC::MessageSender {
    5455    WTF_MAKE_NONCOPYABLE(DrawingAreaProxy);
    5556
     
    5859
    5960    DrawingAreaType type() const { return m_type; }
     61    DrawingAreaIdentifier identifier() const { return m_identifier; }
    6062
    6163    virtual void deviceScaleFactorDidChange() = 0;
     
    110112    WebPageProxy& page() const { return m_webPageProxy; }
    111113    WebProcessProxy& process() { return m_process.get(); }
     114    const WebProcessProxy& process() const { return m_process.get(); }
    112115
    113116protected:
     
    115118
    116119    DrawingAreaType m_type;
     120    DrawingAreaIdentifier m_identifier;
    117121    WebPageProxy& m_webPageProxy;
    118122    Ref<WebProcessProxy> m_process;
     
    126130private:
    127131    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;
    128136
    129137    // Message handlers.
  • trunk/Source/WebKit/UIProcess/DrawingAreaProxyImpl.cpp

    r240046 r241988  
    125125
    126126    incorporateUpdate(updateInfo);
    127     process().send(Messages::DrawingArea::DidUpdate(), m_webPageProxy.pageID());
     127    send(Messages::DrawingArea::DidUpdate());
    128128}
    129129
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp

    r241963 r241988  
    136136    m_drawingArea = m_page.pageClient().createDrawingAreaProxy(m_process);
    137137
    138     auto parameters = m_page.creationParameters(m_process);
     138    auto parameters = m_page.creationParameters(m_process, *m_drawingArea);
    139139    parameters.isProcessSwap = true;
    140140    m_process->send(Messages::WebProcess::CreateWebPage(m_page.pageID(), parameters), 0);
  • trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

    r241934 r241988  
    116116#endif
    117117
    118     process.addMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_webPageProxy.pageID(), *this);
     118    process.addMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64(), *this);
    119119
    120120    if (m_webPageProxy.preferences().tiledScrollingIndicatorVisible())
     
    125125{
    126126    m_callbacks.invalidate(CallbackBase::Error::OwnerWasInvalidated);
    127     process().removeMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_webPageProxy.pageID());
     127    process().removeMessageReceiver(Messages::RemoteLayerTreeDrawingAreaProxy::messageReceiverName(), m_identifier.toUInt64());
    128128
    129129#if PLATFORM(IOS_FAMILY)
     
    162162void RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange()
    163163{
    164     process().send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()), m_webPageProxy.pageID());
     164    send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()));
    165165}
    166166
     
    180180{
    181181    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()));
    183183    m_isWaitingForDidUpdateGeometry = true;
    184184}
     
    265265void RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart(uint64_t layerID, const String& key, MonotonicTime startTime)
    266266{
    267     process().send(Messages::DrawingArea::AcceleratedAnimationDidStart(layerID, key, startTime), m_webPageProxy.pageID());
     267    send(Messages::DrawingArea::AcceleratedAnimationDidStart(layerID, key, startTime));
    268268}
    269269
    270270void RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd(uint64_t layerID, const String& key)
    271271{
    272     process().send(Messages::DrawingArea::AcceleratedAnimationDidEnd(layerID, key), m_webPageProxy.pageID());
     272    send(Messages::DrawingArea::AcceleratedAnimationDidEnd(layerID, key));
    273273}
    274274
     
    431431    // using our backing store. We can improve this by waiting for the render server to commit
    432432    // 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());
    434434
    435435    m_lastVisibleTransactionID = m_transactionIDForPendingCACommit;
     
    459459
    460460    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)) {
    462462        if (activityStateChangeID == ActivityStateChangeAsynchronous || activityStateChangeID <= m_activityStateChangeID)
    463463            return;
     
    472472    }
    473473
    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())));
    475475}
    476476
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r241926 r241988  
    945945    ASSERT(m_drawingArea);
    946946
    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);
    948948
    949949    m_needsToFinishInitializingWebPageAfterProcessLaunch = true;
     
    48794879        newPage->setOpenedByDOM();
    48804880
    4881         reply(newPage->pageID(), newPage->creationParameters(m_process));
     4881        reply(newPage->pageID(), newPage->creationParameters(m_process, *newPage->drawingArea()));
    48824882
    48834883        WebsiteDataStore::cloneSessionData(*this, *newPage);
     
    68586858}
    68596859
    6860 WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process)
     6860WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea)
    68616861{
    68626862    WebPageCreationParameters parameters;
     
    68646864    parameters.viewSize = pageClient().viewSize();
    68656865    parameters.activityState = m_activityState;
    6866     parameters.drawingAreaType = m_drawingArea->type();
     6866    parameters.drawingAreaType = drawingArea.type();
     6867    parameters.drawingAreaIdentifier = drawingArea.identifier();
    68676868    parameters.store = preferencesStore();
    68686869    parameters.pageGroupData = m_pageGroup->data();
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r241971 r241988  
    10801080    void didCancelForOpenPanel();
    10811081
    1082     WebPageCreationParameters creationParameters(WebProcessProxy&);
     1082    WebPageCreationParameters creationParameters(WebProcessProxy&, DrawingAreaProxy&);
    10831083
    10841084    void handleDownloadRequest(DownloadProxy*);
  • trunk/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm

    r240046 r241988  
    5656void TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange()
    5757{
    58     process().send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()), m_webPageProxy.pageID());
     58    send(Messages::DrawingArea::SetDeviceScaleFactor(m_webPageProxy.deviceScaleFactor()));
    5959}
    6060
     
    7474void TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange()
    7575{
    76     process().send(Messages::DrawingArea::SetColorSpace(m_webPageProxy.colorSpace()), m_webPageProxy.pageID());
     76    send(Messages::DrawingArea::SetColorSpace(m_webPageProxy.colorSpace()));
    7777}
    7878
     
    123123{
    124124    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);
    126126}
    127127
     
    183183
    184184    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()));
    186186}
    187187
    188188void TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom(double scale, FloatPoint origin)
    189189{
    190     process().send(Messages::DrawingArea::AdjustTransientZoom(scale, origin), m_webPageProxy.pageID());
     190    send(Messages::DrawingArea::AdjustTransientZoom(scale, origin));
    191191}
    192192
    193193void TiledCoreAnimationDrawingAreaProxy::commitTransientZoom(double scale, FloatPoint origin)
    194194{
    195     process().send(Messages::DrawingArea::CommitTransientZoom(scale, origin), m_webPageProxy.pageID());
     195    send(Messages::DrawingArea::CommitTransientZoom(scale, origin));
    196196}
    197197
     
    203203    }
    204204
    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)));
    206206}
    207207
  • trunk/Source/WebKit/WebProcess/WebPage/AcceleratedDrawingArea.cpp

    r240940 r241988  
    5454
    5555AcceleratedDrawingArea::AcceleratedDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters)
    56     : DrawingArea(DrawingAreaTypeImpl, webPage)
     56    : DrawingArea(DrawingAreaTypeImpl, parameters.drawingAreaIdentifier, webPage)
    5757    , m_exitCompositingTimer(RunLoop::main(), this, &AcceleratedDrawingArea::exitAcceleratedCompositingMode)
    5858    , m_discardPreviousLayerTreeHostTimer(RunLoop::main(), this, &AcceleratedDrawingArea::discardPreviousLayerTreeHost)
     
    184184    ASSERT(!m_compositingAccordingToProxyMessages);
    185185    if (!exitAcceleratedCompositingModePending()) {
    186         m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(m_backingStoreStateID, m_layerTreeHost->layerTreeContext()));
     186        send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(m_backingStoreStateID, m_layerTreeHost->layerTreeContext()));
    187187        m_compositingAccordingToProxyMessages = true;
    188188    }
     
    308308    }
    309309
    310     m_webPage.send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext));
     310    send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext));
    311311    m_compositingAccordingToProxyMessages = !layerTreeContext.isEmpty();
    312312}
  • trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.cpp

    r241899 r241988  
    7070}
    7171
    72 DrawingArea::DrawingArea(DrawingAreaType type, WebPage& webPage)
     72DrawingArea::DrawingArea(DrawingAreaType type, DrawingAreaIdentifier identifier, WebPage& webPage)
    7373    : m_type(type)
     74    , m_identifier(identifier)
    7475    , m_webPage(webPage)
    7576{
    76     WebProcess::singleton().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_webPage.pageID(), *this);
     77    WebProcess::singleton().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_identifier.toUInt64(), *this);
    7778}
    7879
     
    100101        return;
    101102    m_hasRemovedMessageReceiver = true;
    102     WebProcess::singleton().removeMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_webPage.pageID());
     103    WebProcess::singleton().removeMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_identifier.toUInt64());
    103104}
    104105
  • trunk/Source/WebKit/WebProcess/WebPage/DrawingArea.h

    r241899 r241988  
    3030#include "LayerTreeContext.h"
    3131#include "MessageReceiver.h"
     32#include "WebPage.h"
    3233#include <WebCore/ActivityState.h>
    3334#include <WebCore/FloatRect.h>
     
    6263struct ColorSpaceData;
    6364class LayerTreeHost;
    64 class WebPage;
    6565struct WebPageCreationParameters;
    6666struct WebPreferencesStore;
     
    7575   
    7676    DrawingAreaType type() const { return m_type; }
     77    DrawingAreaIdentifier identifier() const { return m_identifier; }
    7778
    7879    virtual void setNeedsDisplay() = 0;
     
    156157
    157158protected:
    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    }
    159165
    160166    DrawingAreaType m_type;
     167    DrawingAreaIdentifier m_identifier;
    161168    WebPage& m_webPage;
    162169
  • trunk/Source/WebKit/WebProcess/WebPage/DrawingAreaImpl.cpp

    r239535 r241988  
    243243
    244244            LayerTreeContext layerTreeContext;
    245             m_webPage.send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext));
     245            send(Messages::DrawingAreaProxy::DidUpdateBackingStoreState(m_backingStoreStateID, updateInfo, layerTreeContext));
    246246            m_compositingAccordingToProxyMessages = false;
    247247            return;
     
    309309    // accelerated compositing mode, eliminiating flicker.
    310310    if (m_compositingAccordingToProxyMessages) {
    311         m_webPage.send(Messages::DrawingAreaProxy::ExitAcceleratedCompositingMode(m_backingStoreStateID, updateInfo));
     311        send(Messages::DrawingAreaProxy::ExitAcceleratedCompositingMode(m_backingStoreStateID, updateInfo));
    312312        m_compositingAccordingToProxyMessages = false;
    313313    } else {
    314314        // If we left accelerated compositing mode before we sent an EnterAcceleratedCompositingMode message to the
    315315        // 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));
    317317    }
    318318}
     
    368368    }
    369369
    370     m_webPage.send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo));
     370    send(Messages::DrawingAreaProxy::Update(m_backingStoreStateID, updateInfo));
    371371    m_isWaitingForDidUpdate = true;
    372372}
  • trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

    r241899 r241988  
    3737#import "RemoteScrollingCoordinatorTransaction.h"
    3838#import "WebPage.h"
     39#import "WebPageCreationParameters.h"
    3940#import "WebPageProxyMessages.h"
    4041#import "WebProcess.h"
     
    5556using namespace WebCore;
    5657
    57 RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage& webPage, const WebPageCreationParameters&)
    58     : DrawingArea(DrawingAreaTypeRemoteLayerTree, webPage)
     58RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters)
     59    : DrawingArea(DrawingAreaTypeRemoteLayerTree, parameters.drawingAreaIdentifier, webPage)
    5960    , m_remoteLayerTreeContext(std::make_unique<RemoteLayerTreeContext>(webPage))
    6061    , m_rootLayer(GraphicsLayer::create(graphicsLayerFactory(), *this))
     
    147148    scheduleCompositingLayerFlush();
    148149
    149     m_webPage.send(Messages::DrawingAreaProxy::DidUpdateGeometry());
     150    send(Messages::DrawingAreaProxy::DidUpdateGeometry());
    150151}
    151152
     
    400401    m_waitingForBackingStoreSwap = true;
    401402
    402     m_webPage.send(Messages::RemoteLayerTreeDrawingAreaProxy::WillCommitLayerTree(layerTransaction.transactionID()));
     403    send(Messages::RemoteLayerTreeDrawingAreaProxy::WillCommitLayerTree(layerTransaction.transactionID()));
    403404
    404405    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());
    406407    commitEncoder->encode(message.arguments());
    407408
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r241950 r241988  
    710710        unfreezeLayerTree(LayerTreeFreezeReason::PageSuspended);
    711711    }
     712    RELEASE_ASSERT(m_drawingArea->identifier() == parameters.drawingAreaIdentifier);
    712713
    713714    setViewLayoutSize(parameters.viewLayoutSize);
  • trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm

    r240963 r241988  
    7575
    7676TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters)
    77     : DrawingArea(DrawingAreaTypeTiledCoreAnimation, webPage)
     77    : DrawingArea(DrawingAreaTypeTiledCoreAnimation, parameters.drawingAreaIdentifier, webPage)
    7878    , m_layerTreeStateIsFrozen(false)
    7979    , m_isPaintingSuspended(!(parameters.activityState & ActivityState::IsVisible))
     
    119119        LayerTreeContext layerTreeContext;
    120120        layerTreeContext.contextID = m_layerHostingContext->contextID();
    121         m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext));
     121        send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext));
    122122    });
    123123}
     
    299299
    300300    m_lastSentIntrinsicContentSize = contentSize;
    301     m_webPage.send(Messages::DrawingAreaProxy::IntrinsicContentSizeDidChange(contentSize));
     301    send(Messages::DrawingAreaProxy::IntrinsicContentSizeDidChange(contentSize));
    302302}
    303303
     
    505505
    506506        if (!m_pendingCallbackIDs.isEmpty()) {
    507             m_webPage.send(Messages::DrawingAreaProxy::DispatchPresentationCallbacksAfterFlushingLayers(m_pendingCallbackIDs));
     507            send(Messages::DrawingAreaProxy::DispatchPresentationCallbacksAfterFlushingLayers(m_pendingCallbackIDs));
    508508            m_pendingCallbackIDs.clear();
    509509        }
     
    631631        [CATransaction flush];
    632632
    633     m_webPage.send(Messages::DrawingAreaProxy::DidUpdateGeometry());
     633    send(Messages::DrawingAreaProxy::DidUpdateGeometry());
    634634
    635635    m_inUpdateGeometry = false;
     
    650650    LayerTreeContext layerTreeContext;
    651651    layerTreeContext.contextID = m_layerHostingContext->contextID();
    652     m_webPage.send(Messages::DrawingAreaProxy::UpdateAcceleratedCompositingMode(0, layerTreeContext));
     652    send(Messages::DrawingAreaProxy::UpdateAcceleratedCompositingMode(0, layerTreeContext));
    653653}
    654654
Note: See TracChangeset for help on using the changeset viewer.