summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-06-20 13:01:08 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-06-20 13:01:08 +0200
commit49233e234e5c787396cadb2cea33b31ae0cd65c1 (patch)
tree5410cb9a8fd53168bb60d62c54b654d86f03c38d /Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
parentb211c645d8ab690f713515dfdc84d80b11c27d2c (diff)
downloadqtwebkit-49233e234e5c787396cadb2cea33b31ae0cd65c1.tar.gz
Imported WebKit commit 3a8c29f35d00659d2ce7a0ccdfa8304f14e82327 (http://svn.webkit.org/repository/webkit/trunk@120813)
New snapshot with Windows build fixes
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp97
1 files changed, 82 insertions, 15 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
index 7fc2e8728..c52da4df6 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
@@ -25,7 +25,7 @@
#include "DrawingAreaProxyImpl.h"
#include "QtDialogRunner.h"
#include "QtDownloadManager.h"
-#include "QtViewportInteractionEngine.h"
+#include "QtViewportHandler.h"
#include "QtWebContext.h"
#include "QtWebError.h"
#include "QtWebIconDatabaseClient.h"
@@ -34,6 +34,8 @@
#include "QtWebPagePolicyClient.h"
#include "UtilsQt.h"
#include "WebBackForwardList.h"
+#include "WebInspectorProxy.h"
+#include "WebInspectorServer.h"
#if ENABLE(FULLSCREEN_API)
#include "WebFullScreenManagerProxy.h"
#endif
@@ -775,6 +777,8 @@ void QQuickWebViewLegacyPrivate::updateViewportSize()
{
Q_Q(QQuickWebView);
QSize viewportSize = q->boundingRect().size().toSize();
+ if (viewportSize.isEmpty())
+ return;
pageView->setContentsSize(viewportSize);
// 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
@@ -821,7 +825,7 @@ QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate(QQuickWebView* view
QQuickWebViewFlickablePrivate::~QQuickWebViewFlickablePrivate()
{
- interactionEngine->disconnect();
+ m_viewportHandler->disconnect();
}
void QQuickWebViewFlickablePrivate::initialize(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
@@ -834,8 +838,8 @@ void QQuickWebViewFlickablePrivate::onComponentComplete()
{
Q_Q(QQuickWebView);
- interactionEngine.reset(new QtViewportInteractionEngine(webPageProxy.get(), q, pageView.data()));
- pageView->eventHandler()->setViewportInteractionEngine(interactionEngine.data());
+ m_viewportHandler.reset(new QtViewportHandler(webPageProxy.get(), q, pageView.data()));
+ pageView->eventHandler()->setViewportHandler(m_viewportHandler.data());
// Trigger setting of correct visibility flags after everything was allocated and initialized.
_q_onVisibleChanged();
@@ -843,20 +847,20 @@ void QQuickWebViewFlickablePrivate::onComponentComplete()
void QQuickWebViewFlickablePrivate::didChangeViewportProperties(const WebCore::ViewportAttributes& newAttributes)
{
- if (interactionEngine)
- interactionEngine->viewportAttributesChanged(newAttributes);
+ if (m_viewportHandler)
+ m_viewportHandler->viewportAttributesChanged(newAttributes);
}
void QQuickWebViewFlickablePrivate::updateViewportSize()
{
- // FIXME: Examine why there is not an interactionEngine here in the beginning.
- if (interactionEngine)
- interactionEngine->viewportItemSizeChanged();
+ // FIXME: Examine why there is not an viewportHandler here in the beginning.
+ if (m_viewportHandler)
+ m_viewportHandler->viewportItemSizeChanged();
}
void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos)
{
- interactionEngine->pageContentPositionRequested(pos);
+ m_viewportHandler->pageContentPositionRequested(pos);
}
void QQuickWebViewFlickablePrivate::didChangeContentsSize(const QSize& newSize)
@@ -864,7 +868,7 @@ void QQuickWebViewFlickablePrivate::didChangeContentsSize(const QSize& newSize)
Q_Q(QQuickWebView);
pageView->setContentsSize(newSize); // emits contentsSizeChanged()
- interactionEngine->pageContentsSizeChanged(newSize, q->boundingRect().size().toSize());
+ m_viewportHandler->pageContentsSizeChanged(newSize, q->boundingRect().size().toSize());
}
/*!
@@ -959,7 +963,13 @@ int QQuickWebViewExperimental::preferredMinimumContentsWidth() const
void QQuickWebViewExperimental::setPreferredMinimumContentsWidth(int width)
{
Q_D(QQuickWebView);
- d->webPageProxy->pageGroup()->preferences()->setLayoutFallbackWidth(width);
+ WebPreferences* webPreferences = d->webPageProxy->pageGroup()->preferences();
+
+ if (width == webPreferences->layoutFallbackWidth())
+ return;
+
+ webPreferences->setLayoutFallbackWidth(width);
+ emit preferredMinimumContentsWidthChanged();
}
void QQuickWebViewExperimental::setFlickableViewportEnabled(bool enable)
@@ -1187,12 +1197,12 @@ void QQuickWebViewExperimental::setUserAgent(const QString& userAgent)
If the above is used on a device with device pixel ratio of 1.5, it will be scaled
down but still provide a better looking image.
- */
+*/
double QQuickWebViewExperimental::devicePixelRatio() const
{
Q_D(const QQuickWebView);
- return d->webPageProxy->pageGroup()->preferences()->devicePixelRatio();
+ return d->webPageProxy->deviceScaleFactor();
}
void QQuickWebViewExperimental::setDevicePixelRatio(double devicePixelRatio)
@@ -1201,13 +1211,61 @@ void QQuickWebViewExperimental::setDevicePixelRatio(double devicePixelRatio)
if (devicePixelRatio == this->devicePixelRatio())
return;
- d->webPageProxy->pageGroup()->preferences()->setDevicePixelRatio(devicePixelRatio);
+ d->webPageProxy->setCustomDeviceScaleFactor(devicePixelRatio);
emit devicePixelRatioChanged();
}
/*!
\internal
+ \qmlproperty int WebViewExperimental::deviceWidth
+ \brief The device width used by the viewport calculations.
+
+ The value used when calculation the viewport, eg. what is used for 'device-width' when
+ used in the viewport meta tag. If unset (zero or negative width), the width of the
+ actual viewport is used instead.
+*/
+
+int QQuickWebViewExperimental::deviceWidth() const
+{
+ Q_D(const QQuickWebView);
+ return d->webPageProxy->pageGroup()->preferences()->deviceWidth();
+}
+
+void QQuickWebViewExperimental::setDeviceWidth(int value)
+{
+ Q_D(QQuickWebView);
+ d->webPageProxy->pageGroup()->preferences()->setDeviceWidth(qMax(0, value));
+ emit deviceWidthChanged();
+}
+
+/*!
+ \internal
+
+ \qmlproperty int WebViewExperimental::deviceHeight
+ \brief The device width used by the viewport calculations.
+
+ The value used when calculation the viewport, eg. what is used for 'device-height' when
+ used in the viewport meta tag. If unset (zero or negative height), the height of the
+ actual viewport is used instead.
+*/
+
+int QQuickWebViewExperimental::deviceHeight() const
+{
+ Q_D(const QQuickWebView);
+ return d->webPageProxy->pageGroup()->preferences()->deviceHeight();
+}
+
+void QQuickWebViewExperimental::setDeviceHeight(int value)
+{
+ Q_D(QQuickWebView);
+ d->webPageProxy->pageGroup()->preferences()->setDeviceHeight(qMax(0, value));
+ emit deviceHeightChanged();
+}
+
+/*!
+ \internal
+
\qmlmethod void WebViewExperimental::evaluateJavaScript(string script [, function(result)])
\brief Evaluates the specified JavaScript and, if supplied, calls a function with the result.
@@ -1239,6 +1297,11 @@ void QQuickWebViewExperimental::setUserScripts(const QList<QUrl>& userScripts)
emit userScriptsChanged();
}
+QUrl QQuickWebViewExperimental::remoteInspectorUrl() const
+{
+ return QUrl(WebInspectorServer::shared().inspectorUrlForPageID(d_ptr->webPageProxy->inspector()->remoteInspectionPageID()));
+}
+
QQuickUrlSchemeDelegate* QQuickWebViewExperimental::schemeDelegates_At(QQmlListProperty<QQuickUrlSchemeDelegate>* property, int index)
{
const QObjectList children = property->object->children();
@@ -1743,6 +1806,10 @@ QPointF QQuickWebView::contentPos() const
void QQuickWebView::setContentPos(const QPointF& pos)
{
Q_D(QQuickWebView);
+
+ if (pos == contentPos())
+ return;
+
d->setContentPos(pos);
}