Changeset 148011 in webkit


Ignore:
Timestamp:
Apr 9, 2013 4:53:26 AM (11 years ago)
Author:
michael.bruning@digia.com
Message:

[Qt][WK2] Remove direct references to WebPageProxy from QQuickWebPage.
https://bugs.webkit.org/show_bug.cgi?id=112850

Reviewed by Andreas Kling.

Removes direct references to WebPageProxy from QQuickWebPage and prepares the
class for the move to QRawWebView. The access to the device scale factor and
CoordinatedGraphicsScene is provided through QQuickWebViewPrivate, and therefore
accessors to these properties are temporarily added. Eventually, this access will
be provided through QRawWebView when the move is complete.

This also moves the pointer to QtWebPageEventHandler from QQuickWebPagePrivate
to QQuickWebViewPrivate as it is mainly used from there.

  • UIProcess/API/qt/qquickwebpage.cpp:

(QQuickWebPagePrivate::QQuickWebPagePrivate):
(QQuickWebPagePrivate::paint):
(QQuickWebPage::updatePaintNode):

  • UIProcess/API/qt/qquickwebpage_p.h:
  • UIProcess/API/qt/qquickwebpage_p_p.h:

(QQuickWebPagePrivate):

  • UIProcess/API/qt/qquickwebview.cpp:

(QQuickWebViewPrivate::initialize):
(QQuickWebViewPrivate::handleMouseEvent):
(QQuickWebViewPrivate::processDidCrash):
(QQuickWebViewPrivate::coordinatedGraphicsScene):
(QQuickWebViewPrivate::deviceScaleFactor):
(QQuickWebViewPrivate::setIntrinsicDeviceScaleFactor):
(QQuickWebViewFlickablePrivate::onComponentComplete):
(QQuickWebView::keyPressEvent):
(QQuickWebView::keyReleaseEvent):
(QQuickWebView::inputMethodEvent):
(QQuickWebView::focusInEvent):
(QQuickWebView::itemChange):
(QQuickWebView::touchEvent):
(QQuickWebView::wheelEvent):
(QQuickWebView::hoverEnterEvent):
(QQuickWebView::hoverMoveEvent):
(QQuickWebView::hoverLeaveEvent):
(QQuickWebView::dragMoveEvent):
(QQuickWebView::dragEnterEvent):
(QQuickWebView::dragLeaveEvent):
(QQuickWebView::dropEvent):

  • UIProcess/API/qt/qquickwebview_p_p.h:

(WebCore):
(WebKit):
(QQuickWebViewPrivate):

