Title: [118923] trunk/Source/WebKit2
Revision
118923
Author
[email protected]
Date
2012-05-30 08:06:47 -0700 (Wed, 30 May 2012)

Log Message

[Qt] Move ViewportAttribute related methods to the interaction engine.
https://bugs.webkit.org/show_bug.cgi?id=87855

Reviewed by Simon Hausmann.

Move the logic of didChange{ViewportProperties|ContentsSize} to the
interaction engine and update our testing object.

* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate):
(QQuickWebViewFlickablePrivate::didChangeViewportProperties):
(QQuickWebViewFlickablePrivate::didChangeContentsSize):
* UIProcess/API/qt/qquickwebview_p_p.h:
(QQuickWebViewPrivate):
* UIProcess/API/qt/qwebkittest.cpp:
(QWebKitTest::contentsScale):
(QWebKitTest::devicePixelRatio):
(QWebKitTest::initialScale):
(QWebKitTest::minimumScale):
(QWebKitTest::maximumScale):
(QWebKitTest::isScalable):
(QWebKitTest::layoutSize):
* UIProcess/qt/QtViewportInteractionEngine.cpp:
(WebKit::QtViewportInteractionEngine::viewportAttributesChanged):
(WebKit):
(WebKit::QtViewportInteractionEngine::pageContentsSizeChanged):
* UIProcess/qt/QtViewportInteractionEngine.h:
(QtViewportInteractionEngine):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (118922 => 118923)


--- trunk/Source/WebKit2/ChangeLog	2012-05-30 14:24:03 UTC (rev 118922)
+++ trunk/Source/WebKit2/ChangeLog	2012-05-30 15:06:47 UTC (rev 118923)
@@ -1,5 +1,36 @@
 2012-05-30  Kenneth Rohde Christiansen  <[email protected]>
 
