summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-07 11:22:47 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-07 11:22:47 +0100
commitcfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch)
tree24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebKit2/UIProcess/API/qt
parent69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff)
downloadqtwebkit-cfd86b747d32ac22246a1aa908eaa720c63a88c1.tar.gz
Imported WebKit commit 20271caf2e2c016d5cef40184cddeefeac4f1876 (http://svn.webkit.org/repository/webkit/trunk@133733)
New snapshot that contains all previous fixes as well as build fix for latest QtMultimedia API changes.
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp30
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h4
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h1
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp24
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp195
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h15
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h9
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml34
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test4.html1
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test5.html10
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp9
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/testwindow.h1
12 files changed, 210 insertions, 123 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
index 9a0433b66..21ed5be10 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
@@ -258,6 +258,7 @@ QPointF QQuickWebViewPrivate::FlickableAxisLocker::adjust(const QPointF& positio
QQuickWebViewPrivate::QQuickWebViewPrivate(QQuickWebView* viewport)
: q_ptr(viewport)
+ , experimental(new QQuickWebViewExperimental(viewport, this))
, alertDialog(0)
, confirmDialog(0)
, promptDialog(0)
@@ -321,6 +322,9 @@ void QQuickWebViewPrivate::initialize(WKContextRef contextRef, WKPageGroupRef pa
pageClient.initialize(q_ptr, pageViewPrivate->eventHandler.data(), &undoController);
webPageProxy->initializeWebPage();
+
+ q_ptr->setAcceptedMouseButtons(Qt::MouseButtonMask);
+ q_ptr->setAcceptHoverEvents(true);
}
void QQuickWebViewPrivate::loadDidStop()
@@ -419,9 +423,6 @@ void QQuickWebViewPrivate::handleMouseEvent(QMouseEvent* event)
{
switch (event->type()) {
case QEvent::MouseButtonPress:
- case QEvent::MouseButtonDblClick:
- // If a MouseButtonDblClick was received then we got a MouseButtonPress before
- // handleMousePressEvent will take care of double clicks.
pageView->eventHandler()->handleMousePressEvent(event);
break;
case QEvent::MouseMove:
@@ -430,6 +431,11 @@ void QQuickWebViewPrivate::handleMouseEvent(QMouseEvent* event)
case QEvent::MouseButtonRelease:
pageView->eventHandler()->handleMouseReleaseEvent(event);
break;
+ case QEvent::MouseButtonDblClick:
+ // If a MouseButtonDblClick was received then we got a MouseButtonPress before.
+ // WebCore will build double-clicks out of press events.
+ event->accept();
+ break;
default:
ASSERT_NOT_REACHED();
break;
@@ -503,7 +509,7 @@ void QQuickWebViewPrivate::handleDownloadRequest(DownloadProxy* download)
downloadItem->d->downloadProxy = download;
q->connect(downloadItem->d, SIGNAL(receivedResponse(QWebDownloadItem*)), q, SLOT(_q_onReceivedResponseFromDownload(QWebDownloadItem*)));
- context->downloadManager()->addDownload(download, downloadItem);
+ QtWebContext::downloadManager()->addDownload(download, downloadItem);
}
void QQuickWebViewPrivate::_q_onVisibleChanged()
@@ -805,12 +811,8 @@ QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate(QQuickWebView* viewport)
void QQuickWebViewLegacyPrivate::initialize(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
{
- Q_Q(QQuickWebView);
QQuickWebViewPrivate::initialize(contextRef, pageGroupRef);
- q->setAcceptedMouseButtons(Qt::MouseButtonMask);
- q->setAcceptHoverEvents(true);
-
// Trigger setting of correct visibility flags after everything was allocated and initialized.
_q_onVisibleChanged();
}
@@ -847,7 +849,6 @@ void QQuickWebViewLegacyPrivate::setZoomFactor(qreal factor)
QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate(QQuickWebView* viewport)
: QQuickWebViewPrivate(viewport)
{
- viewport->setAcceptHoverEvents(false);
}
void QQuickWebViewFlickablePrivate::initialize(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
@@ -897,12 +898,12 @@ void QQuickWebViewFlickablePrivate::handleMouseEvent(QMouseEvent* event)
pageView->eventHandler()->handleInputEvent(event);
}
-QQuickWebViewExperimental::QQuickWebViewExperimental(QQuickWebView *webView)
+QQuickWebViewExperimental::QQuickWebViewExperimental(QQuickWebView *webView, QQuickWebViewPrivate* webViewPrivate)
: QObject(webView)
, q_ptr(webView)
- , d_ptr(webView->d_ptr.data())
+ , d_ptr(webViewPrivate)
, schemeParent(new QObject(this))
- , m_test(new QWebKitTest(webView->d_ptr.data(), this))
+ , m_test(new QWebKitTest(webViewPrivate, this))
{
}
@@ -1473,7 +1474,6 @@ QQuickWebPage* QQuickWebViewExperimental::page()
QQuickWebView::QQuickWebView(QQuickItem* parent)
: QQuickFlickable(parent)
, d_ptr(createPrivateObject(this))
- , m_experimental(new QQuickWebViewExperimental(this))
{
Q_D(QQuickWebView);
d->initialize();
@@ -1482,7 +1482,6 @@ QQuickWebView::QQuickWebView(QQuickItem* parent)
QQuickWebView::QQuickWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef, QQuickItem* parent)
: QQuickFlickable(parent)
, d_ptr(createPrivateObject(this))
- , m_experimental(new QQuickWebViewExperimental(this))
{
Q_D(QQuickWebView);
d->initialize(contextRef, pageGroupRef);
@@ -1762,7 +1761,8 @@ QVariant QQuickWebView::inputMethodQuery(Qt::InputMethodQuery property) const
*/
QQuickWebViewExperimental* QQuickWebView::experimental() const
{
- return m_experimental;
+ Q_D(const QQuickWebView);
+ return d->experimental;
}
/*!
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h
index 89e7fbc99..dfe7ad88e 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h
+++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h
@@ -213,9 +213,9 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_onUrlChanged());
Q_PRIVATE_SLOT(d_func(), void _q_onReceivedResponseFromDownload(QWebDownloadItem*));
Q_PRIVATE_SLOT(d_func(), void _q_onIconChangedForPageURL(const QString&));
+
// Hides QObject::d_ptr allowing us to use the convenience macros.
QScopedPointer<QQuickWebViewPrivate> d_ptr;
- QQuickWebViewExperimental* m_experimental;
friend class QWebKitTest;
friend class WebKit::PageViewportControllerClientQt;
@@ -284,7 +284,6 @@ public:
DownloadRequest = QQuickWebView::IgnoreRequest - 1
};
- QQuickWebViewExperimental(QQuickWebView* webView);
virtual ~QQuickWebViewExperimental();
QQmlComponent* alertDialog() const;
@@ -380,6 +379,7 @@ Q_SIGNALS:
void remoteInspectorUrlChanged();
private:
+ QQuickWebViewExperimental(QQuickWebView* webView, QQuickWebViewPrivate* webViewPrivate);
QQuickWebView* q_ptr;
QQuickWebViewPrivate* d_ptr;
QObject* schemeParent;
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h
index 15bf818d7..adedb6a31 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h
+++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h
@@ -171,6 +171,7 @@ protected:
QScopedPointer<QQuickWebPage> pageView;
QQuickWebView* q_ptr;
+ QQuickWebViewExperimental* experimental;
FlickableAxisLocker axisLocker;
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp b/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp
index 63dce28d0..aa26c0737 100644
--- a/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp
@@ -49,13 +49,8 @@ WTF::String QWebIconImageProvider::iconURLForPageURLInContext(const WTF::String
QUrl url;
url.setScheme(QStringLiteral("image"));
url.setHost(QWebIconImageProvider::identifier());
-
- QString path;
- path.append(QLatin1Char('/'));
- path.append(QString::number(context->contextID()));
- path.append(QLatin1Char('/'));
- path.append(QString::number(WTF::StringHash::hash(iconURL)));
- url.setPath(path);
+ // Make sure that QML doesn't show cached versions of the previous icon if the icon location changed.
+ url.setPath(QLatin1Char('/') + QString::number(WTF::StringHash::hash(iconURL)));
// FIXME: Use QUrl::DecodedMode when landed in Qt
url.setFragment(QString::fromLatin1(QByteArray(QString(pageURL).toUtf8()).toBase64()));
@@ -70,21 +65,12 @@ WTF::String QWebIconImageProvider::iconURLForPageURLInContext(const WTF::String
QImage QWebIconImageProvider::requestImage(const QString& id, QSize* size, const QSize& requestedSize)
{
- // The string identifier has the leading image://webicon/ already stripped, so we just
- // need to truncate from the first slash to get the context id.
- QString contextIDString = id.left(id.indexOf(QLatin1Char('/')));
- bool ok = false;
- uint64_t contextId = contextIDString.toUInt(&ok);
- if (!ok)
- return QImage();
+ QString pageURL = QString::fromUtf8(QByteArray::fromBase64(id.midRef(id.indexOf('#') + 1).toLatin1()));
- QtWebContext* context = QtWebContext::contextByID(contextId);
- if (!context)
+ QtWebIconDatabaseClient* iconDatabase = QtWebContext::iconDatabase();
+ if (!iconDatabase)
return QImage();
- QString pageURL = QString::fromUtf8(QByteArray::fromBase64(id.midRef(id.indexOf('#') + 1).toLatin1()));
-
- QtWebIconDatabaseClient* iconDatabase = context->iconDatabase();
QImage icon = requestedSize.isValid() ? iconDatabase->iconImageForPageURL(pageURL, requestedSize) : iconDatabase->iconImageForPageURL(pageURL);
ASSERT(!icon.isNull());
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp b/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp
index e27f51264..7ddfd9269 100644
--- a/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp
@@ -20,11 +20,8 @@
#include "config.h"
#include "qwebpreferences_p.h"
-#include "WKPageGroup.h"
-#include "WKPreferences.h"
-#include "WKPreferencesPrivate.h"
-#include "WKRetainPtr.h"
-#include "WKStringQt.h"
+#include "WebPageGroup.h"
+#include "WebPageProxy.h"
#include "qquickwebview_p_p.h"
#include "qwebpreferences_p_p.h"
@@ -40,41 +37,49 @@ bool QWebPreferencesPrivate::testAttribute(QWebPreferencesPrivate::WebAttribute
{
switch (attr) {
case AutoLoadImages:
- return WKPreferencesGetLoadsImagesAutomatically(preferencesRef());
+ return preferences()->loadsImagesAutomatically();
#if ENABLE(FULLSCREEN_API)
case FullScreenEnabled:
- return WKPreferencesGetFullScreenEnabled(preferencesRef());
+ return preferences()->fullScreenEnabled();
#endif
case JavascriptEnabled:
- return WKPreferencesGetJavaScriptEnabled(preferencesRef());
+ return preferences()->javaScriptEnabled();
case PluginsEnabled:
- return WKPreferencesGetPluginsEnabled(preferencesRef());
+ return preferences()->pluginsEnabled();
case OfflineWebApplicationCacheEnabled:
- return WKPreferencesGetOfflineWebApplicationCacheEnabled(preferencesRef());
+ return preferences()->offlineWebApplicationCacheEnabled();
case LocalStorageEnabled:
- return WKPreferencesGetLocalStorageEnabled(preferencesRef());
+ return preferences()->localStorageEnabled();
case XSSAuditingEnabled:
- return WKPreferencesGetXSSAuditorEnabled(preferencesRef());
+ return preferences()->xssAuditorEnabled();
case PrivateBrowsingEnabled:
- return WKPreferencesGetPrivateBrowsingEnabled(preferencesRef());
+ return preferences()->privateBrowsingEnabled();
case DnsPrefetchEnabled:
- return WKPreferencesGetDNSPrefetchingEnabled(preferencesRef());
+ return preferences()->dnsPrefetchingEnabled();
case FrameFlatteningEnabled:
- return WKPreferencesGetFrameFlatteningEnabled(preferencesRef());
+ return preferences()->frameFlatteningEnabled();
case DeveloperExtrasEnabled:
- return WKPreferencesGetDeveloperExtrasEnabled(preferencesRef());
+ return preferences()->developerExtrasEnabled();
#if ENABLE(WEBGL)
case WebGLEnabled:
- return WKPreferencesGetWebGLEnabled(preferencesRef());
+ return preferences()->webGLEnabled();
#if ENABLE(CSS_SHADERS)
case CSSCustomFilterEnabled:
- return WKPreferencesGetCSSCustomFilterEnabled(preferencesRef());
+ return preferences()->cssCustomFilterEnabled();
#endif
#endif
#if ENABLE(WEB_AUDIO)
case WebAudioEnabled:
- return WKPreferencesGetWebAudioEnabled(preferencesRef());
+ return preferences()->webAudioEnabled();
#endif
+#if ENABLE(SMOOTH_SCROLLING)
+ case ScrollAnimatorEnabled:
+ return preferences()->scrollAnimatorEnabled();
+#endif
+ case CaretBrowsingEnabled:
+ return preferences()->caretBrowsingEnabled();
+ case NotificationsEnabled:
+ return preferences()->notificationsEnabled();
default:
ASSERT_NOT_REACHED();
return false;
@@ -85,54 +90,66 @@ void QWebPreferencesPrivate::setAttribute(QWebPreferencesPrivate::WebAttribute a
{
switch (attr) {
case AutoLoadImages:
- WKPreferencesSetLoadsImagesAutomatically(preferencesRef(), enable);
+ preferences()->setLoadsImagesAutomatically(enable);
break;
#if ENABLE(FULLSCREEN_API)
case FullScreenEnabled:
- WKPreferencesSetFullScreenEnabled(preferencesRef(), enable);
+ preferences()->setFullScreenEnabled(enable);
break;
#endif
case JavascriptEnabled:
- WKPreferencesSetJavaScriptEnabled(preferencesRef(), enable);
+ preferences()->setJavaScriptEnabled(enable);
break;
case PluginsEnabled:
- WKPreferencesSetPluginsEnabled(preferencesRef(), enable);
+ preferences()->setPluginsEnabled(enable);
break;
case OfflineWebApplicationCacheEnabled:
- WKPreferencesSetOfflineWebApplicationCacheEnabled(preferencesRef(), enable);
+ preferences()->setOfflineWebApplicationCacheEnabled(enable);
break;
case LocalStorageEnabled:
- WKPreferencesSetLocalStorageEnabled(preferencesRef(), enable);
+ preferences()->setLocalStorageEnabled(enable);
break;
case XSSAuditingEnabled:
- WKPreferencesSetXSSAuditorEnabled(preferencesRef(), enable);
+ preferences()->setXSSAuditorEnabled(enable);
break;
case PrivateBrowsingEnabled:
- WKPreferencesSetPrivateBrowsingEnabled(preferencesRef(), enable);
+ preferences()->setPrivateBrowsingEnabled(enable);
break;
case DnsPrefetchEnabled:
- WKPreferencesSetDNSPrefetchingEnabled(preferencesRef(), enable);
+ preferences()->setDNSPrefetchingEnabled(enable);
break;
case FrameFlatteningEnabled:
- WKPreferencesSetFrameFlatteningEnabled(preferencesRef(), enable);
+ preferences()->setFrameFlatteningEnabled(enable);
case DeveloperExtrasEnabled:
- WKPreferencesSetDeveloperExtrasEnabled(preferencesRef(), enable);
+ preferences()->setDeveloperExtrasEnabled(enable);
break;
#if ENABLE(WEBGL)
case WebGLEnabled:
- WKPreferencesSetWebGLEnabled(preferencesRef(), enable);
+ preferences()->setWebGLEnabled(enable);
break;
#if ENABLE(CSS_SHADERS)
case CSSCustomFilterEnabled:
- WKPreferencesSetCSSCustomFilterEnabled(preferencesRef(), enable);
+ preferences()->setCSSCustomFilterEnabled(enable);
break;
#endif
#endif
#if ENABLE(WEB_AUDIO)
case WebAudioEnabled:
- WKPreferencesSetWebAudioEnabled(preferencesRef(), enable);
+ preferences()->setWebAudioEnabled(enable);
+ break;
+#endif
+#if ENABLE(SMOOTH_SCROLLING)
+ case ScrollAnimatorEnabled:
+ preferences()->setScrollAnimatorEnabled(enable);
break;
#endif
+ case CaretBrowsingEnabled:
+ // FIXME: Caret browsing doesn't make much sense in touch mode.
+ preferences()->setCaretBrowsingEnabled(enable);
+ break;
+ case NotificationsEnabled:
+ preferences()->setNotificationsEnabled(enable);
+ break;
default:
ASSERT_NOT_REACHED();
}
@@ -166,22 +183,22 @@ void QWebPreferencesPrivate::setFontFamily(QWebPreferencesPrivate::FontFamily wh
{
switch (which) {
case StandardFont:
- WKPreferencesSetStandardFontFamily(preferencesRef(), WKStringCreateWithQString(family));
+ preferences()->setStandardFontFamily(family);
break;
case FixedFont:
- WKPreferencesSetFixedFontFamily(preferencesRef(), WKStringCreateWithQString(family));
+ preferences()->setFixedFontFamily(family);
break;
case SerifFont:
- WKPreferencesSetSerifFontFamily(preferencesRef(), WKStringCreateWithQString(family));
+ preferences()->setSerifFontFamily(family);
break;
case SansSerifFont:
- WKPreferencesSetSansSerifFontFamily(preferencesRef(), WKStringCreateWithQString(family));
+ preferences()->setSansSerifFontFamily(family);
break;
case CursiveFont:
- WKPreferencesSetCursiveFontFamily(preferencesRef(), WKStringCreateWithQString(family));
+ preferences()->setCursiveFontFamily(family);
break;
case FantasyFont:
- WKPreferencesSetFantasyFontFamily(preferencesRef(), WKStringCreateWithQString(family));
+ preferences()->setFantasyFontFamily(family);
break;
default:
break;
@@ -191,30 +208,18 @@ void QWebPreferencesPrivate::setFontFamily(QWebPreferencesPrivate::FontFamily wh
QString QWebPreferencesPrivate::fontFamily(QWebPreferencesPrivate::FontFamily which) const
{
switch (which) {
- case StandardFont: {
- WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyStandardFontFamily(preferencesRef()));
- return WKStringCopyQString(stringRef.get());
- }
- case FixedFont: {
- WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFixedFontFamily(preferencesRef()));
- return WKStringCopyQString(stringRef.get());
- }
- case SerifFont: {
- WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySerifFontFamily(preferencesRef()));
- return WKStringCopyQString(stringRef.get());
- }
- case SansSerifFont: {
- WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySansSerifFontFamily(preferencesRef()));
- return WKStringCopyQString(stringRef.get());
- }
- case CursiveFont: {
- WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyCursiveFontFamily(preferencesRef()));
- return WKStringCopyQString(stringRef.get());
- }
- case FantasyFont: {
- WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFantasyFontFamily(preferencesRef()));
- return WKStringCopyQString(stringRef.get());
- }
+ case StandardFont:
+ return preferences()->standardFontFamily();
+ case FixedFont:
+ return preferences()->fixedFontFamily();
+ case SerifFont:
+ return preferences()->serifFontFamily();
+ case SansSerifFont:
+ return preferences()->sansSerifFontFamily();
+ case CursiveFont:
+ return preferences()->cursiveFontFamily();
+ case FantasyFont:
+ return preferences()->fantasyFontFamily();
default:
return QString();
}
@@ -224,14 +229,14 @@ void QWebPreferencesPrivate::setFontSize(QWebPreferencesPrivate::FontSizeType ty
{
switch (type) {
case MinimumFontSize:
- WKPreferencesSetMinimumFontSize(preferencesRef(), size);
- break;
+ preferences()->setMinimumFontSize(size);
+ break;
case DefaultFontSize:
- WKPreferencesSetDefaultFontSize(preferencesRef(), size);
- break;
+ preferences()->setDefaultFontSize(size);
+ break;
case DefaultFixedFontSize:
- WKPreferencesSetDefaultFixedFontSize(preferencesRef(), size);
- break;
+ preferences()->setDefaultFixedFontSize(size);
+ break;
default:
ASSERT_NOT_REACHED();
}
@@ -241,11 +246,11 @@ unsigned QWebPreferencesPrivate::fontSize(QWebPreferencesPrivate::FontSizeType t
{
switch (type) {
case MinimumFontSize:
- return WKPreferencesGetMinimumFontSize(preferencesRef());
+ return preferences()->minimumFontSize();
case DefaultFontSize:
- return WKPreferencesGetDefaultFontSize(preferencesRef());
+ return preferences()->defaultFontSize();
case DefaultFixedFontSize:
- return WKPreferencesGetDefaultFixedFontSize(preferencesRef());
+ return preferences()->defaultFixedFontSize();
default:
ASSERT_NOT_REACHED();
return false;
@@ -541,10 +546,50 @@ void QWebPreferences::setWebAudioEnabled(bool enable)
#endif
}
-WKPreferencesRef QWebPreferencesPrivate::preferencesRef() const
+bool QWebPreferences::scrollAnimatorEnabled() const
+{
+#if ENABLE(SMOOTH_SCROLLING)
+ return d->testAttribute(QWebPreferencesPrivate::ScrollAnimatorEnabled);
+#else
+ return false;
+#endif
+}
+
+void QWebPreferences::setScrollAnimatorEnabled(bool enable)
+{
+#if ENABLE(SMOOTH_SCROLLING)
+ d->setAttribute(QWebPreferencesPrivate::ScrollAnimatorEnabled, enable);
+ emit scrollAnimatorEnabledChanged();
+#else
+ UNUSED_PARAM(enable);
+#endif
+}
+
+bool QWebPreferences::caretBrowsingEnabled() const
+{
+ return d->testAttribute(QWebPreferencesPrivate::CaretBrowsingEnabled);
+}
+
+void QWebPreferences::setCaretBrowsingEnabled(bool enable)
+{
+ d->setAttribute(QWebPreferencesPrivate::CaretBrowsingEnabled, enable);
+ emit caretBrowsingEnabledChanged();
+}
+
+bool QWebPreferences::notificationsEnabled() const
+{
+ return d->testAttribute(QWebPreferencesPrivate::NotificationsEnabled);
+}
+
+void QWebPreferences::setNotificationsEnabled(bool enable)
+{
+ d->setAttribute(QWebPreferencesPrivate::NotificationsEnabled, enable);
+ emit notificationsEnabledChanged();
+}
+
+WebKit::WebPreferences* QWebPreferencesPrivate::preferences() const
{
- WKPageGroupRef pageGroupRef = toAPI(webViewPrivate->webPageProxy->pageGroup());
- return WKPageGroupGetPreferences(pageGroupRef);
+ return webViewPrivate->webPageProxy->pageGroup()->preferences();
}
QWebPreferencesPrivate* QWebPreferencesPrivate::get(QWebPreferences* preferences)
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h
index 373df7504..e3fab79ab 100644
--- a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h
+++ b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h
@@ -45,6 +45,9 @@ public:
Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled NOTIFY developerExtrasEnabledChanged FINAL)
Q_PROPERTY(bool webGLEnabled READ webGLEnabled WRITE setWebGLEnabled NOTIFY webGLEnabledChanged FINAL)
Q_PROPERTY(bool webAudioEnabled READ webAudioEnabled WRITE setWebAudioEnabled NOTIFY webAudioEnabledChanged FINAL)
+ Q_PROPERTY(bool scrollAnimatorEnabled READ scrollAnimatorEnabled WRITE setScrollAnimatorEnabled NOTIFY scrollAnimatorEnabledChanged FINAL)
+ Q_PROPERTY(bool caretBrowsingEnabled READ caretBrowsingEnabled WRITE setCaretBrowsingEnabled NOTIFY caretBrowsingEnabledChanged FINAL)
+ Q_PROPERTY(bool notificationsEnabled READ notificationsEnabled WRITE setNotificationsEnabled NOTIFY notificationsEnabledChanged FINAL)
Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily NOTIFY standardFontFamilyChanged FINAL)
Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily NOTIFY fixedFontFamilyChanged FINAL)
@@ -99,6 +102,15 @@ public:
bool webAudioEnabled() const;
void setWebAudioEnabled(bool enable);
+ bool scrollAnimatorEnabled() const;
+ void setScrollAnimatorEnabled(bool enable);
+
+ bool caretBrowsingEnabled() const;
+ void setCaretBrowsingEnabled(bool enable);
+
+ bool notificationsEnabled() const;
+ void setNotificationsEnabled(bool enable);
+
QString standardFontFamily() const;
void setStandardFontFamily(const QString& family);
@@ -141,6 +153,9 @@ Q_SIGNALS:
void developerExtrasEnabledChanged();
void webGLEnabledChanged();
void webAudioEnabledChanged();
+ void scrollAnimatorEnabledChanged();
+ void caretBrowsingEnabledChanged();
+ void notificationsEnabledChanged();
void standardFontFamilyChanged();
void fixedFontFamilyChanged();
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h
index c606bbe89..c8098b50e 100644
--- a/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h
+++ b/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h
@@ -20,7 +20,7 @@
#ifndef qwebpreferences_p_p_h
#define qwebpreferences_p_p_h
-#include "WKPreferences.h"
+#include "WebPreferences.h"
class QQuickWebViewPrivate;
@@ -41,7 +41,10 @@ public:
DeveloperExtrasEnabled,
WebGLEnabled,
CSSCustomFilterEnabled,
- WebAudioEnabled
+ WebAudioEnabled,
+ ScrollAnimatorEnabled,
+ CaretBrowsingEnabled,
+ NotificationsEnabled
};
enum FontFamily {
@@ -71,7 +74,7 @@ public:
void setFontSize(FontSizeType type, unsigned size);
unsigned fontSize(FontSizeType type) const;
- WKPreferencesRef preferencesRef() const;
+ WebKit::WebPreferences* preferences() const;
QQuickWebViewPrivate* webViewPrivate;
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml
index fcd3d9301..01192a8af 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml
@@ -93,5 +93,39 @@ Item {
compare(documentSize(), "960x1440")
compare(test.contentsScale, 1.0)
}
+
+ function test_localPageDeviceWidth() {
+ webView.url = "about:blank"
+ verify(webView.waitForLoadSucceeded())
+
+ webView.url = "../common/test5.html"
+ verify(webView.waitForLoadSucceeded())
+ compare(test.contentsScale, 0.5)
+
+ // Add user interaction.
+ test.touchTap(webView, 10, 10)
+
+ webView.reload()
+ verify(webView.waitForLoadSucceeded())
+ // The page should still fit to view after a reload
+ compare(test.contentsScale, 0.5)
+ }
+
+ function test_localPageInitialScale() {
+ webView.url = "about:blank"
+ verify(webView.waitForLoadSucceeded())
+
+ webView.url = "../common/test4.html"
+ verify(webView.waitForLoadSucceeded())
+
+ compare(test.contentsScale, 2.0)
+
+ // Add user interaction.
+ test.touchTap(webView, 10, 10)
+
+ webView.reload()
+ verify(webView.waitForLoadSucceeded())
+ compare(test.contentsScale, 2.0)
+ }
}
}
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test4.html b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test4.html
index e31d689d8..8f75af606 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test4.html
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test4.html
@@ -9,6 +9,7 @@
font-size: 50px;
}
</style>
+ <meta name="viewport" content="initial-scale=2.0"/>
</head>
<body>
<div id="content">
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test5.html b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test5.html
new file mode 100644
index 000000000..3630ea6bd
--- /dev/null
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/test5.html
@@ -0,0 +1,10 @@
+<html>
+ <head>
+ <title>Local page with viewport meta tag: width=device-width</title>
+ <meta name="viewport" content="width=device-width"/>
+ </head>
+ <body>
+ <style type="text/css">body {width: 960px; height: 1440px; margin: 0; padding: 0;}</style>
+ <div>blah</div>
+ </body>
+</html>
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp
index 558053729..6e2c342cb 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp
@@ -258,11 +258,8 @@ void tst_QQuickWebView::show()
void tst_QQuickWebView::showWebView()
{
- webView()->setSize(QSizeF(300, 400));
-
webView()->setUrl(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/direct-image-compositing.html")));
QVERIFY(waitForLoadSucceeded(webView()));
-
m_window->show();
// This should not crash.
webView()->setVisible(true);
@@ -295,13 +292,11 @@ void tst_QQuickWebView::multipleWebViewWindows()
QQuickWebView* webView2 = newWebView();
QScopedPointer<TestWindow> window2(new TestWindow(webView2));
- webView1->setSize(QSizeF(300, 400));
webView1->setUrl(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/scroll.html")));
QVERIFY(waitForLoadSucceeded(webView1));
window1->show();
webView1->setVisible(true);
- webView2->setSize(QSizeF(300, 400));
webView2->setUrl(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html")));
QVERIFY(waitForLoadSucceeded(webView2));
window2->show();
@@ -334,14 +329,10 @@ void tst_QQuickWebView::multipleWebViews()
void tst_QQuickWebView::basicRenderingSanity()
{
showWebView();
- webView()->setSize(QSizeF(300, 400));
webView()->setUrl(QUrl(QString::fromUtf8("data:text/html,<html><body bgcolor=\"#00ff00\"></body></html>")));
QVERIFY(waitForLoadSucceeded(webView()));
- // We have to explicitly move the window into the screen, otherwise it's not rendered.
- m_window->setGeometry(0, 0, 300, 400);
- m_window->show();
// This should not crash.
webView()->setVisible(true);
QTest::qWait(200);
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/testwindow.h b/Source/WebKit2/UIProcess/API/qt/tests/testwindow.h
index 4b2cfcf11..9d5d656e9 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/testwindow.h
+++ b/Source/WebKit2/UIProcess/API/qt/tests/testwindow.h
@@ -44,6 +44,7 @@ inline TestWindow::TestWindow(QQuickItem* webView)
{
Q_ASSERT(webView);
webView->setParentItem(contentItem());
+ resize(300, 400);
}
inline void TestWindow::resizeEvent(QResizeEvent* event)