Diff
Modified: trunk/Source/WebCore/ChangeLog (154238 => 154239)
--- trunk/Source/WebCore/ChangeLog 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebCore/ChangeLog 2013-08-17 19:46:45 UTC (rev 154239)
@@ -1,5 +1,16 @@
2013-08-17 Andreas Kling <[email protected]>
+ <https://webkit.org/b/119957> Page::contextMenuController() should return a reference.
+
+ Reviewed by Antti Koivisto.
+
+ Page::m_contextMenuController is never null.
+
+ * page/Page.h:
+ (WebCore::Page::contextMenuController):
+
+2013-08-17 Andreas Kling <[email protected]>
+
<https://webkit.org/b/119954> Page::dragCaretController() should return a reference.
Reviewed by Antti Koivisto.
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (154238 => 154239)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2013-08-17 19:46:45 UTC (rev 154239)
@@ -3019,7 +3019,7 @@
}
}
- page->contextMenuController()->showContextMenuAt(page->mainFrame(), rect.center());
+ page->contextMenuController().showContextMenuAt(page->mainFrame(), rect.center());
}
- (void)accessibilityScrollToVisible
Modified: trunk/Source/WebCore/dom/Node.cpp (154238 => 154239)
--- trunk/Source/WebCore/dom/Node.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebCore/dom/Node.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -2213,7 +2213,7 @@
} else if (eventType == eventNames().contextmenuEvent) {
if (Frame* frame = document()->frame())
if (Page* page = frame->page())
- page->contextMenuController()->handleContextMenuEvent(event);
+ page->contextMenuController().handleContextMenuEvent(event);
#endif
} else if (eventType == eventNames().textInputEvent) {
if (event->hasInterface(eventNames().interfaceForTextEvent))
Modified: trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp (154238 => 154239)
--- trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -276,8 +276,7 @@
return;
}
RefPtr<FrontendMenuProvider> menuProvider = FrontendMenuProvider::create(this, frontendApiObject, items);
- ContextMenuController* menuController = m_frontendPage->contextMenuController();
- menuController->showContextMenu(event, menuProvider);
+ m_frontendPage->contextMenuController().showContextMenu(event, menuProvider);
m_menuProvider = menuProvider.get();
}
#endif
Modified: trunk/Source/WebCore/page/Page.h (154238 => 154239)
--- trunk/Source/WebCore/page/Page.h 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebCore/page/Page.h 2013-08-17 19:46:45 UTC (rev 154239)
@@ -191,7 +191,7 @@
#endif
FocusController& focusController() const { return *m_focusController; }
#if ENABLE(CONTEXT_MENUS)
- ContextMenuController* contextMenuController() const { return m_contextMenuController.get(); }
+ ContextMenuController& contextMenuController() const { return *m_contextMenuController; }
#endif
#if ENABLE(INSPECTOR)
InspectorController* inspectorController() const { return m_inspectorController.get(); }
@@ -447,7 +447,7 @@
#endif
const OwnPtr<FocusController> m_focusController;
#if ENABLE(CONTEXT_MENUS)
- OwnPtr<ContextMenuController> m_contextMenuController;
+ const OwnPtr<ContextMenuController> m_contextMenuController;
#endif
#if ENABLE(INSPECTOR)
OwnPtr<InspectorController> m_inspectorController;
Modified: trunk/Source/WebKit/efl/ewk/ewk_view.cpp (154238 => 154239)
--- trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -1600,7 +1600,7 @@
EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
Eina_Bool mouse_press_handled = false;
- priv->page->contextMenuController()->clearContextMenu();
+ priv->page->contextMenuController().clearContextMenu();
if (priv->contextMenu)
ewk_context_menu_free(priv->contextMenu);
@@ -1619,14 +1619,14 @@
return false;
WebCore::ContextMenu* coreMenu =
- priv->page->contextMenuController()->contextMenu();
+ priv->page->contextMenuController().contextMenu();
if (!coreMenu) {
// WebCore decided not to create a context menu, return true if event
// was handled by handleMouseReleaseEvent
return mouse_press_handled;
}
- priv->contextMenu = ewk_context_menu_new(ewkView, priv->page->contextMenuController(), coreMenu);
+ priv->contextMenu = ewk_context_menu_new(ewkView, &priv->page->contextMenuController(), coreMenu);
if (!priv->contextMenu)
return false;
Modified: trunk/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp (154238 => 154239)
--- trunk/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -95,7 +95,7 @@
GtkMenu* gtkmenu = menu->releasePlatformDescription();
WebKitWebView* webView = m_webView;
- HitTestResult result = core(webView)->contextMenuController()->hitTestResult();
+ HitTestResult result = core(webView)->contextMenuController().hitTestResult();
if (result.isContentEditable()) {
GtkWidget* imContextMenu = inputMethodsMenuItem(webView);
Modified: trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp (154238 => 154239)
--- trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -345,7 +345,7 @@
static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webView, const PlatformMouseEvent& event, bool triggeredWithKeyboard)
{
Page* page = core(webView);
- page->contextMenuController()->clearContextMenu();
+ page->contextMenuController().clearContextMenu();
Frame* focusedFrame;
Frame* mainFrame = page->mainFrame();
gboolean mousePressEventResult = FALSE;
@@ -381,8 +381,7 @@
// If coreMenu is NULL, this means WebCore decided to not create
// the default context menu; this may happen when the page is
// handling the right-click for reasons other than the context menu.
- ContextMenuController* controller = page->contextMenuController();
- ContextMenu* coreMenu = controller->contextMenu();
+ ContextMenu* coreMenu = page->contextMenuController().contextMenu();
if (!coreMenu)
return mousePressEventResult;
@@ -391,7 +390,7 @@
// We connect the "activate" signal here rather than in ContextMenuGtk to avoid
// a layering violation. ContextMenuGtk should not know about the ContextMenuController.
- gtk_container_foreach(GTK_CONTAINER(defaultMenu), reinterpret_cast<GtkCallback>(contextMenuConnectActivate), controller);
+ gtk_container_foreach(GTK_CONTAINER(defaultMenu), reinterpret_cast<GtkCallback>(contextMenuConnectActivate), &page->contextMenuController());
if (!hitTestResult) {
MouseEventWithHitTestResults mev = prepareMouseEventForFrame(focusedFrame, event);
@@ -5424,7 +5423,7 @@
g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
#if ENABLE(CONTEXT_MENUS)
- ContextMenu* menu = core(webView)->contextMenuController()->contextMenu();
+ ContextMenu* menu = core(webView)->contextMenuController().contextMenu();
if (!menu)
return 0;
return menu->platformDescription();
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm (154238 => 154239)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm 2013-08-17 19:46:45 UTC (rev 154239)
@@ -272,7 +272,7 @@
if (![delegate respondsToSelector:selector])
return defaultMenu->platformDescription();
- NSDictionary *element = [[[WebElementDictionary alloc] initWithHitTestResult:[m_webView page]->contextMenuController()->hitTestResult()] autorelease];
+ NSDictionary *element = [[[WebElementDictionary alloc] initWithHitTestResult:[m_webView page]->contextMenuController().hitTestResult()] autorelease];
BOOL preVersion3Client = isPreVersion3Client();
if (preVersion3Client) {
@@ -302,7 +302,7 @@
id delegate = [m_webView UIDelegate];
SEL selector = @selector(webView:contextMenuItemSelected:forElement:);
if ([delegate respondsToSelector:selector]) {
- NSDictionary *element = [[WebElementDictionary alloc] initWithHitTestResult:[m_webView page]->contextMenuController()->hitTestResult()];
+ NSDictionary *element = [[WebElementDictionary alloc] initWithHitTestResult:[m_webView page]->contextMenuController().hitTestResult()];
NSMenuItem *platformItem = item->releasePlatformDescription();
CallUIDelegate(m_webView, selector, platformItem, element);
@@ -355,15 +355,14 @@
Page* page = [m_webView page];
if (!page)
return;
- ContextMenuController* controller = page->contextMenuController();
- Frame* frame = controller->hitTestResult().innerNodeFrame();
+ Frame* frame = page->contextMenuController().hitTestResult().innerNodeFrame();
if (!frame)
return;
FrameView* frameView = frame->view();
if (!frameView)
return;
- IntPoint point = frameView->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame());
+ IntPoint point = frameView->contentsToWindow(page->contextMenuController().hitTestResult().roundedPointInInnerNodeFrame());
NSView* view = frameView->documentView();
NSPoint nsScreenPoint = [view convertPoint:point toView:nil];
// Show the contextual menu for this event.
Modified: trunk/Source/WebKit/mac/WebView/WebHTMLView.mm (154238 => 154239)
--- trunk/Source/WebKit/mac/WebView/WebHTMLView.mm 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLView.mm 2013-08-17 19:46:45 UTC (rev 154239)
@@ -3111,7 +3111,7 @@
// Match behavior of other browsers by sending a mousedown event for right clicks.
_private->handlingMouseDownEvent = YES;
- page->contextMenuController()->clearContextMenu();
+ page->contextMenuController().clearContextMenu();
coreFrame->eventHandler().mouseDown(event);
BOOL handledEvent = coreFrame->eventHandler().sendContextMenuEvent(PlatformEventFactory::createPlatformMouseEvent(event, page->chrome().platformPageClient()));
_private->handlingMouseDownEvent = NO;
@@ -3124,7 +3124,7 @@
if (!page)
return nil;
- ContextMenu* coreMenu = page->contextMenuController()->contextMenu();
+ ContextMenu* coreMenu = page->contextMenuController().contextMenu();
if (!coreMenu)
return nil;
@@ -3141,7 +3141,7 @@
[menu addItem:[menuItems objectAtIndex:i]];
setMenuTargets(menu);
- [[WebMenuTarget sharedMenuTarget] setMenuController:page->contextMenuController()];
+ [[WebMenuTarget sharedMenuTarget] setMenuController:&page->contextMenuController()];
return menu;
}
Modified: trunk/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp (154238 => 154239)
--- trunk/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -875,7 +875,7 @@
description.type = MenuItem::Action;
description.action = ""
ContextMenuItem it(item);
- page->contextMenuController()->checkOrEnableIfNeeded(it);
+ page->contextMenuController().checkOrEnableIfNeeded(it);
if (it.enabled())
description.traits |= MenuItem::Enabled;
if (item.type() == WebCore::CheckableActionType) {
@@ -909,14 +909,14 @@
ASSERT(visitedWebActions);
WebCore::Frame* focusedFrame = page->focusController().focusedOrMainFrame();
HitTestResult result = focusedFrame->eventHandler().hitTestResultAtPoint(focusedFrame->view()->windowToContents(pos));
- page->contextMenuController()->setHitTestResult(result);
+ page->contextMenuController().setHitTestResult(result);
#if ENABLE(INSPECTOR)
if (page->inspectorController()->enabled())
- page->contextMenuController()->addInspectElementItem();
+ page->contextMenuController().addInspectElementItem();
#endif
- WebCore::ContextMenu* webcoreMenu = page->contextMenuController()->contextMenu();
+ WebCore::ContextMenu* webcoreMenu = page->contextMenuController().contextMenu();
QList<MenuItem> itemDescriptions;
if (client && webcoreMenu)
itemDescriptions = descriptionForPlatformMenu(webcoreMenu->items(), page);
@@ -1423,7 +1423,7 @@
ASSERT(int(QWebPageAdapter::ScrollByLine) == int(WebCore::ScrollByLine));
ASSERT(int(QWebPageAdapter::ScrollByDocument) == int(WebCore::ScrollByDocument));
- page->contextMenuController()->clearContextMenu();
+ page->contextMenuController().clearContextMenu();
if (webFrame) {
Frame* frame = webFrame->frame;
@@ -1451,7 +1451,7 @@
WebCore::Frame* focusedFrame = page->focusController().focusedOrMainFrame();
focusedFrame->eventHandler().sendContextMenuEvent(convertMouseEvent(event, 1));
- ContextMenu* menu = page->contextMenuController()->contextMenu();
+ ContextMenu* menu = page->contextMenuController().contextMenu();
// If the website defines its own handler then sendContextMenuEvent takes care of
// calling/showing it and the context menu pointer will be zero. This is the case
// on maps.google.com for example.
Modified: trunk/Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp (154238 => 154239)
--- trunk/Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -66,7 +66,7 @@
HMENU nativeMenu = menu->platformContextMenu();
COMPtr<WebElementPropertyBag> propertyBag;
- propertyBag.adoptRef(WebElementPropertyBag::createInstance(m_webView->page()->contextMenuController()->hitTestResult()));
+ propertyBag.adoptRef(WebElementPropertyBag::createInstance(m_webView->page()->contextMenuController().hitTestResult()));
// FIXME: We need to decide whether to do the default before calling this delegate method
if (FAILED(uiDelegate->contextMenuItemsForElement(m_webView, propertyBag.get(), (OLE_HANDLE)(ULONG64)nativeMenu, (OLE_HANDLE*)&nativeMenu))) {
::DestroyMenu(nativeMenu);
@@ -90,7 +90,7 @@
ASSERT(uiDelegate);
COMPtr<WebElementPropertyBag> propertyBag;
- propertyBag.adoptRef(WebElementPropertyBag::createInstance(m_webView->page()->contextMenuController()->hitTestResult()));
+ propertyBag.adoptRef(WebElementPropertyBag::createInstance(m_webView->page()->contextMenuController().hitTestResult()));
// This call would leak the MENUITEMINFO's subMenu if it had one, but on Windows, subMenus can't be selected, so there is
// no way we would get to this point. Also, it can't be a separator, because separators cannot be selected.
Modified: trunk/Source/WebKit/win/WebView.cpp (154238 => 154239)
--- trunk/Source/WebKit/win/WebView.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit/win/WebView.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -1334,7 +1334,7 @@
// through the DOM so that we can detect if we create a new menu for this event, since we
// won't create a new menu if the DOM swallows the event and the defaultEventHandler does
// not run.
- m_page->contextMenuController()->clearContextMenu();
+ m_page->contextMenuController().clearContextMenu();
Frame* focusedFrame = m_page->focusController().focusedOrMainFrame();
return focusedFrame->eventHandler().sendContextMenuEventForKey();
@@ -1346,7 +1346,7 @@
lParam = MAKELPARAM(coords.x, coords.y);
- m_page->contextMenuController()->clearContextMenu();
+ m_page->contextMenuController().clearContextMenu();
IntPoint documentPoint(m_page->mainFrame()->view()->windowToContents(coords));
HitTestResult result = m_page->mainFrame()->eventHandler().hitTestResultAtPoint(documentPoint);
@@ -1358,14 +1358,14 @@
if (!handledEvent)
return false;
- ContextMenuController* contextMenuController = m_page->contextMenuController();
+ ContextMenuController& contextMenuController = m_page->contextMenuController();
// Show the menu
- ContextMenu* coreMenu = contextMenuController->contextMenu();
+ ContextMenu* coreMenu = contextMenuController.contextMenu();
if (!coreMenu)
return false;
- Frame* frame = contextMenuController->hitTestResult().innerNodeFrame();
+ Frame* frame = contextMenuController.hitTestResult().innerNodeFrame();
if (!frame)
return false;
@@ -1373,7 +1373,7 @@
if (!view)
return false;
- POINT point(view->contentsToWindow(contextMenuController->hitTestResult().roundedPointInInnerNodeFrame()));
+ POINT point(view->contentsToWindow(contextMenuController.hitTestResult().roundedPointInInnerNodeFrame()));
// Translate the point to screen coordinates
if (!::ClientToScreen(m_viewWindow, &point))
@@ -1461,13 +1461,13 @@
void WebView::performContextMenuAction(WPARAM wParam, LPARAM lParam, bool byPosition)
{
- ContextMenu* menu = m_page->contextMenuController()->contextMenu();
+ ContextMenu* menu = m_page->contextMenuController().contextMenu();
ASSERT(menu);
ContextMenuItem* item = byPosition ? menu->itemAtIndex((unsigned)wParam) : menu->itemWithAction((ContextMenuAction)wParam);
if (!item)
return;
- m_page->contextMenuController()->contextMenuItemSelected(item);
+ m_page->contextMenuController().contextMenuItemSelected(item);
}
bool WebView::handleMouseEvent(UINT message, WPARAM wParam, LPARAM lParam)
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp (154238 => 154239)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -52,13 +52,11 @@
void WebContextMenu::show()
{
- ContextMenuController* controller = m_page->corePage()->contextMenuController();
- if (!controller)
- return;
- ContextMenu* menu = controller->contextMenu();
+ ContextMenuController& controller = m_page->corePage()->contextMenuController();
+ ContextMenu* menu = controller.contextMenu();
if (!menu)
return;
- Frame* frame = controller->hitTestResult().innerNodeFrame();
+ Frame* frame = controller.hitTestResult().innerNodeFrame();
if (!frame)
return;
FrameView* view = frame->view();
@@ -68,26 +66,24 @@
Vector<WebContextMenuItemData> menuItems;
RefPtr<APIObject> userData;
menuItemsWithUserData(menuItems, userData);
- WebHitTestResult::Data webHitTestResultData(controller->hitTestResult());
+ WebHitTestResult::Data webHitTestResultData(controller.hitTestResult());
// Mark the WebPage has having a shown context menu then notify the UIProcess.
m_page->contextMenuShowing();
- m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, menuItems, InjectedBundleUserMessageEncoder(userData.get())));
+ m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller.hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, menuItems, InjectedBundleUserMessageEncoder(userData.get())));
}
void WebContextMenu::itemSelected(const WebContextMenuItemData& item)
{
ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title());
- m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem);
+ m_page->corePage()->contextMenuController().contextMenuItemSelected(&coreItem);
}
void WebContextMenu::menuItemsWithUserData(Vector<WebContextMenuItemData> &menuItems, RefPtr<APIObject>& userData) const
{
- ContextMenuController* controller = m_page->corePage()->contextMenuController();
- if (!controller)
- return;
+ ContextMenuController& controller = m_page->corePage()->contextMenuController();
- ContextMenu* menu = controller->contextMenu();
+ ContextMenu* menu = controller.contextMenu();
if (!menu)
return;
@@ -99,7 +95,7 @@
#endif
Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu);
Vector<WebContextMenuItemData> newMenu;
- RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult());
+ RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller.hitTestResult());
if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData))
proposedMenu = newMenu;
menuItems = proposedMenu;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (154238 => 154239)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2013-08-17 18:05:04 UTC (rev 154238)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2013-08-17 19:46:45 UTC (rev 154239)
@@ -1560,7 +1560,7 @@
WebContextMenu* WebPage::contextMenuAtPointInWindow(const IntPoint& point)
{
- corePage()->contextMenuController()->clearContextMenu();
+ corePage()->contextMenuController().clearContextMenu();
// Simulate a mouse click to generate the correct menu.
PlatformMouseEvent mouseEvent(point, point, RightButton, PlatformEvent::MousePressed, 1, false, false, false, false, currentTime());
@@ -1645,7 +1645,7 @@
case PlatformEvent::MousePressed: {
#if ENABLE(CONTEXT_MENUS)
if (isContextClick(platformMouseEvent))
- page->corePage()->contextMenuController()->clearContextMenu();
+ page->corePage()->contextMenuController().clearContextMenu();
#endif
bool handled = frame->eventHandler().handleMousePressEvent(platformMouseEvent);