summaryrefslogtreecommitdiff
path: root/Source/WebKit/qt/WebCoreSupport
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/qt/WebCoreSupport')
-rw-r--r--Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp4
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp15
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h4
3 files changed, 19 insertions, 4 deletions
diff --git a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 37658861f..1ba5a8aa1 100644
--- a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
@@ -688,8 +688,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::registerForIconNotification(bool shouldRegister)
diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
index e1789f9e2..ee3339594 100644
--- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
@@ -876,8 +876,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);
case WebCore::ContextMenuItemTagInspectElement:
@@ -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;
@@ -1186,6 +1189,14 @@ void QWebPageAdapter::triggerAction(QWebPageAdapter::MenuAction action, QWebHitT
}
}
+void QWebPageAdapter::triggerCustomAction(int action, const QString &title)
+{
+ if (action >= ContextMenuItemBaseCustomTag && action <= ContextMenuItemLastCustomTag)
+ page->contextMenuController().contextMenuItemSelected(static_cast<ContextMenuAction>(action), title);
+ 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 324d0381d..7174d0d96 100644
--- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h
+++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h
@@ -228,6 +228,7 @@ public:
virtual void createUndoStep(QSharedPointer<UndoStepQt>) = 0;
virtual void updateNavigationActions() = 0;
+ virtual void clearCustomActions() = 0;
virtual QWebFrameAdapter* mainFrameAdapter() = 0;
@@ -273,7 +274,7 @@ public:
Separator,
SubMenu
} type;
- MenuAction action;
+ int action;
enum Trait {
None = 0,
Enabled = 1,
@@ -344,6 +345,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;