diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
commit | cfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch) | |
tree | 24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebKit2/UIProcess/API/qt | |
parent | 69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff) | |
download | qtwebkit-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')
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) |