summaryrefslogtreecommitdiffstats
path: root/WebKit/qt/Api
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/qt/Api')
-rw-r--r--WebKit/qt/Api/qgraphicswebview.cpp5
-rw-r--r--WebKit/qt/Api/qwebframe.cpp4
-rw-r--r--WebKit/qt/Api/qwebkitglobal.h4
-rw-r--r--WebKit/qt/Api/qwebpage.cpp44
-rw-r--r--WebKit/qt/Api/qwebpage.h16
-rw-r--r--WebKit/qt/Api/qwebpage_p.h3
-rw-r--r--WebKit/qt/Api/qwebsecurityorigin.cpp7
-rw-r--r--WebKit/qt/Api/qwebsettings.cpp32
-rw-r--r--WebKit/qt/Api/qwebview.cpp5
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 &paramNames, const QStringList &paramValues);
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);