+        [Qt] Move ViewportAttribute related methods to the interaction engine.
+        https://bugs.webkit.org/show_bug.cgi?id=87855
+
+        Reviewed by Simon Hausmann.
+
+        Move the logic of didChange{ViewportProperties|ContentsSize} to the
+        interaction engine and update our testing object.
+
+        * UIProcess/API/qt/qquickwebview.cpp:
+        (QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate):
+        (QQuickWebViewFlickablePrivate::didChangeViewportProperties):
+        (QQuickWebViewFlickablePrivate::didChangeContentsSize):
+        * UIProcess/API/qt/qquickwebview_p_p.h:
+        (QQuickWebViewPrivate):
+        * UIProcess/API/qt/qwebkittest.cpp:
+        (QWebKitTest::contentsScale):
+        (QWebKitTest::devicePixelRatio):
+        (QWebKitTest::initialScale):
+        (QWebKitTest::minimumScale):
+        (QWebKitTest::maximumScale):
+        (QWebKitTest::isScalable):
+        (QWebKitTest::layoutSize):
+        * UIProcess/qt/QtViewportInteractionEngine.cpp:
+        (WebKit::QtViewportInteractionEngine::viewportAttributesChanged):
+        (WebKit):
+        (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged):
+        * UIProcess/qt/QtViewportInteractionEngine.h:
+        (QtViewportInteractionEngine):
+
+2012-05-30  Kenneth Rohde Christiansen  <[email protected]>
+
         [Qt] Do renames in ViewportInteractionEngine as agreed upon
         https://bugs.webkit.org/show_bug.cgi?id=87845
 

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp (118922 => 118923)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp	2012-05-30 14:24:03 UTC (rev 118922)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp	2012-05-30 15:06:47 UTC (rev 118923)
@@ -770,12 +770,6 @@
 QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate(QQuickWebView* viewport)
     : QQuickWebViewPrivate(viewport)
 {
-    // Default values for the Legacy view.
-    attributes.devicePixelRatio = 1;
-    attributes.initialScale = 1;
-    attributes.minimumScale = 1;
-    attributes.maximumScale = 1;
-    attributes.userScalable = 0;
 }
 
 void QQuickWebViewLegacyPrivate::initialize(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
@@ -867,30 +861,7 @@
 
 void QQuickWebViewFlickablePrivate::didChangeViewportProperties(const WebCore::ViewportAttributes& newAttributes)
 {
-    Q_Q(QQuickWebView);
-
-    // FIXME: Revise these when implementing fit-to-width.
-    WebCore::ViewportAttributes attr = newAttributes;
-    WebCore::restrictScaleFactorToInitialScaleIfNotUserScalable(attr);
-
-    // FIXME: Resetting here can reset more than needed. For instance it will end deferrers.
-    // This needs to be revised at some point.
-    interactionEngine->reset();
-
-    interactionEngine->setDevicePixelRatio(attr.devicePixelRatio);
-
-    interactionEngine->setAllowsUserScaling(!!attr.userScalable);
-    interactionEngine->setCSSScaleBounds(attr.minimumScale, attr.maximumScale);
-
-    if (!interactionEngine->hadUserInteraction() && !pageIsSuspended)
-        interactionEngine->setCSSScale(attr.initialScale);
-
-    this->attributes = attr;
-    emit q->experimental()->test()->viewportChanged();
-
-    // If the web app successively changes the viewport on purpose
-    // it wants to be in control and we should disable animations.
-    interactionEngine->setPageItemRectVisible(interactionEngine->nearestValidBounds());
+    interactionEngine->viewportAttributesChanged(newAttributes);
 }
 
 void QQuickWebViewFlickablePrivate::updateViewportSize()
@@ -963,26 +934,9 @@
 void QQuickWebViewFlickablePrivate::didChangeContentsSize(const QSize& newSize)
 {
     Q_Q(QQuickWebView);
-    QSize viewportSize = q->boundingRect().size().toSize();
 
     pageView->setContentsSize(newSize); // emits contentsSizeChanged()
-
-    float minimumScale = WebCore::computeMinimumScaleFactorForContentContained(attributes, viewportSize, newSize);
-
-    if (!qFuzzyCompare(minimumScale, attributes.minimumScale)) {
-        interactionEngine->setCSSScaleBounds(minimumScale, attributes.maximumScale);
-        emit q->experimental()->test()->viewportChanged();
-
-        if (!interactionEngine->hadUserInteraction() && !pageIsSuspended) {
-            // Emits contentsScaleChanged();
-            interactionEngine->setCSSScale(minimumScale);
-        }
-    }
-
-    // Emit for testing purposes, so that it can be verified that
-    // we didn't do scale adjustment.
-    interactionEngine->setPageItemRectVisible(interactionEngine->nearestValidBounds());
-    emit q->experimental()->test()->contentsScaleCommitted();
+    interactionEngine->pageContentsSizeChanged(newSize, q->boundingRect().size().toSize());
 }
 
 /*!

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h (118922 => 118923)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h	2012-05-30 14:24:03 UTC (rev 118922)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h	2012-05-30 15:06:47 UTC (rev 118923)
@@ -192,8 +192,6 @@
     QQmlComponent* filePicker;
     QQmlComponent* databaseQuotaDialog;
 
-    WebCore::ViewportAttributes attributes;
-
     QList<QUrl> userScripts;
 
     bool m_useDefaultContentItemSize;

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp (118922 => 118923)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp	2012-05-30 14:24:03 UTC (rev 118922)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp	2012-05-30 15:06:47 UTC (rev 118923)
@@ -120,44 +120,49 @@
 
 QVariant QWebKitTest::contentsScale() const
 {
-    if (QtViewportInteractionEngine* interactionEngine = m_webViewPrivate->viewportInteractionEngine())
-        return interactionEngine->currentCSSScale();
-
-    return m_webViewPrivate->attributes.initialScale;
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return viewport->currentCSSScale();
+    return QVariant();
 }
 
 QVariant QWebKitTest::devicePixelRatio() const
 {
-    return m_webViewPrivate->attributes.devicePixelRatio;
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return viewport->m_devicePixelRatio;
+    return QVariant();
 }
 
 QVariant QWebKitTest::initialScale() const
 {
-    return m_webViewPrivate->attributes.initialScale;
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return viewport->m_rawAttributes.initialScale;
+    return QVariant();
 }
 
 QVariant QWebKitTest::minimumScale() const
 {
-    if (QtViewportInteractionEngine* interactionEngine = m_webViewPrivate->viewportInteractionEngine())
-        return interactionEngine->m_minimumScale;
-
-    return m_webViewPrivate->attributes.minimumScale;
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return viewport->m_minimumScale;
+    return QVariant();
 }
 
 QVariant QWebKitTest::maximumScale() const
 {
-    if (QtViewportInteractionEngine* interactionEngine = m_webViewPrivate->viewportInteractionEngine())
-        return interactionEngine->m_maximumScale;
-
-    return m_webViewPrivate->attributes.maximumScale;
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return viewport->m_maximumScale;
+    return QVariant();
 }
 
 QVariant QWebKitTest::isScalable() const
 {
-    return !!m_webViewPrivate->attributes.userScalable;
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return !!viewport->m_rawAttributes.userScalable;
+    return QVariant();
 }
 
 QVariant QWebKitTest::layoutSize() const
 {
-    return QSizeF(m_webViewPrivate->attributes.layoutSize);
+    if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+        return QSizeF(viewport->m_rawAttributes.layoutSize);
+    return QVariant();
 }

Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp (118922 => 118923)


--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp	2012-05-30 14:24:03 UTC (rev 118922)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp	2012-05-30 15:06:47 UTC (rev 118923)
@@ -24,6 +24,7 @@
 
 #include "qquickwebpage_p.h"
 #include "qquickwebview_p.h"
+#include "qwebkittest_p.h"
 #include <QPointF>
 #include <QTransform>
 #include <QWheelEvent>
@@ -174,6 +175,55 @@
     return innerBoundedCSSScale(cssScale);
 }
 
+void QtViewportInteractionEngine::viewportAttributesChanged(const WebCore::ViewportAttributes& newAttributes)
+{
+    m_rawAttributes = newAttributes;
+    WebCore::restrictScaleFactorToInitialScaleIfNotUserScalable(m_rawAttributes);
+
+    // FIXME: Resetting here can reset more than needed. For instance it will end deferrers.
+    // This needs to be revised at some point.
+    reset();
+
+
+    // FIXME: Should get directly from the webPageProxy.
+    setDevicePixelRatio(m_rawAttributes.devicePixelRatio);
+
+    setAllowsUserScaling(!!m_rawAttributes.userScalable);
+    setCSSScaleBounds(m_rawAttributes.minimumScale, m_rawAttributes.maximumScale);
+
+    if (!m_hadUserInteraction && !m_hasSuspendedContent) {
+        // Emits contentsScaleChanged();
+        setCSSScale(m_rawAttributes.initialScale);
+    }
+
+    emit m_viewportItem->experimental()->test()->viewportChanged();
+
+    // If the web app successively changes the viewport on purpose
+    // it wants to be in control and we should disable animations.
+    setPageItemRectVisible(nearestValidBounds());
+}
+
+void QtViewportInteractionEngine::pageContentsSizeChanged(const QSize& newSize, const QSize& viewportSize)
+{
+    float minimumScale = WebCore::computeMinimumScaleFactorForContentContained(m_rawAttributes, viewportSize, newSize);
+
+    if (!qFuzzyCompare(minimumScale, m_rawAttributes.minimumScale)) {
+        setCSSScaleBounds(minimumScale, m_rawAttributes.maximumScale);
+        emit m_viewportItem->experimental()->test()->viewportChanged();
+
+        if (!m_hadUserInteraction && !m_hasSuspendedContent) {
+            // Emits contentsScaleChanged();
+            setCSSScale(minimumScale);
+        }
+    }
+
+    // Emit for testing purposes, so that it can be verified that
+    // we didn't do scale adjustment.
+    emit m_viewportItem->experimental()->test()->contentsScaleCommitted();
+
+    setPageItemRectVisible(nearestValidBounds());
+}
+
 void QtViewportInteractionEngine::setPageItemRectVisible(const QRectF& itemRect)
 {
     ASSERT_WITH_MESSAGE(m_suspendCount,

Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h (118922 => 118923)


--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h	2012-05-30 14:24:03 UTC (rev 118922)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h	2012-05-30 15:06:47 UTC (rev 118923)
@@ -26,6 +26,7 @@
 #include <QtCore/QRectF>
 #include <QtCore/QVariant>
 #include <QtCore/QVariantAnimation>
+#include <WebCore/ViewportArguments.h>
 #include <wtf/OwnPtr.h>
 
 QT_BEGIN_NAMESPACE
@@ -91,6 +92,9 @@
     void zoomToAreaGestureEnded(const QPointF& touchPoint, const QRectF& targetArea);
     void focusEditableArea(const QRectF& caretArea, const QRectF& targetArea);
 
+    void viewportAttributesChanged(const WebCore::ViewportAttributes&);
+    void pageContentsSizeChanged(const QSize& newSize, const QSize& viewportSize);
+
 Q_SIGNALS:
     void contentSuspendRequested();
     void contentResumeRequested();
@@ -126,6 +130,8 @@
     QRectF computePosRangeForPageItemAtScale(qreal itemScale) const;
     void scaleContent(const QPointF& centerInCSSCoordinates, qreal cssScale);
 
+    WebCore::ViewportAttributes m_rawAttributes;
+
     bool m_allowsUserScaling;
     qreal m_minimumScale;
     qreal m_maximumScale;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to