summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/qt
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/qt')
-rw-r--r--Source/WebKit/qt/Api/qwebsettings.cpp2
-rw-r--r--Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp4
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp17
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h4
-rw-r--r--Source/WebKit/qt/WidgetApi/qgraphicswebview.h54
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebframe.h2
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebinspector.h12
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebpage.cpp45
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebpage.h4
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebpage_p.h3
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebview.h48
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebviewaccessible_p.h32
-rw-r--r--Source/WebKit/qt/WidgetSupport/PageClientQt.cpp2
-rw-r--r--Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp2
-rw-r--r--Source/WebKit/qt/WidgetSupport/QtFallbackWebPopup.cpp3
-rw-r--r--Source/WebKit/qt/declarative/experimental/experimental.pri8
-rw-r--r--Source/WebKit/qt/declarative/public.pri8
-rw-r--r--Source/WebKit/qt/docs/qtwebkit.qdoc2
-rw-r--r--Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp28
-rw-r--r--Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp23
20 files changed, 212 insertions, 91 deletions
diff --git a/Source/WebKit/qt/Api/qwebsettings.cpp b/Source/WebKit/qt/Api/qwebsettings.cpp
index 363f58f78..d3a864262 100644
--- a/Source/WebKit/qt/Api/qwebsettings.cpp
+++ b/Source/WebKit/qt/Api/qwebsettings.cpp
@@ -455,7 +455,7 @@ QWebSettings* QWebSettings::globalSettings()
\value PrivateBrowsingEnabled Private browsing prevents WebKit from
recording visited pages in the history and storing web page icons. This is disabled by default.
\value JavascriptCanOpenWindows Specifies whether JavaScript programs
- can open new windows. This is disabled by default.
+ can open popup windows without user interaction. This is disabled by default.
\value JavascriptCanCloseWindows Specifies whether JavaScript programs
can close windows. This is disabled by default.
\value JavascriptCanAccessClipboard Specifies whether JavaScript programs
diff --git a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 09b0aae82..0b811c8f2 100644
--- a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
@@ -735,8 +735,10 @@ void FrameLoaderClientQt::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* w
if (world != mainThreadNormalWorld())
return;
- if (m_webFrame)
+ if (m_webFrame) {
m_webFrame->didClearWindowObject();
+ m_webFrame->pageAdapter->clearCustomActions();
+ }
}
void FrameLoaderClientQt::documentElementAvailable()
diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
index 554ab8927..a4e1f7464 100644
--- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
@@ -874,8 +874,11 @@ void QWebPageAdapter::dynamicPropertyChangeEvent(QObject* obj, QDynamicPropertyC
#define MAP_ACTION_FROM_VALUE(Name, Value) \
case Value: return QWebPageAdapter::Name
-static QWebPageAdapter::MenuAction adapterActionForContextMenuAction(WebCore::ContextMenuAction action)
+static int adapterActionForContextMenuAction(WebCore::ContextMenuAction action)
{
+ if (action >= ContextMenuItemBaseCustomTag && action <= ContextMenuItemLastCustomTag)
+ return action;
+
switch (action) {
FOR_EACH_MAPPED_MENU_ACTION(MAP_ACTION_FROM_VALUE, SEMICOLON_SEPARATOR);
#if ENABLE(INSPECTOR)
@@ -899,7 +902,7 @@ QList<MenuItem> descriptionForPlatformMenu(const Vector<ContextMenuItem>& items,
switch (item.type()) {
case WebCore::CheckableActionType: /* fall through */
case WebCore::ActionType: {
- QWebPageAdapter::MenuAction action = adapterActionForContextMenuAction(item.action());
+ int action = adapterActionForContextMenuAction(item.action());
if (action > QWebPageAdapter::NoAction) {
description.type = MenuItem::Action;
description.action = action;
@@ -1207,6 +1210,16 @@ void QWebPageAdapter::triggerAction(QWebPageAdapter::MenuAction action, QWebHitT
}
}
+void QWebPageAdapter::triggerCustomAction(int action, const QString &title)
+{
+ if (action >= ContextMenuItemBaseCustomTag && action <= ContextMenuItemLastCustomTag) {
+ ContextMenuItem item(ActionType, static_cast<ContextMenuAction>(action), title);
+ page->contextMenuController()->contextMenuItemSelected(&item);
+ } else {
+ ASSERT_NOT_REACHED();
+ }
+}
+
QString QWebPageAdapter::contextMenuItemTagForAction(QWebPageAdapter::MenuAction action, bool* checkable) const
{
diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h
index ee4d2595a..fcdc25596 100644
--- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h
+++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h
@@ -204,6 +204,7 @@ public:
virtual void createUndoStep(QSharedPointer<UndoStepQt>) = 0;
virtual void updateNavigationActions() = 0;
+ virtual void clearCustomActions() = 0;
virtual QWebFrameAdapter* mainFrameAdapter() = 0;
@@ -249,7 +250,7 @@ public:
Separator,
SubMenu
} type;
- MenuAction action;
+ int action;
enum Trait {
None = 0,
Enabled = 1,
@@ -317,6 +318,7 @@ public:
QWebHitTestResultPrivate* updatePositionDependentMenuActions(const QPoint&, QBitArray*);
void updateActionInternal(MenuAction, const char* commandName, bool* enabled, bool* checked);
void triggerAction(MenuAction, QWebHitTestResultPrivate*, const char* commandName, bool endToEndReload);
+ void triggerCustomAction(int action, const QString &title);
QString contextMenuItemTagForAction(MenuAction, bool* checkable) const;
QStringList supportedContentTypes() const;
diff --git a/Source/WebKit/qt/WidgetApi/qgraphicswebview.h b/Source/WebKit/qt/WidgetApi/qgraphicswebview.h
index 0d990086f..1aa5b66c8 100644
--- a/Source/WebKit/qt/WidgetApi/qgraphicswebview.h
+++ b/Source/WebKit/qt/WidgetApi/qgraphicswebview.h
@@ -92,15 +92,15 @@ public:
bool isTiledBackingStoreFrozen() const;
void setTiledBackingStoreFrozen(bool frozen);
- virtual void setGeometry(const QRectF& rect);
- virtual void updateGeometry();
- virtual void paint(QPainter*, const QStyleOptionGraphicsItem* options, QWidget* widget = Q_NULLPTR);
- virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value);
- virtual bool event(QEvent*);
+ void setGeometry(const QRectF& rect) Q_DECL_OVERRIDE;
+ void updateGeometry() Q_DECL_OVERRIDE;
+ void paint(QPainter*, const QStyleOptionGraphicsItem* options, QWidget* widget = Q_NULLPTR) Q_DECL_OVERRIDE;
+ QVariant itemChange(GraphicsItemChange change, const QVariant& value) Q_DECL_OVERRIDE;
+ bool event(QEvent*) Q_DECL_OVERRIDE;
- virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF& constraint) const;
+ QSizeF sizeHint(Qt::SizeHint which, const QSizeF& constraint) const Q_DECL_OVERRIDE;
- virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
+ QVariant inputMethodQuery(Qt::InputMethodQuery query) const Q_DECL_OVERRIDE;
QPainter::RenderHints renderHints() const;
void setRenderHints(QPainter::RenderHints);
@@ -124,30 +124,30 @@ Q_SIGNALS:
void linkClicked(const QUrl&);
protected:
- virtual void mousePressEvent(QGraphicsSceneMouseEvent*);
- virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*);
- virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
- virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
- virtual void hoverMoveEvent(QGraphicsSceneHoverEvent*);
- virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*);
+ void mousePressEvent(QGraphicsSceneMouseEvent*) Q_DECL_OVERRIDE;
+ void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) Q_DECL_OVERRIDE;
+ void mouseReleaseEvent(QGraphicsSceneMouseEvent*) Q_DECL_OVERRIDE;
+ void mouseMoveEvent(QGraphicsSceneMouseEvent*) Q_DECL_OVERRIDE;
+ void hoverMoveEvent(QGraphicsSceneHoverEvent*) Q_DECL_OVERRIDE;
+ void hoverLeaveEvent(QGraphicsSceneHoverEvent*) Q_DECL_OVERRIDE;
#ifndef QT_NO_WHEELEVENT
- virtual void wheelEvent(QGraphicsSceneWheelEvent*);
+ void wheelEvent(QGraphicsSceneWheelEvent*) Q_DECL_OVERRIDE;
#endif
- virtual void keyPressEvent(QKeyEvent*);
- virtual void keyReleaseEvent(QKeyEvent*);
+ void keyPressEvent(QKeyEvent*) Q_DECL_OVERRIDE;
+ void keyReleaseEvent(QKeyEvent*) Q_DECL_OVERRIDE;
#ifndef QT_NO_CONTEXTMENU
- virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent*);
+ void contextMenuEvent(QGraphicsSceneContextMenuEvent*) Q_DECL_OVERRIDE;
#endif
- virtual void dragEnterEvent(QGraphicsSceneDragDropEvent*);
- virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent*);
- virtual void dragMoveEvent(QGraphicsSceneDragDropEvent*);
- virtual void dropEvent(QGraphicsSceneDragDropEvent*);
- virtual void focusInEvent(QFocusEvent*);
- virtual void focusOutEvent(QFocusEvent*);
- virtual void inputMethodEvent(QInputMethodEvent*);
- virtual bool focusNextPrevChild(bool next);
-
- virtual bool sceneEvent(QEvent*);
+ void dragEnterEvent(QGraphicsSceneDragDropEvent*) Q_DECL_OVERRIDE;
+ void dragLeaveEvent(QGraphicsSceneDragDropEvent*) Q_DECL_OVERRIDE;
+ void dragMoveEvent(QGraphicsSceneDragDropEvent*) Q_DECL_OVERRIDE;
+ void dropEvent(QGraphicsSceneDragDropEvent*) Q_DECL_OVERRIDE;
+ void focusInEvent(QFocusEvent*) Q_DECL_OVERRIDE;
+ void focusOutEvent(QFocusEvent*) Q_DECL_OVERRIDE;
+ void inputMethodEvent(QInputMethodEvent*) Q_DECL_OVERRIDE;
+ bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE;
+
+ bool sceneEvent(QEvent*) Q_DECL_OVERRIDE;
private:
Q_PRIVATE_SLOT(d, void _q_doLoadFinished(bool success))
diff --git a/Source/WebKit/qt/WidgetApi/qwebframe.h b/Source/WebKit/qt/WidgetApi/qwebframe.h
index 619594336..1c3cb07c3 100644
--- a/Source/WebKit/qt/WidgetApi/qwebframe.h
+++ b/Source/WebKit/qt/WidgetApi/qwebframe.h
@@ -202,7 +202,7 @@ public:
QWebHitTestResult hitTestContent(const QPoint &pos) const;
- virtual bool event(QEvent *);
+ bool event(QEvent *) Q_DECL_OVERRIDE;
QWebSecurityOrigin securityOrigin() const;
QWebFrameAdapter* handle() const;
diff --git a/Source/WebKit/qt/WidgetApi/qwebinspector.h b/Source/WebKit/qt/WidgetApi/qwebinspector.h
index d6a4aad3c..c5f097e27 100644
--- a/Source/WebKit/qt/WidgetApi/qwebinspector.h
+++ b/Source/WebKit/qt/WidgetApi/qwebinspector.h
@@ -36,14 +36,14 @@ public:
void setPage(QWebPage* page);
QWebPage* page() const;
- QSize sizeHint() const;
- bool event(QEvent*);
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+ bool event(QEvent*) Q_DECL_OVERRIDE;
protected:
- void resizeEvent(QResizeEvent* event);
- void showEvent(QShowEvent* event);
- void hideEvent(QHideEvent* event);
- void closeEvent(QCloseEvent* event);
+ void resizeEvent(QResizeEvent* event) Q_DECL_OVERRIDE;
+ void showEvent(QShowEvent* event) Q_DECL_OVERRIDE;
+ void hideEvent(QHideEvent* event) Q_DECL_OVERRIDE;
+ void closeEvent(QCloseEvent* event) Q_DECL_OVERRIDE;
private:
QWebInspectorPrivate* d;
diff --git a/Source/WebKit/qt/WidgetApi/qwebpage.cpp b/Source/WebKit/qt/WidgetApi/qwebpage.cpp
index 872f23b3a..60e4d8b7b 100644
--- a/Source/WebKit/qt/WidgetApi/qwebpage.cpp
+++ b/Source/WebKit/qt/WidgetApi/qwebpage.cpp
@@ -238,6 +238,8 @@ QWebPagePrivate::~QWebPagePrivate()
// in order for various destruction callbacks out of WebCore to
// work.
deletePage();
+
+ clearCustomActions();
}
void QWebPagePrivate::show()
@@ -499,8 +501,15 @@ QMenu *createContextMenu(QWebPage* page, const QList<MenuItem>& items, QBitArray
const MenuItem &item = items.at(i);
switch (item.type) {
case MenuItem::Action: {
- QWebPage::WebAction action = webActionForAdapterMenuAction(item.action);
- QAction *a = page->action(action);
+ QAction* a = nullptr;
+ if (item.action < QWebPageAdapter::ActionCount) {
+ QWebPage::WebAction action = webActionForAdapterMenuAction(static_cast<QWebPageAdapter::MenuAction>(item.action));
+ a = page->action(action);
+ if (a)
+ visitedWebActions->setBit(action);
+ } else {
+ a = page->customAction(item.action);
+ }
if (a) {
a->setText(item.title);
a->setEnabled(item.traits & MenuItem::Enabled);
@@ -508,7 +517,6 @@ QMenu *createContextMenu(QWebPage* page, const QList<MenuItem>& items, QBitArray
a->setChecked(item.traits & MenuItem::Checked);
menu->addAction(a);
- visitedWebActions->setBit(action);
}
break;
}
@@ -562,6 +570,16 @@ void QWebPagePrivate::_q_webActionTriggered(bool checked)
QWebPage::WebAction action = static_cast<QWebPage::WebAction>(a->data().toInt());
q->triggerAction(action, checked);
}
+
+void QWebPagePrivate::_q_customActionTriggered(bool checked)
+{
+ Q_UNUSED(checked);
+ QAction* a = qobject_cast<QAction*>(q->sender());
+ if (!a)
+ return;
+ int action = a->data().toInt();
+ triggerCustomAction(action, a->text());
+}
#endif // QT_NO_ACTION
void QWebPagePrivate::updateAction(QWebPage::WebAction action)
@@ -625,6 +643,12 @@ void QWebPagePrivate::updateNavigationActions()
updateAction(QWebPage::ReloadAndBypassCache);
}
+void QWebPagePrivate::clearCustomActions()
+{
+ qDeleteAll(customActions);
+ customActions.clear();
+}
+
QObject *QWebPagePrivate::inspectorHandle()
{
return getOrCreateInspector();
@@ -2509,6 +2533,21 @@ QAction *QWebPage::action(WebAction action) const
d->updateAction(action);
return a;
}
+
+QAction* QWebPage::customAction(int action) const
+{
+ auto actionIter = d->customActions.constFind(action);
+ if (actionIter != d->customActions.constEnd())
+ return *actionIter;
+
+ QAction* a = new QAction(d->q);
+ a->setData(action);
+ connect(a, SIGNAL(triggered(bool)),
+ this, SLOT(_q_customActionTriggered(bool)));
+
+ d->customActions.insert(action, a);
+ return a;
+}
#endif // QT_NO_ACTION
/*!
diff --git a/Source/WebKit/qt/WidgetApi/qwebpage.h b/Source/WebKit/qt/WidgetApi/qwebpage.h
index a9c71fd42..822bd2194 100644
--- a/Source/WebKit/qt/WidgetApi/qwebpage.h
+++ b/Source/WebKit/qt/WidgetApi/qwebpage.h
@@ -301,6 +301,7 @@ public:
#ifndef QT_NO_ACTION
QAction *action(WebAction action) const;
+ QAction *customAction(int action) const;
#endif
virtual void triggerAction(WebAction action, bool checked = false);
@@ -312,7 +313,7 @@ public:
void setPreferredContentsSize(const QSize &size) const;
void setActualVisibleContentRect(const QRect& rect) const;
- virtual bool event(QEvent*);
+ bool event(QEvent*) Q_DECL_OVERRIDE;
bool focusNextPrevChild(bool next);
QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
@@ -443,6 +444,7 @@ private:
Q_PRIVATE_SLOT(d, void _q_onLoadProgressChanged(int))
#ifndef QT_NO_ACTION
Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked))
+ Q_PRIVATE_SLOT(d, void _q_customActionTriggered(bool checked))
#endif
Q_PRIVATE_SLOT(d, void _q_cleanupLeakMessages())
Q_PRIVATE_SLOT(d, void _q_updateScreen(QScreen*))
diff --git a/Source/WebKit/qt/WidgetApi/qwebpage_p.h b/Source/WebKit/qt/WidgetApi/qwebpage_p.h
index 604c0a540..34cf288b4 100644
--- a/Source/WebKit/qt/WidgetApi/qwebpage_p.h
+++ b/Source/WebKit/qt/WidgetApi/qwebpage_p.h
@@ -120,6 +120,7 @@ public:
virtual const char* editorCommandForKeyEvent(QKeyEvent*) OVERRIDE;
void updateNavigationActions() OVERRIDE;
+ void clearCustomActions() OVERRIDE;
virtual QObject* inspectorHandle() OVERRIDE;
virtual void setInspectorFrontend(QObject*) OVERRIDE;
@@ -145,6 +146,7 @@ public:
void createMainFrame();
void _q_webActionTriggered(bool checked);
+ void _q_customActionTriggered(bool checked);
void updateAction(QWebPage::WebAction);
void updateEditorActions();
@@ -198,6 +200,7 @@ public:
bool useFixedLayout;
QAction *actions[QWebPage::WebActionCount];
+ QHash<int, QAction*> customActions;
QPointer <QWindow> window;
QWidget* inspectorFrontend;
diff --git a/Source/WebKit/qt/WidgetApi/qwebview.h b/Source/WebKit/qt/WidgetApi/qwebview.h
index ac0946773..0ed324da1 100644
--- a/Source/WebKit/qt/WidgetApi/qwebview.h
+++ b/Source/WebKit/qt/WidgetApi/qwebview.h
@@ -55,7 +55,7 @@ class QWEBKITWIDGETS_EXPORT QWebView : public QWidget {
Q_FLAGS(QPainter::RenderHints)
public:
explicit QWebView(QWidget* parent = Q_NULLPTR);
- virtual ~QWebView();
+ ~QWebView();
QWebPage* page() const;
void setPage(QWebPage* page);
@@ -90,9 +90,9 @@ public:
void setTextInteractionFlag(Qt::TextInteractionFlag flag);
*/
- QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
+ QVariant inputMethodQuery(Qt::InputMethodQuery property) const Q_DECL_OVERRIDE;
- QSize sizeHint() const;
+ QSize sizeHint() const Q_DECL_OVERRIDE;
qreal zoomFactor() const;
void setZoomFactor(qreal factor);
@@ -106,7 +106,7 @@ public:
bool findText(const QString& subString, QWebPage::FindFlags options = QWebPage::FindFlags());
- virtual bool event(QEvent*);
+ bool event(QEvent*) Q_DECL_OVERRIDE;
public Q_SLOTS:
void stop();
@@ -128,33 +128,33 @@ Q_SIGNALS:
void urlChanged(const QUrl&);
protected:
- void resizeEvent(QResizeEvent*);
- void paintEvent(QPaintEvent*);
+ void resizeEvent(QResizeEvent*) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent*) Q_DECL_OVERRIDE;
virtual QWebView *createWindow(QWebPage::WebWindowType type);
- virtual void changeEvent(QEvent*);
- virtual void mouseMoveEvent(QMouseEvent*);
- virtual void mousePressEvent(QMouseEvent*);
- virtual void mouseDoubleClickEvent(QMouseEvent*);
- virtual void mouseReleaseEvent(QMouseEvent*);
+ void changeEvent(QEvent*) Q_DECL_OVERRIDE;
+ void mouseMoveEvent(QMouseEvent*) Q_DECL_OVERRIDE;
+ void mousePressEvent(QMouseEvent*) Q_DECL_OVERRIDE;
+ void mouseDoubleClickEvent(QMouseEvent*) Q_DECL_OVERRIDE;
+ void mouseReleaseEvent(QMouseEvent*) Q_DECL_OVERRIDE;
#ifndef QT_NO_CONTEXTMENU
- virtual void contextMenuEvent(QContextMenuEvent*);
+ void contextMenuEvent(QContextMenuEvent*) Q_DECL_OVERRIDE;
#endif
#ifndef QT_NO_WHEELEVENT
- virtual void wheelEvent(QWheelEvent*);
+ void wheelEvent(QWheelEvent*) Q_DECL_OVERRIDE;
#endif
- virtual void keyPressEvent(QKeyEvent*);
- virtual void keyReleaseEvent(QKeyEvent*);
- virtual void dragEnterEvent(QDragEnterEvent*);
- virtual void dragLeaveEvent(QDragLeaveEvent*);
- virtual void dragMoveEvent(QDragMoveEvent*);
- virtual void dropEvent(QDropEvent*);
- virtual void focusInEvent(QFocusEvent*);
- virtual void focusOutEvent(QFocusEvent*);
- virtual void inputMethodEvent(QInputMethodEvent*);
-
- virtual bool focusNextPrevChild(bool next);
+ void keyPressEvent(QKeyEvent*) Q_DECL_OVERRIDE;
+ void keyReleaseEvent(QKeyEvent*) Q_DECL_OVERRIDE;
+ void dragEnterEvent(QDragEnterEvent*) Q_DECL_OVERRIDE;
+ void dragLeaveEvent(QDragLeaveEvent*) Q_DECL_OVERRIDE;
+ void dragMoveEvent(QDragMoveEvent*) Q_DECL_OVERRIDE;
+ void dropEvent(QDropEvent*) Q_DECL_OVERRIDE;
+ void focusInEvent(QFocusEvent*) Q_DECL_OVERRIDE;
+ void focusOutEvent(QFocusEvent*) Q_DECL_OVERRIDE;
+ void inputMethodEvent(QInputMethodEvent*) Q_DECL_OVERRIDE;
+
+ bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE;
private:
friend class QWebPage;
diff --git a/Source/WebKit/qt/WidgetApi/qwebviewaccessible_p.h b/Source/WebKit/qt/WidgetApi/qwebviewaccessible_p.h
index 7cbf44870..c68cc9011 100644
--- a/Source/WebKit/qt/WidgetApi/qwebviewaccessible_p.h
+++ b/Source/WebKit/qt/WidgetApi/qwebviewaccessible_p.h
@@ -41,15 +41,15 @@ public:
QWebFrame* frame() const;
- QAccessibleInterface* parent() const;
- int childCount() const;
- QAccessibleInterface* child(int index) const;
- int indexOfChild(const QAccessibleInterface*) const;
+ QAccessibleInterface* parent() const Q_DECL_OVERRIDE;
+ int childCount() const Q_DECL_OVERRIDE;
+ QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE;
+ int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE;
int navigate(QAccessible::RelationFlag, int, QAccessibleInterface** target) const;
- QString text(QAccessible::Text) const;
- QAccessible::Role role() const;
- QAccessible::State state() const;
+ QString text(QAccessible::Text) const Q_DECL_OVERRIDE;
+ QAccessible::Role role() const Q_DECL_OVERRIDE;
+ QAccessible::State state() const Q_DECL_OVERRIDE;
};
class QWebPageAccessible : public QAccessibleObject {
@@ -58,15 +58,15 @@ public:
QWebPage* page() const;
- QAccessibleInterface* parent() const;
- int childCount() const;
- QAccessibleInterface* child(int index) const;
- int indexOfChild(const QAccessibleInterface*) const;
+ QAccessibleInterface* parent() const Q_DECL_OVERRIDE;
+ int childCount() const Q_DECL_OVERRIDE;
+ QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE;
+ int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE;
int navigate(QAccessible::RelationFlag, int, QAccessibleInterface** target) const;
- QString text(QAccessible::Text) const;
- QAccessible::Role role() const;
- QAccessible::State state() const;
+ QString text(QAccessible::Text) const Q_DECL_OVERRIDE;
+ QAccessible::Role role() const Q_DECL_OVERRIDE;
+ QAccessible::State state() const Q_DECL_OVERRIDE;
};
class QWebViewAccessible : public QAccessibleWidget {
@@ -75,8 +75,8 @@ public:
QWebView* view() const;
- int childCount() const;
- QAccessibleInterface* child(int index) const;
+ int childCount() const Q_DECL_OVERRIDE;
+ QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE;
};
#endif
diff --git a/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp b/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
index 858290f6e..2dd14afc6 100644
--- a/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
+++ b/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
@@ -146,7 +146,7 @@ QStyle* PageClientQWidget::style() const
QRectF PageClientQWidget::windowRect() const
{
- return QRectF(view->window()->geometry());
+ return QRectF(view->window()->frameGeometry());
}
void PageClientQWidget::setWidgetVisible(Widget* widget, bool visible)
diff --git a/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp b/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp
index 6881d9d74..e36b5bd20 100644
--- a/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp
+++ b/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp
@@ -163,6 +163,8 @@ QRect QStyleFacadeImp::buttonSubElementRect(QStyleFacade::ButtonSubElement butto
QStyle::SubElement subElement = QStyle::SE_CustomBase;
switch (buttonElement) {
+ case CheckBoxIndicator: subElement = QStyle::SE_CheckBoxIndicator; break;
+ case RadioButtonIndicator: subElement = QStyle::SE_RadioButtonIndicator; break;
case PushButtonLayoutItem: subElement = QStyle::SE_PushButtonLayoutItem; break;
case PushButtonContents: subElement = QStyle::SE_PushButtonContents; break;
default: ASSERT_NOT_REACHED();
diff --git a/Source/WebKit/qt/WidgetSupport/QtFallbackWebPopup.cpp b/Source/WebKit/qt/WidgetSupport/QtFallbackWebPopup.cpp
index 61ddacaa8..e6c83197e 100644
--- a/Source/WebKit/qt/WidgetSupport/QtFallbackWebPopup.cpp
+++ b/Source/WebKit/qt/WidgetSupport/QtFallbackWebPopup.cpp
@@ -71,6 +71,9 @@ void QtFallbackWebPopup::show(const QWebSelectData& data)
m_combo->setGeometry(QRect(rect.left(), rect.top(), rect.width(), m_combo->sizeHint().height()));
}
+ // adjust the size of combo box to the longest name
+ m_combo->adjustSize();
+
m_combo->showPopupAtCursorPosition();
}
diff --git a/Source/WebKit/qt/declarative/experimental/experimental.pri b/Source/WebKit/qt/declarative/experimental/experimental.pri
index b81e4220c..ed3d21b1f 100644
--- a/Source/WebKit/qt/declarative/experimental/experimental.pri
+++ b/Source/WebKit/qt/declarative/experimental/experimental.pri
@@ -11,9 +11,11 @@ TARGET.module_name = QtWebKit/experimental
CONFIG += plugin
-cpqmldir.files = $${_PRO_FILE_PWD_}/qmldir
-cpqmldir.path = $${ROOT_BUILD_DIR}/imports/$${TARGET.module_name}
-COPIES += cpqmldir
+!debug_and_release|!build_all|CONFIG(release, debug|release) {
+ cpqmldir.files = $${_PRO_FILE_PWD_}/qmldir
+ cpqmldir.path = $${ROOT_BUILD_DIR}/imports/$${TARGET.module_name}
+ COPIES += cpqmldir
+}
qtConfig(reduce_exports):CONFIG += hide_symbols
diff --git a/Source/WebKit/qt/declarative/public.pri b/Source/WebKit/qt/declarative/public.pri
index 01a8341c9..6c3c2d404 100644
--- a/Source/WebKit/qt/declarative/public.pri
+++ b/Source/WebKit/qt/declarative/public.pri
@@ -11,9 +11,11 @@ TARGET.module_name = QtWebKit
CONFIG += plugin
-cpqmldir.files = $${_PRO_FILE_PWD_}/qmldir
-cpqmldir.path = $${ROOT_BUILD_DIR}/imports/$${TARGET.module_name}
-COPIES += cpqmldir
+!debug_and_release|!build_all|CONFIG(release, debug|release) {
+ cpqmldir.files = $${_PRO_FILE_PWD_}/qmldir
+ cpqmldir.path = $${ROOT_BUILD_DIR}/imports/$${TARGET.module_name}
+ COPIES += cpqmldir
+}
qtConfig(reduce_exports):CONFIG += hide_symbols
diff --git a/Source/WebKit/qt/docs/qtwebkit.qdoc b/Source/WebKit/qt/docs/qtwebkit.qdoc
index f8f22fbd9..f72d39a32 100644
--- a/Source/WebKit/qt/docs/qtwebkit.qdoc
+++ b/Source/WebKit/qt/docs/qtwebkit.qdoc
@@ -175,7 +175,7 @@
\endtable
\table
- \header \li Mac OS X
+ \header \li \macos
\row \li
\list
\li \c{Library/Internet Plug-Ins} in the user's home directory
diff --git a/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp b/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp
index 52e6422b1..18d82625c 100644
--- a/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp
+++ b/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp
@@ -642,6 +642,7 @@ private Q_SLOTS:
void introspectQtMethods_data();
void introspectQtMethods();
void scriptablePlugin();
+ void exceptionInSlot();
private:
QString evalJS(const QString& s)
@@ -2234,5 +2235,32 @@ void tst_QObjectBridge::scriptablePlugin()
QCOMPARE(result.toString(), QLatin1String("42"));
}
+class WebPageWithConsoleCapture : public QWebPage
+{
+public:
+ void javaScriptConsoleMessage(const QString &message, int, const QString &)
+ {
+ consoleMessages << message;
+ }
+
+ QStringList consoleMessages;
+};
+
+void tst_QObjectBridge::exceptionInSlot()
+{
+ WebPageWithConsoleCapture page;
+ QWebFrame* frame = page.mainFrame();
+ frame->addToJavaScriptWindowObject("myObject", m_myObject);
+ frame->evaluateJavaScript(
+ "myHandler = function() { window.gotSignal = true; throw 'exception in slot'; };"
+ "myObject.mySignal.connect(myHandler);"
+ "gotSignal = false;"
+ "myObject.mySignal();"
+ );
+ QString ret = frame->evaluateJavaScript("gotSignal").toString();
+ QCOMPARE(ret, sTrue);
+ QCOMPARE(page.consoleMessages, QStringList() << "exception in slot");
+}
+
QTEST_MAIN(tst_QObjectBridge)
#include "tst_qobjectbridge.moc"
diff --git a/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp b/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
index a990ad0f2..dcea15912 100644
--- a/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
+++ b/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
@@ -59,6 +59,7 @@ private Q_SLOTS:
void setPalette_data();
void setPalette();
#endif
+ void innerOuterRect();
};
// This will be called before the first test function is executed.
@@ -518,6 +519,28 @@ void tst_QWebView::renderingAfterMaxAndBack()
QCOMPARE(image3, reference3);
}
+void tst_QWebView::innerOuterRect()
+{
+ QUrl url = QUrl("data:text/html,<html><head></head>"
+ "<body bgcolor=red>"
+ "</body>"
+ "</html>");
+ QWebView view;
+ view.page()->mainFrame()->load(url);
+ QVERIFY(waitForSignal(&view, SIGNAL(loadFinished(bool))));
+ view.showMaximized();
+ const QRect frameGeometry = view.frameGeometry();
+ const QRect geometry = view.geometry();
+ QVariant outerWidth = view.page()->mainFrame()->evaluateJavaScript("window.outerWidth;");
+ QCOMPARE(outerWidth.toInt(), frameGeometry.width());
+ QVariant innerWidth = view.page()->mainFrame()->evaluateJavaScript("window.innerWidth;");
+ QCOMPARE(innerWidth.toInt(), geometry.width());
+ QVariant outerHeight = view.page()->mainFrame()->evaluateJavaScript("window.outerHeight;");
+ QCOMPARE(outerHeight.toInt(), frameGeometry.height());
+ QVariant innerHeight = view.page()->mainFrame()->evaluateJavaScript("window.innerHeight;");
+ QCOMPARE(innerHeight.toInt(), geometry.height());
+}
+
QTEST_MAIN(tst_QWebView)
#include "tst_qwebview.moc"