- Revision
- 118493
- Author
- [email protected]
- Date
- 2012-05-25 01:29:31 -0700 (Fri, 25 May 2012)
Log Message
[Qt][WK2] Fix failing qmltests::FitToView::test_basic()
https://bugs.webkit.org/show_bug.cgi?id=87236
Patch by Zalan Bujtas <[email protected]> on 2012-05-25
Reviewed by Kenneth Rohde Christiansen.
Rename contentViewportChanged to informVisibleContentChange() to
reflect its functionality better. Centralize m_hadUserInteraction flag
setting and add assertions on it to ensure that designated
functions are called only on user interaction.
* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewFlickablePrivate::onComponentComplete):
(QQuickWebViewFlickablePrivate::updateViewportSize):
(QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange):
(QQuickWebViewFlickablePrivate::_q_resume):
* UIProcess/API/qt/qquickwebview_p.h:
* UIProcess/API/qt/qquickwebview_p_p.h:
(QQuickWebViewPrivate::_q_onInformVisibleContentChange):
(QQuickWebViewFlickablePrivate):
* UIProcess/qt/QtViewportInteractionEngine.cpp:
(WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer):
(WebKit::QtViewportInteractionEngine::flickableMovingPositionUpdate):
(WebKit::QtViewportInteractionEngine::pagePositionRequest):
(WebKit::QtViewportInteractionEngine::touchBegin):
(WebKit::QtViewportInteractionEngine::focusEditableArea):
(WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded):
(WebKit::QtViewportInteractionEngine::panGestureStarted):
(WebKit::QtViewportInteractionEngine::pinchGestureStarted):
* UIProcess/qt/QtViewportInteractionEngine.h:
(QtViewportInteractionEngine):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (118492 => 118493)
--- trunk/Source/WebKit2/ChangeLog 2012-05-25 08:09:51 UTC (rev 118492)
+++ trunk/Source/WebKit2/ChangeLog 2012-05-25 08:29:31 UTC (rev 118493)
@@ -1,3 +1,36 @@
+2012-05-25 Zalan Bujtas <[email protected]>
+
+ [Qt][WK2] Fix failing qmltests::FitToView::test_basic()
+ https://bugs.webkit.org/show_bug.cgi?id=87236
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Rename contentViewportChanged to informVisibleContentChange() to
+ reflect its functionality better. Centralize m_hadUserInteraction flag
+ setting and add assertions on it to ensure that designated
+ functions are called only on user interaction.
+
+ * UIProcess/API/qt/qquickwebview.cpp:
+ (QQuickWebViewFlickablePrivate::onComponentComplete):
+ (QQuickWebViewFlickablePrivate::updateViewportSize):
+ (QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange):
+ (QQuickWebViewFlickablePrivate::_q_resume):
+ * UIProcess/API/qt/qquickwebview_p.h:
+ * UIProcess/API/qt/qquickwebview_p_p.h:
+ (QQuickWebViewPrivate::_q_onInformVisibleContentChange):
+ (QQuickWebViewFlickablePrivate):
+ * UIProcess/qt/QtViewportInteractionEngine.cpp:
+ (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer):
+ (WebKit::QtViewportInteractionEngine::flickableMovingPositionUpdate):
+ (WebKit::QtViewportInteractionEngine::pagePositionRequest):
+ (WebKit::QtViewportInteractionEngine::touchBegin):
+ (WebKit::QtViewportInteractionEngine::focusEditableArea):
+ (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded):
+ (WebKit::QtViewportInteractionEngine::panGestureStarted):
+ (WebKit::QtViewportInteractionEngine::pinchGestureStarted):
+ * UIProcess/qt/QtViewportInteractionEngine.h:
+ (QtViewportInteractionEngine):
+
2012-05-24 Tim Horton <[email protected]>
Add feature defines for web-facing parts of CSS Regions and Exclusions
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp (118492 => 118493)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp 2012-05-25 08:09:51 UTC (rev 118492)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp 2012-05-25 08:29:31 UTC (rev 118493)
@@ -813,7 +813,7 @@
QObject::connect(interactionEngine.data(), SIGNAL(contentSuspendRequested()), q, SLOT(_q_suspend()));
QObject::connect(interactionEngine.data(), SIGNAL(contentResumeRequested()), q, SLOT(_q_resume()));
- QObject::connect(interactionEngine.data(), SIGNAL(contentViewportChanged(QPointF)), q, SLOT(_q_contentViewportChanged(QPointF)));
+ QObject::connect(interactionEngine.data(), SIGNAL(informVisibleContentChange(QPointF)), q, SLOT(_q_onInformVisibleContentChange(QPointF)));
_q_resume();
@@ -865,10 +865,10 @@
// it can resize the content accordingly.
webPageProxy->setViewportSize(viewportSize);
- _q_contentViewportChanged(QPointF());
+ _q_onInformVisibleContentChange(QPointF());
}
-void QQuickWebViewFlickablePrivate::_q_contentViewportChanged(const QPointF& trajectoryVector)
+void QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange(const QPointF& trajectoryVector)
{
Q_Q(QQuickWebView);
@@ -903,7 +903,7 @@
pageIsSuspended = false;
webPageProxy->resumeActiveDOMObjectsAndAnimations();
- _q_contentViewportChanged(QPointF());
+ _q_onInformVisibleContentChange(QPointF());
}
void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos)
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h (118492 => 118493)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h 2012-05-25 08:09:51 UTC (rev 118492)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h 2012-05-25 08:29:31 UTC (rev 118493)
@@ -207,7 +207,7 @@
Q_PRIVATE_SLOT(d_func(), void _q_suspend());
Q_PRIVATE_SLOT(d_func(), void _q_resume());
- Q_PRIVATE_SLOT(d_func(), void _q_contentViewportChanged(const QPointF&));
+ Q_PRIVATE_SLOT(d_func(), void _q_onInformVisibleContentChange(const QPointF&));
Q_PRIVATE_SLOT(d_func(), void _q_onVisibleChanged());
Q_PRIVATE_SLOT(d_func(), void _q_onUrlChanged());
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h (118492 => 118493)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h 2012-05-25 08:09:51 UTC (rev 118492)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h 2012-05-25 08:29:31 UTC (rev 118493)
@@ -95,7 +95,7 @@
virtual void _q_suspend() { }
virtual void _q_resume() { }
- virtual void _q_contentViewportChanged(const QPointF& trajectory) { };
+ virtual void _q_onInformVisibleContentChange(const QPointF& trajectory) { };
virtual qreal zoomFactor() const { return 1; }
virtual void setZoomFactor(qreal) { }
@@ -231,7 +231,7 @@
virtual void _q_suspend();
virtual void _q_resume();
- virtual void _q_contentViewportChanged(const QPointF& trajectory);
+ virtual void _q_onInformVisibleContentChange(const QPointF& trajectory);
virtual void pageDidRequestScroll(const QPoint& pos);
virtual void didChangeContentsSize(const QSize& newSize);
Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp (118492 => 118493)
--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp 2012-05-25 08:09:51 UTC (rev 118492)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp 2012-05-25 08:29:31 UTC (rev 118493)
@@ -85,7 +85,7 @@
}
// Make sure that tiles all around the viewport will be requested.
- emit engine->contentViewportChanged(QPointF());
+ emit engine->informVisibleContentChange(QPointF());
}
private:
@@ -246,7 +246,7 @@
{
QPointF newPosition = m_viewport->contentPos();
- emit contentViewportChanged(m_lastScrollPosition - newPosition);
+ emit informVisibleContentChange(m_lastScrollPosition - newPosition);
m_lastScrollPosition = newPosition;
}
@@ -289,11 +289,13 @@
setItemRectVisible(endVisibleContentRect);
// Make sure that tiles all around the viewport will be requested.
- emit contentViewportChanged(QPointF());
+ emit informVisibleContentChange(QPointF());
}
void QtViewportInteractionEngine::touchBegin()
{
+ m_hadUserInteraction = true;
+
// Prevents resuming the page between the user's flicks of the page while the animation is running.
if (scrollAnimationActive())
m_touchUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
@@ -317,6 +319,9 @@
void QtViewportInteractionEngine::focusEditableArea(const QRectF& caretArea, const QRectF& targetArea)
{
+ // This can only happen as a result of a user interaction.
+ ASSERT(m_hadUserInteraction);
+
QRectF endArea = itemRectFromCSS(targetArea);
qreal endItemScale = itemScaleFromCSS(innerBoundedCSSScale(2.0));
@@ -351,14 +356,15 @@
void QtViewportInteractionEngine::zoomToAreaGestureEnded(const QPointF& touchPoint, const QRectF& targetArea)
{
+ // This can only happen as a result of a user interaction.
+ ASSERT(m_hadUserInteraction);
+
if (!targetArea.isValid())
return;
if (m_suspendCount)
return;
- m_hadUserInteraction = true;
-
const int margin = 10; // We want at least a little bit of margin.
QRectF endArea = itemRectFromCSS(targetArea.adjusted(-margin, -margin, margin, margin));
@@ -500,7 +506,9 @@
void QtViewportInteractionEngine::panGestureStarted(const QPointF& position, qint64 eventTimestampMillis)
{
- m_hadUserInteraction = true;
+ // This can only happen as a result of a user interaction.
+ ASSERT(m_hadUserInteraction);
+
m_viewport->handleFlickableMousePress(position, eventTimestampMillis);
m_lastPinchCenterInViewportCoordinates = position;
}
@@ -561,10 +569,12 @@
void QtViewportInteractionEngine::pinchGestureStarted(const QPointF& pinchCenterInViewportCoordinates)
{
+ // This can only happen as a result of a user interaction.
+ ASSERT(m_hadUserInteraction);
+
if (!m_allowsUserScaling)
return;
- m_hadUserInteraction = true;
m_scaleStack.clear();
m_zoomOutScale = 0.0;
@@ -574,7 +584,7 @@
m_pinchStartScale = m_content->contentsScale();
// Reset the tiling look-ahead vector so that tiles all around the viewport will be requested on pinch-end.
- emit contentViewportChanged(QPointF());
+ emit informVisibleContentChange(QPointF());
}
void QtViewportInteractionEngine::pinchGestureRequestUpdate(const QPointF& pinchCenterInViewportCoordinates, qreal totalScaleFactor)
Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h (118492 => 118493)
--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h 2012-05-25 08:09:51 UTC (rev 118492)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h 2012-05-25 08:29:31 UTC (rev 118493)
@@ -96,9 +96,8 @@
void contentSuspendRequested();
void contentResumeRequested();
- void contentViewportChanged(const QPointF& trajectory = QPointF());
+ void informVisibleContentChange(const QPointF& trajectory = QPointF());
- void viewportTrajectoryVectorChanged(const QPointF&);
void visibleContentRectAndScaleChanged();
private Q_SLOTS: