| Index: chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc
|
| diff --git a/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc b/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc
|
| index 55176d26af03b7028f217e46ffbe71a3c6690eab..c1b409daa98d59e4e209a65f00f4ddbaf4a93ef8 100644
|
| --- a/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc
|
| +++ b/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc
|
| @@ -112,10 +112,11 @@ void ChromeWebContentsViewDelegateViews::RestoreFocus() {
|
| }
|
| }
|
|
|
| -scoped_ptr<RenderViewContextMenu> ChromeWebContentsViewDelegateViews::BuildMenu(
|
| +scoped_ptr<RenderViewContextMenuBase>
|
| +ChromeWebContentsViewDelegateViews::BuildMenu(
|
| content::WebContents* web_contents,
|
| const content::ContextMenuParams& params) {
|
| - scoped_ptr<RenderViewContextMenu> menu;
|
| + scoped_ptr<RenderViewContextMenuBase> menu;
|
| content::RenderFrameHost* focused_frame = web_contents->GetFocusedFrame();
|
| // If the frame tree does not have a focused frame at this point, do not
|
| // bother creating RenderViewContextMenuViews.
|
| @@ -129,38 +130,12 @@ scoped_ptr<RenderViewContextMenu> ChromeWebContentsViewDelegateViews::BuildMenu(
|
| }
|
|
|
| void ChromeWebContentsViewDelegateViews::ShowMenu(
|
| - scoped_ptr<RenderViewContextMenu> menu) {
|
| - context_menu_.reset(static_cast<RenderViewContextMenuViews*>(menu.release()));
|
| - if (!context_menu_.get())
|
| + scoped_ptr<RenderViewContextMenuBase> menu) {
|
| + context_menu_ = menu.Pass();
|
| + if (!context_menu_)
|
| return;
|
|
|
| - // Menus need a Widget to work. If we're not the active tab we won't
|
| - // necessarily be in a widget.
|
| - views::Widget* top_level_widget = GetTopLevelWidget();
|
| - if (!top_level_widget)
|
| - return;
|
| -
|
| - const content::ContextMenuParams& params = context_menu_->params();
|
| - // Don't show empty menus.
|
| - if (context_menu_->menu_model().GetItemCount() == 0)
|
| - return;
|
| -
|
| - gfx::Point screen_point(params.x, params.y);
|
| -
|
| - // Convert from target window coordinates to root window coordinates.
|
| - aura::Window* target_window = GetActiveNativeView();
|
| - aura::Window* root_window = target_window->GetRootWindow();
|
| - aura::client::ScreenPositionClient* screen_position_client =
|
| - aura::client::GetScreenPositionClient(root_window);
|
| - if (screen_position_client) {
|
| - screen_position_client->ConvertPointToScreen(target_window,
|
| - &screen_point);
|
| - }
|
| - // Enable recursive tasks on the message loop so we can get updates while
|
| - // the context menu is being displayed.
|
| - base::MessageLoop::ScopedNestableTaskAllower allow(
|
| - base::MessageLoop::current());
|
| - context_menu_->RunMenuAt(top_level_widget, screen_point, params.source_type);
|
| + context_menu_->Show();
|
| }
|
|
|
| void ChromeWebContentsViewDelegateViews::ShowContextMenu(
|
|
|