summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-17 16:21:14 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-17 16:21:14 +0200
commit8995b83bcbfbb68245f779b64e5517627c6cc6ea (patch)
tree17985605dab9263cc2444bd4d45f189e142cca7c /Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
parentb9c9652036d5e9f1e29c574f40bc73a35c81ace6 (diff)
downloadqtwebkit-8995b83bcbfbb68245f779b64e5517627c6cc6ea.tar.gz
Imported WebKit commit cf4f8fc6f19b0629f51860cb2d4b25e139d07e00 (http://svn.webkit.org/repository/webkit/trunk@131592)
New snapshot that includes the build fixes for Mac OS X 10.6 and earlier as well as the previously cherry-picked changes
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp47
1 files changed, 25 insertions, 22 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
index b78cae0f3..07ed832ce 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
@@ -268,6 +268,7 @@ QQuickWebViewPrivate::QQuickWebViewPrivate(QQuickWebView* viewport)
, filePicker(0)
, databaseQuotaDialog(0)
, colorChooser(0)
+ , m_betweenLoadCommitAndFirstFrame(false)
, m_useDefaultContentItemSize(true)
, m_navigatorQtObjectEnabled(false)
, m_renderToOffscreenBuffer(false)
@@ -330,14 +331,6 @@ void QQuickWebViewPrivate::loadDidStop()
emit q->loadingChanged(&loadRequest);
}
-void QQuickWebViewPrivate::onComponentComplete()
-{
- Q_Q(QQuickWebView);
- m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data()));
- m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data()));
- pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data());
-}
-
void QQuickWebViewPrivate::setTransparentBackground(bool enable)
{
webPageProxy->setDrawsTransparentBackground(enable);
@@ -370,6 +363,7 @@ void QQuickWebViewPrivate::loadDidCommit()
Q_Q(QQuickWebView);
ASSERT(q->loading());
+ m_betweenLoadCommitAndFirstFrame = true;
emit q->navigationHistoryChanged();
emit q->titleChanged();
}
@@ -452,10 +446,18 @@ void QQuickWebViewPrivate::setNeedsDisplay()
q->page()->d->paint(&painter);
return;
}
-
q->page()->update();
}
+void QQuickWebViewPrivate::didRenderFrame()
+{
+ Q_Q(QQuickWebView);
+ if (m_betweenLoadCommitAndFirstFrame) {
+ emit q->experimental()->loadVisuallyCommitted();
+ m_betweenLoadCommitAndFirstFrame = false;
+ }
+}
+
void QQuickWebViewPrivate::processDidCrash()
{
Q_Q(QQuickWebView);
@@ -478,8 +480,6 @@ void QQuickWebViewPrivate::didRelaunchProcess()
{
qWarning("WARNING: The web process has been successfully restarted.");
- // Reset to default so that the later update can reach the web process.
- webPageProxy->setCustomDeviceScaleFactor(0);
webPageProxy->drawingArea()->setSize(viewSize(), IntSize());
updateViewportSize();
@@ -820,12 +820,17 @@ void QQuickWebViewLegacyPrivate::updateViewportSize()
QSizeF viewportSize = q->boundingRect().size();
if (viewportSize.isEmpty())
return;
+
+ float devicePixelRatio = webPageProxy->deviceScaleFactor();
pageView->setContentsSize(viewportSize);
+ // Make sure that our scale matches the one passed to setVisibleContentsRect.
+ pageView->setContentsScale(devicePixelRatio);
+
// The fixed layout is handled by the FrameView and the drawing area doesn't behave differently
// whether its fixed or not. We still need to tell the drawing area which part of it
// has to be rendered on tiles, and in desktop mode it's all of it.
- webPageProxy->drawingArea()->setSize(viewportSize.toSize(), IntSize());
- webPageProxy->drawingArea()->setVisibleContentsRect(FloatRect(FloatPoint(), viewportSize), 1, FloatPoint());
+ webPageProxy->drawingArea()->setSize((viewportSize / devicePixelRatio).toSize(), IntSize());
+ webPageProxy->drawingArea()->setVisibleContentsRect(FloatRect(FloatPoint(), FloatSize(viewportSize / devicePixelRatio)), devicePixelRatio, FloatPoint());
}
qreal QQuickWebViewLegacyPrivate::zoomFactor() const
@@ -853,6 +858,11 @@ void QQuickWebViewFlickablePrivate::onComponentComplete()
{
QQuickWebViewPrivate::onComponentComplete();
+ Q_Q(QQuickWebView);
+ m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data()));
+ m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data()));
+ pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data());
+
// Trigger setting of correct visibility flags after everything was allocated and initialized.
_q_onVisibleChanged();
}
@@ -868,7 +878,7 @@ void QQuickWebViewFlickablePrivate::updateViewportSize()
Q_Q(QQuickWebView);
if (m_pageViewportController)
- m_pageViewportController->didChangeViewportSize(QSizeF(q->width(), q->height()));
+ m_pageViewportController->didChangeViewportSize(FloatSize(q->width(), q->height()));
}
void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos)
@@ -877,13 +887,6 @@ void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos)
m_pageViewportController->pageDidRequestScroll(pos);
}
-void QQuickWebViewFlickablePrivate::didChangeContentsSize(const QSize& newSize)
-{
- QQuickWebViewPrivate::didChangeContentsSize(newSize);
- pageView->setContentsSize(newSize); // emits contentsSizeChanged()
- m_pageViewportController->didChangeContentsSize(newSize);
-}
-
void QQuickWebViewFlickablePrivate::handleMouseEvent(QMouseEvent* event)
{
if (!pageView->eventHandler())
@@ -1233,7 +1236,7 @@ void QQuickWebViewExperimental::setDevicePixelRatio(qreal devicePixelRatio)
if (0 >= devicePixelRatio || devicePixelRatio == this->devicePixelRatio())
return;
- d->webPageProxy->setCustomDeviceScaleFactor(devicePixelRatio);
+ d->webPageProxy->setIntrinsicDeviceScaleFactor(devicePixelRatio);
emit devicePixelRatioChanged();
}