diff options
Diffstat (limited to 'WebKit/qt/Api')
| -rw-r--r-- | WebKit/qt/Api/qgraphicswebview.cpp | 5 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebframe.cpp | 4 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebkitglobal.h | 4 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebpage.cpp | 44 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebpage.h | 16 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebpage_p.h | 3 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebsecurityorigin.cpp | 7 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebsettings.cpp | 32 | ||||
| -rw-r--r-- | WebKit/qt/Api/qwebview.cpp | 5 |
9 files changed, 92 insertions, 28 deletions
diff --git a/WebKit/qt/Api/qgraphicswebview.cpp b/WebKit/qt/Api/qgraphicswebview.cpp index 8fbb8e2..8a94c9b 100644 --- a/WebKit/qt/Api/qgraphicswebview.cpp +++ b/WebKit/qt/Api/qgraphicswebview.cpp @@ -319,8 +319,9 @@ bool QGraphicsWebView::sceneEvent(QEvent* event) || event->type() == QEvent::TouchEnd || event->type() == QEvent::TouchUpdate)) { d->page->event(event); - if (event->isAccepted()) - return true; + + // Always return true so that we'll receive also TouchUpdate and TouchEnd events + return true; } #endif diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp index d1741ca..f10d5b4 100644 --- a/WebKit/qt/Api/qwebframe.cpp +++ b/WebKit/qt/Api/qwebframe.cpp @@ -784,6 +784,10 @@ void QWebFrame::load(const QNetworkRequest &req, The \a html is loaded immediately; external objects are loaded asynchronously. + If a script in the \a html runs longer than the default script timeout (currently 10 seconds), + for example due to being blocked by a modal JavaScript alert dialog, this method will return + as soon as possible after the timeout and any subsequent \a html will be loaded asynchronously. + When using this method WebKit assumes that external resources such as JavaScript programs or style sheets are encoded in UTF-8 unless otherwise specified. For example, the encoding of an external script can be specified through the charset attribute of the HTML script tag. It is also possible diff --git a/WebKit/qt/Api/qwebkitglobal.h b/WebKit/qt/Api/qwebkitglobal.h index d83d569..a6be571 100644 --- a/WebKit/qt/Api/qwebkitglobal.h +++ b/WebKit/qt/Api/qwebkitglobal.h @@ -22,9 +22,9 @@ #include <QtCore/qglobal.h> -#define QTWEBKIT_VERSION_STR "2.1.0" +#define QTWEBKIT_VERSION_STR "2.2.0" // QTWEBKIT_VERSION is (major << 16) + (minor << 8) + patch. Similar to Qt. -#define QTWEBKIT_VERSION 0x020100 +#define QTWEBKIT_VERSION 0x020200 // Use: #if (QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 0, 0)). Similar to Qt. #define QTWEBKIT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) diff --git a/WebKit/qt/Api/qwebpage.cpp b/WebKit/qt/Api/qwebpage.cpp index 35219a9..fa49293 100644 --- a/WebKit/qt/Api/qwebpage.cpp +++ b/WebKit/qt/Api/qwebpage.cpp @@ -49,6 +49,7 @@ #include "DragController.h" #include "DragData.h" #include "EditorClientQt.h" +#include "SchemeRegistry.h" #include "SecurityOrigin.h" #include "Settings.h" #include "Page.h" @@ -268,11 +269,13 @@ QWebPagePrivate::QWebPagePrivate(QWebPage *qq) WebCore::Font::setCodePath(WebCore::Font::Complex); #endif - chromeClient = new ChromeClientQt(q); - contextMenuClient = new ContextMenuClientQt(); - editorClient = new EditorClientQt(q); - page = new Page(chromeClient, contextMenuClient, editorClient, - new DragClientQt(q), new InspectorClientQt(q), 0, 0, 0, 0); + Page::PageClients pageClients; + pageClients.chromeClient = new ChromeClientQt(q); + pageClients.contextMenuClient = new ContextMenuClientQt(); + pageClients.editorClient = new EditorClientQt(q); + pageClients.dragClient = new DragClientQt(q); + pageClients.inspectorClient = new InspectorClientQt(q); + page = new Page(pageClients); settings = new QWebSettings(page->settings()); @@ -1390,14 +1393,17 @@ bool QWebPagePrivate::handleScrolling(QKeyEvent *ev, Frame *frame) } #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) -void QWebPagePrivate::touchEvent(QTouchEvent* event) +bool QWebPagePrivate::touchEvent(QTouchEvent* event) { WebCore::Frame* frame = QWebFramePrivate::core(mainFrame); if (!frame->view()) - return; + return false; - bool accepted = frame->eventHandler()->handleTouchEvent(PlatformTouchEvent(event)); - event->setAccepted(accepted); + // Always accept the QTouchEvent so that we'll receive also TouchUpdate and TouchEnd events + event->setAccepted(true); + + // Return whether the default action was cancelled in the JS event handler + return frame->eventHandler()->handleTouchEvent(PlatformTouchEvent(event)); } #endif @@ -2107,6 +2113,20 @@ bool QWebPage::allowGeolocationRequest(QWebFrame *frame) #endif } +void QWebPage::setUserPermission(QWebFrame* frame, PermissionDomain domain, PermissionPolicy policy) +{ + switch (domain) { + case NotificationsPermissionDomain: +#if ENABLE(NOTIFICATIONS) + if (policy == PermissionGranted) + NotificationPresenterClientQt::notificationPresenter()->allowNotificationForFrame(frame); +#endif + break; + default: + break; + } +} + /*! This function is called whenever WebKit wants to create a new window of the given \a type, for example when a JavaScript program requests to open a document in a new window. @@ -2393,7 +2413,7 @@ bool QWebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest & return true; case DelegateExternalLinks: - if (WebCore::SecurityOrigin::shouldTreatURLSchemeAsLocal(request.url().scheme())) + if (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal(request.url().scheme())) return true; emit linkClicked(request.url()); return false; @@ -2827,8 +2847,8 @@ bool QWebPage::event(QEvent *ev) case QEvent::TouchBegin: case QEvent::TouchUpdate: case QEvent::TouchEnd: - d->touchEvent(static_cast<QTouchEvent*>(ev)); - break; + // Return whether the default action was cancelled in the JS event handler + return d->touchEvent(static_cast<QTouchEvent*>(ev)); #endif #ifndef QT_NO_PROPERTIES case QEvent::DynamicPropertyChange: diff --git a/WebKit/qt/Api/qwebpage.h b/WebKit/qt/Api/qwebpage.h index fcaa302..f0d2438 100644 --- a/WebKit/qt/Api/qwebpage.h +++ b/WebKit/qt/Api/qwebpage.h @@ -195,6 +195,16 @@ public: WebModalDialog }; + enum PermissionPolicy { + PermissionGranted, + PermissionUnknown, + PermissionDenied + }; + + enum PermissionDomain { + NotificationsPermissionDomain + }; + class ViewportHints { public: ViewportHints(); @@ -290,6 +300,8 @@ public: QMenu *createStandardContextMenu(); + void setUserPermission(QWebFrame* frame, PermissionDomain domain, PermissionPolicy policy); + enum Extension { ChooseMultipleFilesExtension, ErrorPageExtension @@ -371,6 +383,10 @@ Q_SIGNALS: void viewportChangeRequested(const QWebPage::ViewportHints& hints); + void requestPermissionFromUser(QWebFrame* frame, QWebPage::PermissionDomain domain); + void checkPermissionFromUser(QWebFrame* frame, QWebPage::PermissionDomain domain, QWebPage::PermissionPolicy& policy); + void cancelRequestsForPermission(QWebFrame* frame, QWebPage::PermissionDomain domain); + protected: virtual QWebPage *createWindow(WebWindowType type); virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); diff --git a/WebKit/qt/Api/qwebpage_p.h b/WebKit/qt/Api/qwebpage_p.h index 54a1523..44ceb87 100644 --- a/WebKit/qt/Api/qwebpage_p.h +++ b/WebKit/qt/Api/qwebpage_p.h @@ -132,7 +132,8 @@ public: bool handleScrolling(QKeyEvent*, WebCore::Frame*); #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - void touchEvent(QTouchEvent*); + // Returns whether the default action was cancelled in the JS event handler + bool touchEvent(QTouchEvent*); #endif void setInspector(QWebInspector*); diff --git a/WebKit/qt/Api/qwebsecurityorigin.cpp b/WebKit/qt/Api/qwebsecurityorigin.cpp index fe25d2d..e8c8f33 100644 --- a/WebKit/qt/Api/qwebsecurityorigin.cpp +++ b/WebKit/qt/Api/qwebsecurityorigin.cpp @@ -25,6 +25,7 @@ #include "DatabaseTracker.h" #include "KURL.h" +#include "SchemeRegistry.h" #include "SecurityOrigin.h" #include <QStringList> @@ -222,7 +223,7 @@ QList<QWebDatabase> QWebSecurityOrigin::databases() const */ void QWebSecurityOrigin::addLocalScheme(const QString& scheme) { - SecurityOrigin::registerURLSchemeAsLocal(scheme); + SchemeRegistry::registerURLSchemeAsLocal(scheme); } /*! @@ -237,7 +238,7 @@ void QWebSecurityOrigin::addLocalScheme(const QString& scheme) */ void QWebSecurityOrigin::removeLocalScheme(const QString& scheme) { - SecurityOrigin::removeURLSchemeRegisteredAsLocal(scheme); + SchemeRegistry::removeURLSchemeRegisteredAsLocal(scheme); } /*! @@ -251,7 +252,7 @@ void QWebSecurityOrigin::removeLocalScheme(const QString& scheme) QStringList QWebSecurityOrigin::localSchemes() { QStringList list; - const URLSchemesMap& map = SecurityOrigin::localURLSchemes(); + const URLSchemesMap& map = SchemeRegistry::localURLSchemes(); URLSchemesMap::const_iterator end = map.end(); for (URLSchemesMap::const_iterator i = map.begin(); i != end; ++i) { const QString scheme = *i; diff --git a/WebKit/qt/Api/qwebsettings.cpp b/WebKit/qt/Api/qwebsettings.cpp index 4ba6943..edd07da 100644 --- a/WebKit/qt/Api/qwebsettings.cpp +++ b/WebKit/qt/Api/qwebsettings.cpp @@ -457,12 +457,32 @@ QWebSettings::QWebSettings() d->fontSizes.insert(QWebSettings::MinimumLogicalFontSize, 0); d->fontSizes.insert(QWebSettings::DefaultFontSize, 16); d->fontSizes.insert(QWebSettings::DefaultFixedFontSize, 13); - d->fontFamilies.insert(QWebSettings::StandardFont, QLatin1String("Arial")); - d->fontFamilies.insert(QWebSettings::FixedFont, QLatin1String("Courier New")); - d->fontFamilies.insert(QWebSettings::SerifFont, QLatin1String("Times New Roman")); - d->fontFamilies.insert(QWebSettings::SansSerifFont, QLatin1String("Arial")); - d->fontFamilies.insert(QWebSettings::CursiveFont, QLatin1String("Arial")); - d->fontFamilies.insert(QWebSettings::FantasyFont, QLatin1String("Arial")); + + QFont defaultFont; + defaultFont.setStyleHint(QFont::Serif); + d->fontFamilies.insert(QWebSettings::StandardFont, defaultFont.defaultFamily()); + d->fontFamilies.insert(QWebSettings::SerifFont, defaultFont.defaultFamily()); + +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + defaultFont.setStyleHint(QFont::Fantasy); + d->fontFamilies.insert(QWebSettings::FantasyFont, defaultFont.defaultFamily()); + + defaultFont.setStyleHint(QFont::Cursive); + d->fontFamilies.insert(QWebSettings::CursiveFont, defaultFont.defaultFamily()); +#else + d->fontFamilies.insert(QWebSettings::FantasyFont, defaultFont.defaultFamily()); + d->fontFamilies.insert(QWebSettings::CursiveFont, defaultFont.defaultFamily()); +#endif + + defaultFont.setStyleHint(QFont::SansSerif); + d->fontFamilies.insert(QWebSettings::SansSerifFont, defaultFont.defaultFamily()); + +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + defaultFont.setStyleHint(QFont::Monospace); +#else + defaultFont.setStyleHint(QFont::TypeWriter); +#endif + d->fontFamilies.insert(QWebSettings::FixedFont, defaultFont.defaultFamily()); d->attributes.insert(QWebSettings::AutoLoadImages, true); d->attributes.insert(QWebSettings::DnsPrefetchEnabled, false); diff --git a/WebKit/qt/Api/qwebview.cpp b/WebKit/qt/Api/qwebview.cpp index 2defdbb..3daa045 100644 --- a/WebKit/qt/Api/qwebview.cpp +++ b/WebKit/qt/Api/qwebview.cpp @@ -826,8 +826,9 @@ bool QWebView::event(QEvent *e) || e->type() == QEvent::TouchEnd || e->type() == QEvent::TouchUpdate) { d->page->event(e); - if (e->isAccepted()) - return true; + + // Always return true so that we'll receive also TouchUpdate and TouchEnd events + return true; #endif } else if (e->type() == QEvent::Leave) d->page->event(e); |
