⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 130629 in webkit


Ignore:
Timestamp:
Oct 8, 2012, 3:41:27 AM (14 years ago)
Author:
jocelyn.turcotte@digia.com
Message:

[Qt] Prevent the PageViewportController from affecting the viewport in desktop mode
​https://bugs.webkit.org/show_bug.cgi?id=98427

Reviewed by Kenneth Rohde Christiansen.

QQuickFlickable isn't tightly bound to it anymore, we can avoid creating it
completely in this case.

  • UIProcess/API/qt/qquickwebview.cpp:

(QQuickWebViewFlickablePrivate::onComponentComplete):

  • UIProcess/API/qt/qquickwebview_p_p.h:

(QQuickWebViewPrivate::onComponentComplete):
(QQuickWebViewPrivate::viewportController):
(QQuickWebViewPrivate):
(QQuickWebViewFlickablePrivate::viewportController):
(QQuickWebViewFlickablePrivate):

  • UIProcess/qt/QtPageClient.cpp:

(WebKit::QtPageClient::didRenderFrame):
(WebKit::QtPageClient::didChangeContentsSize):
(WebKit::QtPageClient::pageTransitionViewportReady):

  • UIProcess/qt/QtWebPageLoadClient.cpp:

(WebKit::QtWebPageLoadClient::didCommitLoad):

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r130627 r130629  
     12012-10-04  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>
     2
     3        [Qt] Prevent the PageViewportController from affecting the viewport in desktop mode
     4        https://bugs.webkit.org/show_bug.cgi?id=98427
     5
     6        Reviewed by Kenneth Rohde Christiansen.
     7
     8        QQuickFlickable isn't tightly bound to it anymore, we can avoid creating it
     9        completely in this case.
     10
     11        * UIProcess/API/qt/qquickwebview.cpp:
     12        (QQuickWebViewFlickablePrivate::onComponentComplete):
     13        * UIProcess/API/qt/qquickwebview_p_p.h:
     14        (QQuickWebViewPrivate::onComponentComplete):
     15        (QQuickWebViewPrivate::viewportController):
     16        (QQuickWebViewPrivate):
     17        (QQuickWebViewFlickablePrivate::viewportController):
     18        (QQuickWebViewFlickablePrivate):
     19        * UIProcess/qt/QtPageClient.cpp:
     20        (WebKit::QtPageClient::didRenderFrame):
     21        (WebKit::QtPageClient::didChangeContentsSize):
     22        (WebKit::QtPageClient::pageTransitionViewportReady):
     23        * UIProcess/qt/QtWebPageLoadClient.cpp:
     24        (WebKit::QtWebPageLoadClient::didCommitLoad):
     25
    1262012-10-04  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>
    227
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp

    r130382 r130629  
    332332}
    333333
    334 void QQuickWebViewPrivate::onComponentComplete()
    335 {
    336     Q_Q(QQuickWebView);
    337     m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data()));
    338     m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data()));
    339     pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data());
    340 }
    341 
    342334void QQuickWebViewPrivate::setTransparentBackground(bool enable)
    343335{
    … …  
    861853{
    862854    QQuickWebViewPrivate::onComponentComplete();
     855
     856    Q_Q(QQuickWebView);
     857    m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data()));
     858    m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data()));
     859    pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data());
    863860
    864861    // Trigger setting of correct visibility flags after everything was allocated and initialized.
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h

    r130382 r130629  
    7171    virtual void initialize(WKContextRef contextRef = 0, WKPageGroupRef pageGroupRef = 0);
    7272
    73     virtual void onComponentComplete();
     73    virtual void onComponentComplete() { }
    7474
    7575    virtual void provisionalLoadDidStart(const WTF::String& url);
    … …  
    9191    void didRenderFrame();
    9292
    93     WebKit::PageViewportController* viewportController() const { return m_pageViewportController.data(); }
     93    virtual WebKit::PageViewportController* viewportController() const { return 0; }
    9494    virtual void updateViewportSize() { }
    9595    void updateTouchViewportSize();
    … …  
    172172    QScopedPointer<QQuickWebPage> pageView;
    173173    QQuickWebView* q_ptr;
    174 
    175     QScopedPointer<WebKit::PageViewportController> m_pageViewportController;
    176     QScopedPointer<WebKit::PageViewportControllerClientQt> m_pageViewportControllerClient;
    177174
    178175    FlickableAxisLocker axisLocker;
    … …  
    222219
    223220    virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&);
     221    virtual WebKit::PageViewportController* viewportController() const { return m_pageViewportController.data(); }
    224222    virtual void updateViewportSize();
    225223
    226224    virtual void pageDidRequestScroll(const QPoint& pos);
    227225    virtual void handleMouseEvent(QMouseEvent*);
     226
     227private:
     228    QScopedPointer<WebKit::PageViewportController> m_pageViewportController;
     229    QScopedPointer<WebKit::PageViewportControllerClientQt> m_pageViewportControllerClient;
    228230};
    229231
  • trunk/Source/WebKit2/UIProcess/qt/QtPageClient.cpp

    r130382 r130629  
    7878    // The viewport has to be notified first so that the viewport position
    7979    // is adjusted before the loadVisuallyCommitted() signal.
    80     QQuickWebViewPrivate::get(m_webView)->viewportController()->didRenderFrame(contentsSize, coveredRect);
     80    PageViewportController* pvc = QQuickWebViewPrivate::get(m_webView)->viewportController();
     81    if (pvc)
     82        pvc->didRenderFrame(contentsSize, coveredRect);
    8183    QQuickWebViewPrivate::get(m_webView)->didRenderFrame();
    8284}
    … …  
    99101void QtPageClient::didChangeContentsSize(const IntSize& newSize)
    100102{
    101     QQuickWebViewPrivate::get(m_webView)->viewportController()->didChangeContentsSize(newSize);
     103    PageViewportController* pvc = QQuickWebViewPrivate::get(m_webView)->viewportController();
     104    if (pvc)
     105        pvc->didChangeContentsSize(newSize);
    102106}
    103107
    … …  
    231235void QtPageClient::pageTransitionViewportReady()
    232236{
    233     QQuickWebViewPrivate::get(m_webView)->viewportController()->pageTransitionViewportReady();
     237    PageViewportController* pvc = QQuickWebViewPrivate::get(m_webView)->viewportController();
     238    if (pvc)
     239        pvc->pageTransitionViewportReady();
    234240}
    235241
  • trunk/Source/WebKit2/UIProcess/qt/QtWebPageLoadClient.cpp

    r130030 r130629  
    6363void QtWebPageLoadClient::didCommitLoad()
    6464{
    65     m_webView->d_func()->viewportController()->didCommitLoad();
     65    PageViewportController* pvc = m_webView->d_func()->viewportController();
     66    if (pvc)
     67        pvc->didCommitLoad();
    6668    m_webView->d_func()->loadDidCommit();
    6769}
Note: See TracChangeset for help on using the changeset viewer.