Location:
trunk/Source/WebKit2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r148008 r148011  
     12013-04-09  Michael Brüning  <michael.bruning@digia.com>
     2
     3        [Qt][WK2] Remove direct references to WebPageProxy from QQuickWebPage.
     4        https://bugs.webkit.org/show_bug.cgi?id=112850
     5
     6        Reviewed by Andreas Kling.
     7
     8        Removes direct references to WebPageProxy from QQuickWebPage and prepares the
     9        class for the move to QRawWebView. The access to the device scale factor and
     10        CoordinatedGraphicsScene is provided through QQuickWebViewPrivate, and therefore
     11        accessors to these properties are temporarily added. Eventually, this access will
     12        be provided through QRawWebView when the move is complete.
     13
     14        This also moves the pointer to QtWebPageEventHandler from QQuickWebPagePrivate
     15        to QQuickWebViewPrivate as it is mainly used from there.
     16
     17        * UIProcess/API/qt/qquickwebpage.cpp:
     18        (QQuickWebPagePrivate::QQuickWebPagePrivate):
     19        (QQuickWebPagePrivate::paint):
     20        (QQuickWebPage::updatePaintNode):
     21        * UIProcess/API/qt/qquickwebpage_p.h:
     22        * UIProcess/API/qt/qquickwebpage_p_p.h:
     23        (QQuickWebPagePrivate):
     24        * UIProcess/API/qt/qquickwebview.cpp:
     25        (QQuickWebViewPrivate::initialize):
     26        (QQuickWebViewPrivate::handleMouseEvent):
     27        (QQuickWebViewPrivate::processDidCrash):
     28        (QQuickWebViewPrivate::coordinatedGraphicsScene):
     29        (QQuickWebViewPrivate::deviceScaleFactor):
     30        (QQuickWebViewPrivate::setIntrinsicDeviceScaleFactor):
     31        (QQuickWebViewFlickablePrivate::onComponentComplete):
     32        (QQuickWebView::keyPressEvent):
     33        (QQuickWebView::keyReleaseEvent):
     34        (QQuickWebView::inputMethodEvent):
     35        (QQuickWebView::focusInEvent):
     36        (QQuickWebView::itemChange):
     37        (QQuickWebView::touchEvent):
     38        (QQuickWebView::wheelEvent):
     39        (QQuickWebView::hoverEnterEvent):
     40        (QQuickWebView::hoverMoveEvent):
     41        (QQuickWebView::hoverLeaveEvent):
     42        (QQuickWebView::dragMoveEvent):
     43        (QQuickWebView::dragEnterEvent):
     44        (QQuickWebView::dragLeaveEvent):
     45        (QQuickWebView::dropEvent):
     46        * UIProcess/API/qt/qquickwebview_p_p.h:
     47        (WebCore):
     48        (WebKit):
     49        (QQuickWebViewPrivate):
     50
    1512013-04-09  Michael Brüning  <michael.bruning@digia.com>
    252
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp

    r142579 r148011  
    2222#include "qquickwebpage_p.h"
    2323
    24 #include "CoordinatedLayerTreeHostProxy.h"
    2524#include "QtWebPageEventHandler.h"
    2625#include "QtWebPageSGNode.h"
    2726#include "TransformationMatrix.h"
    28 #include "WebPageProxy.h"
    2927#include "qquickwebpage_p_p.h"
    3028#include "qquickwebview_p.h"
     29#include "qquickwebview_p_p.h"
    3130#include "qwebkittest_p.h"
    3231#include <QQuickWindow>
     
    5554    : q(q)
    5655    , viewportItem(viewportItem)
    57     , webPageProxy(0)
    5856    , paintingIsInitialized(false)
    5957    , contentsScale(1)
     
    6159}
    6260
    63 void QQuickWebPagePrivate::initialize(WebKit::WebPageProxy* webPageProxy)
     61void QQuickWebPagePrivate::paint(QPainter* painter)
    6462{
    65     this->webPageProxy = webPageProxy;
    66     eventHandler.reset(new QtWebPageEventHandler(toAPI(webPageProxy), q, viewportItem));
     63    if (WebCore::CoordinatedGraphicsScene* scene = QQuickWebViewPrivate::get(viewportItem)->coordinatedGraphicsScene())
     64        scene->paintToGraphicsContext(painter);
    6765}
    6866
    69 void QQuickWebPagePrivate::paint(QPainter* painter)
    70 {
    71     if (!webPageProxy->drawingArea())
    72         return;
    73 
    74     if (coordinatedLayerTreeHostProxy()->coordinatedGraphicsScene())
    75         coordinatedLayerTreeHostProxy()->coordinatedGraphicsScene()->paintToGraphicsContext(painter);
    76 }
    77 
    78 CoordinatedLayerTreeHostProxy* QQuickWebPagePrivate::coordinatedLayerTreeHostProxy()
    79 {
    80     if (webPageProxy->drawingArea())
    81         return webPageProxy->drawingArea()->coordinatedLayerTreeHostProxy();
    82 
    83     return 0;
    84 }
    8567
    8668QSGNode* QQuickWebPage::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData*)
    8769{
    88     if (!d->webPageProxy->drawingArea())
     70    QQuickWebViewPrivate* webViewPrivate = QQuickWebViewPrivate::get(d->viewportItem);
     71
     72    WebCore::CoordinatedGraphicsScene* scene = webViewPrivate->coordinatedGraphicsScene();
     73    if (!scene)
    8974        return oldNode;
    90 
    91     WebCore::CoordinatedGraphicsScene* scene = d->coordinatedLayerTreeHostProxy()->coordinatedGraphicsScene();
    9275
    9376    QtWebPageSGNode* node = static_cast<QtWebPageSGNode*>(oldNode);
     
    9679    ASSERT(window);
    9780
    98     if (window && d->webPageProxy->deviceScaleFactor() != window->devicePixelRatio()) {
    99         d->webPageProxy->setIntrinsicDeviceScaleFactor(window->devicePixelRatio());
     81    if (window && webViewPrivate->deviceScaleFactor() != window->devicePixelRatio()) {
     82        webViewPrivate->setIntrinsicDeviceScaleFactor(window->devicePixelRatio());
    10083        // This signal is queued since if we are running a threaded renderer. This might cause failures
    10184        // if tests are reading the new value between the property change and the signal emission.
     
    11093    node->setScale(d->contentsScale);
    11194    node->setDevicePixelRatio(window->devicePixelRatio());
    112     QColor backgroundColor = d->webPageProxy->drawsTransparentBackground() ? Qt::transparent : Qt::white;
     95    QColor backgroundColor = webViewPrivate->transparentBackground() ? Qt::transparent : Qt::white;
    11396    QRectF backgroundRect(QPointF(0, 0), d->contentsSize);
    11497    node->setBackground(backgroundRect, backgroundColor);
    11598
    11699    return node;
    117 }
    118 
    119 QtWebPageEventHandler* QQuickWebPage::eventHandler() const
    120 {
    121     return d->eventHandler.data();
    122100}
    123101
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p.h

    r114897 r148011  
    2929class QQuickWebPagePrivate;
    3030class QQuickWebView;
    31 class QWebPreferences;
    32 
    33 namespace WebKit {
    34 class QtWebPageEventHandler;
    35 }
    3631
    3732class QWEBKIT_EXPORT QQuickWebPage : public QQuickItem {
     
    4944    QTransform transformToItem() const;
    5045
    51     WebKit::QtWebPageEventHandler* eventHandler() const;
    52 
    5346protected:
    5447    virtual QSGNode* updatePaintNode(QSGNode*, UpdatePaintNodeData*);
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h

    r137358 r148011  
    2525#include <QTransform>
    2626
    27 namespace WebKit {
    28 class WebPageProxy;
    29 class QtWebPageEventHandler;
    30 class CoordinatedLayerTreeHostProxy;
    31 }
     27class QQuickWebViewPrivate;
    3228
    3329class QQuickWebPagePrivate {
     
    3632    ~QQuickWebPagePrivate();
    3733
    38     void initialize(WebKit::WebPageProxy*);
    39 
    4034    void updateSize();
    4135
    4236    void paint(QPainter*);
    4337    void resetPaintNode();
    44     WebKit::CoordinatedLayerTreeHostProxy* coordinatedLayerTreeHostProxy();
    45 
    46     QScopedPointer<WebKit::QtWebPageEventHandler> eventHandler;
    4738    QQuickWebPage* const q;
    4839    QQuickWebView* const viewportItem;
    49     WebKit::WebPageProxy* webPageProxy;
    5040    bool paintingIsInitialized;
    5141
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp

    r148008 r148011  
    2424#include "qquickwebview_p.h"
    2525
     26#include "CoordinatedLayerTreeHostProxy.h"
    2627#include "DownloadProxy.h"
    2728#include "DrawingAreaProxyImpl.h"
     
    7576#include <WKStringQt.h>
    7677#include <WKURLQt.h>
     78#include <WebCore/CoordinatedGraphicsScene.h>
    7779#include <WebCore/IntPoint.h>
    7880#include <WebCore/IntRect.h>
     
    334336#endif
    335337
    336     QQuickWebPagePrivate* const pageViewPrivate = pageView.data()->d;
    337     pageViewPrivate->initialize(webPageProxy.get());
     338    pageEventHandler.reset(new QtWebPageEventHandler(webPage.get(), pageView.data(), q_ptr));
    338339
    339340    {
     
    384385    webPageProxy->pageGroup()->preferences()->setForceCompositingMode(true);
    385386
    386     pageClient.initialize(q_ptr, pageViewPrivate->eventHandler.data(), &undoController);
     387    pageClient.initialize(q_ptr, pageEventHandler.data(), &undoController);
    387388    webPageProxy->initializeWebPage();
    388389    webPageProxy->registerApplicationScheme(ASCIILiteral("qrc"));
     
    540541    switch (event->type()) {
    541542    case QEvent::MouseButtonPress:
    542         pageView->eventHandler()->handleMousePressEvent(event);
     543        pageEventHandler->handleMousePressEvent(event);
    543544        break;
    544545    case QEvent::MouseMove:
    545         pageView->eventHandler()->handleMouseMoveEvent(event);
     546        pageEventHandler->handleMouseMoveEvent(event);
    546547        break;
    547548    case QEvent::MouseButtonRelease:
    548         pageView->eventHandler()->handleMouseReleaseEvent(event);
     549        pageEventHandler->handleMouseReleaseEvent(event);
    549550        break;
    550551    case QEvent::MouseButtonDblClick:
     
    589590    qWarning("WARNING: The web process experienced a crash on '%s'.", qPrintable(url.toString(QUrl::RemoveUserInfo)));
    590591
    591     pageView->eventHandler()->resetGestureRecognizers();
     592    pageEventHandler->resetGestureRecognizers();
    592593
    593594    // Check if loading was ongoing, when process crashed.
     
    937938}
    938939
     940CoordinatedGraphicsScene* QQuickWebViewPrivate::coordinatedGraphicsScene()
     941{
     942    if (webPageProxy && webPageProxy->drawingArea() && webPageProxy->drawingArea()->coordinatedLayerTreeHostProxy())
     943        return webPageProxy->drawingArea()->coordinatedLayerTreeHostProxy()->coordinatedGraphicsScene();
     944
     945    return 0;
     946}
     947
     948float QQuickWebViewPrivate::deviceScaleFactor()
     949{
     950    return webPageProxy->deviceScaleFactor();
     951}
     952
     953void QQuickWebViewPrivate::setIntrinsicDeviceScaleFactor(float scaleFactor)
     954{
     955    webPageProxy->setIntrinsicDeviceScaleFactor(scaleFactor);
     956}
     957
    939958QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate(QQuickWebView* viewport)
    940959    : QQuickWebViewPrivate(viewport)
     
    9971016    m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data()));
    9981017    m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data()));
    999     pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data());
     1018    pageEventHandler->setViewportController(m_pageViewportControllerClient.data());
    10001019
    10011020    // Trigger setting of correct visibility flags after everything was allocated and initialized.
     
    19441963{
    19451964    Q_D(QQuickWebView);
    1946     d->pageView->eventHandler()->handleKeyPressEvent(event);
     1965    d->pageEventHandler->handleKeyPressEvent(event);
    19471966}
    19481967
     
    19501969{
    19511970    Q_D(QQuickWebView);
    1952     d->pageView->eventHandler()->handleKeyReleaseEvent(event);
     1971    d->pageEventHandler->handleKeyReleaseEvent(event);
    19531972}
    19541973
     
    19561975{
    19571976    Q_D(QQuickWebView);
    1958     d->pageView->eventHandler()->handleInputMethodEvent(event);
     1977    d->pageEventHandler->handleInputMethodEvent(event);
    19591978}
    19601979
     
    19621981{
    19631982    Q_D(QQuickWebView);
    1964     d->pageView->eventHandler()->handleFocusInEvent(event);
     1983    d->pageEventHandler->handleFocusInEvent(event);
    19651984}
    19661985
     
    19711990        bool focus = value.boolValue;
    19721991        if (!focus)
    1973             d->pageView->eventHandler()->handleFocusLost();
     1992            d->pageEventHandler->handleFocusLost();
    19741993    }
    19751994    QQuickFlickable::itemChange(change, value);
     
    19912010
    19922011    forceActiveFocus();
    1993     d->pageView->eventHandler()->handleTouchEvent(event);
     2012    d->pageEventHandler->handleTouchEvent(event);
    19942013}
    19952014
     
    20232042{
    20242043    Q_D(QQuickWebView);
    2025     d->pageView->eventHandler()->handleWheelEvent(event);
     2044    d->pageEventHandler->handleWheelEvent(event);
    20262045}
    20272046
     
    20302049    Q_D(QQuickWebView);
    20312050    // Map HoverEnter to Move, for WebKit the distinction doesn't matter.
    2032     d->pageView->eventHandler()->handleHoverMoveEvent(event);
     2051    d->pageEventHandler->handleHoverMoveEvent(event);
    20332052}
    20342053
     
    20362055{
    20372056    Q_D(QQuickWebView);
    2038     d->pageView->eventHandler()->handleHoverMoveEvent(event);
     2057    d->pageEventHandler->handleHoverMoveEvent(event);
    20392058}
    20402059
     
    20422061{
    20432062    Q_D(QQuickWebView);
    2044     d->pageView->eventHandler()->handleHoverLeaveEvent(event);
     2063    d->pageEventHandler->handleHoverLeaveEvent(event);
    20452064}
    20462065
     
    20482067{
    20492068    Q_D(QQuickWebView);
    2050     d->pageView->eventHandler()->handleDragMoveEvent(event);
     2069    d->pageEventHandler->handleDragMoveEvent(event);
    20512070}
    20522071
     
    20542073{
    20552074    Q_D(QQuickWebView);
    2056     d->pageView->eventHandler()->handleDragEnterEvent(event);
     2075    d->pageEventHandler->handleDragEnterEvent(event);
    20572076}
    20582077
     
    20602079{
    20612080    Q_D(QQuickWebView);
    2062     d->pageView->eventHandler()->handleDragLeaveEvent(event);
     2081    d->pageEventHandler->handleDragLeaveEvent(event);
    20632082}
    20642083
     
    20662085{
    20672086    Q_D(QQuickWebView);
    2068     d->pageView->eventHandler()->handleDropEvent(event);
     2087    d->pageEventHandler->handleDropEvent(event);
    20692088}
    20702089
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h

    r145515 r148011  
    3838#include <wtf/RefPtr.h>
    3939
     40namespace WebCore {
     41class CoordinatedGraphicsScene;
     42}
     43
    4044namespace WebKit {
    4145class DownloadProxy;
     
    4549class QtWebContext;
    4650class QtWebError;
     51class QtWebPageEventHandler;
    4752class QtWebPagePolicyClient;
    4853class WebPageProxy;
     
    133138
    134139    void didReceiveMessageFromNavigatorQtObject(WKStringRef message);
     140
     141    WebCore::CoordinatedGraphicsScene* coordinatedGraphicsScene();
     142    float deviceScaleFactor();
     143    void setIntrinsicDeviceScaleFactor(float);
    135144
    136145protected:
     
    181190
    182191    QScopedPointer<QQuickWebPage> pageView;
     192    QScopedPointer<WebKit::QtWebPageEventHandler> pageEventHandler;
    183193    QQuickWebView* q_ptr;
    184194    QQuickWebViewExperimental* experimental;
Note: See TracChangeset for help on using the changeset viewer.