| Index: athena/content/render_view_context_menu_impl.cc
|
| diff --git a/athena/content/render_view_context_menu_impl.cc b/athena/content/render_view_context_menu_impl.cc
|
| deleted file mode 100644
|
| index 22e75cd76aebde882565747e178db41d3efacfb1..0000000000000000000000000000000000000000
|
| --- a/athena/content/render_view_context_menu_impl.cc
|
| +++ /dev/null
|
| @@ -1,332 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "athena/content/render_view_context_menu_impl.h"
|
| -
|
| -#include "athena/strings/grit/athena_strings.h"
|
| -#include "components/renderer_context_menu/context_menu_content_type.h"
|
| -#include "components/renderer_context_menu/views/toolkit_delegate_views.h"
|
| -#include "content/public/browser/browser_context.h"
|
| -#include "content/public/browser/render_widget_host_view.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "third_party/WebKit/public/web/WebContextMenuData.h"
|
| -#include "ui/aura/client/screen_position_client.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/views/widget/widget.h"
|
| -
|
| -namespace athena {
|
| -using blink::WebContextMenuData;
|
| -
|
| -namespace {
|
| -
|
| -enum {
|
| - // Nativation
|
| - CMD_BACK = 0,
|
| - CMD_FORWARD,
|
| - CMD_RELOAD,
|
| - CMD_VIEW_SOURCE,
|
| -
|
| - // Link
|
| - CMD_OPEN_LINK_NEW_ACTIVITY,
|
| -
|
| - // Edit
|
| - CMD_UNDO,
|
| - CMD_REDO,
|
| - CMD_CUT,
|
| - CMD_COPY,
|
| - CMD_PASTE,
|
| - CMD_PASTE_AND_MATCH_STYLE,
|
| - CMD_DELETE,
|
| - CMD_SELECT_ALL,
|
| - CMD_LAST,
|
| -};
|
| -
|
| -// Max number of custom command ids allowd.
|
| -const int kNumCustomCommandIds = 1000;
|
| -
|
| -// TODO(oshima): Move IDS for context menus to components/renderer_context_menu
|
| -// and replace hardcoded strings below.
|
| -void AppendPageItems(ui::SimpleMenuModel* menu_model) {
|
| - menu_model->AddItem(CMD_BACK,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_BACK));
|
| - menu_model->AddItem(CMD_FORWARD,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_FORWARD));
|
| - menu_model->AddItem(CMD_RELOAD,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_RELOAD));
|
| - menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
|
| - menu_model->AddItem(
|
| - CMD_VIEW_SOURCE,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_VIEWPAGESOURCE));
|
| -}
|
| -
|
| -void AppendLinkItems(const content::ContextMenuParams& params,
|
| - ui::SimpleMenuModel* menu_model) {
|
| - if (!params.link_url.is_empty())
|
| - menu_model->AddItem(
|
| - CMD_OPEN_LINK_NEW_ACTIVITY,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_OPENLINKNEWACTIVITY));
|
| -}
|
| -
|
| -void AppendEditableItems(ui::SimpleMenuModel* menu_model) {
|
| - menu_model->AddItem(CMD_UNDO,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_UNDO));
|
| - menu_model->AddItem(CMD_REDO,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_REDO));
|
| - menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
|
| - menu_model->AddItem(CMD_CUT,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_CUT));
|
| - menu_model->AddItem(CMD_COPY,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_COPY));
|
| - menu_model->AddItem(CMD_PASTE,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_PASTE));
|
| - menu_model->AddItem(
|
| - CMD_PASTE_AND_MATCH_STYLE,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_PASTE_AND_MATCH_STYLE));
|
| - menu_model->AddItem(CMD_DELETE,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_DELETE));
|
| - menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
|
| - menu_model->AddItem(CMD_SELECT_ALL,
|
| - l10n_util::GetStringUTF16(IDS_ATHENA_CONTEXT_SELECTALL));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -RenderViewContextMenuImpl::RenderViewContextMenuImpl(
|
| - content::RenderFrameHost* render_frame_host,
|
| - const content::ContextMenuParams& params)
|
| - : RenderViewContextMenuBase(render_frame_host, params) {
|
| - SetContentCustomCommandIdRange(CMD_LAST, CMD_LAST + kNumCustomCommandIds);
|
| - // TODO(oshima): Support other types
|
| - set_content_type(
|
| - new ContextMenuContentType(source_web_contents_, params, true));
|
| - set_toolkit_delegate(scoped_ptr<ToolkitDelegate>(new ToolkitDelegateViews));
|
| -}
|
| -
|
| -RenderViewContextMenuImpl::~RenderViewContextMenuImpl() {
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::RunMenuAt(views::Widget* parent,
|
| - const gfx::Point& point,
|
| - ui::MenuSourceType type) {
|
| - static_cast<ToolkitDelegateViews*>(toolkit_delegate())
|
| - ->RunMenuAt(parent, point, type);
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::Show() {
|
| - // 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;
|
| -
|
| - // Don't show empty menus.
|
| - if (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());
|
| - RunMenuAt(top_level_widget, screen_point, params().source_type);
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::InitMenu() {
|
| - RenderViewContextMenuBase::InitMenu();
|
| - bool needs_separator = false;
|
| - if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PAGE)) {
|
| - AppendPageItems(&menu_model_);
|
| - needs_separator = true;
|
| - }
|
| -
|
| - if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_LINK)) {
|
| - if (needs_separator)
|
| - AddSeparator();
|
| - AppendLinkItems(params_, &menu_model_);
|
| - needs_separator = true;
|
| - }
|
| -
|
| - if (content_type_->SupportsGroup(
|
| - ContextMenuContentType::ITEM_GROUP_EDITABLE)) {
|
| - if (needs_separator)
|
| - AddSeparator();
|
| - AppendEditableItems(&menu_model_);
|
| - }
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::RecordShownItem(int id) {
|
| - // TODO(oshima): Imelement UMA stats. crbug.com/401673
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::RecordUsedItem(int id) {
|
| - // TODO(oshima): Imelement UMA stats. crbug.com/401673
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -#if defined(ENABLE_PLUGINS)
|
| -void RenderViewContextMenuImpl::HandleAuthorizeAllPlugins() {
|
| -}
|
| -#endif
|
| -
|
| -void RenderViewContextMenuImpl::NotifyMenuShown() {
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::NotifyURLOpened(
|
| - const GURL& url,
|
| - content::WebContents* new_contents) {
|
| -}
|
| -
|
| -bool RenderViewContextMenuImpl::GetAcceleratorForCommandId(
|
| - int command_id,
|
| - ui::Accelerator* accelerator) {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -bool RenderViewContextMenuImpl::IsCommandIdChecked(int command_id) const {
|
| - return false;
|
| -}
|
| -
|
| -bool RenderViewContextMenuImpl::IsCommandIdEnabled(int command_id) const {
|
| - {
|
| - bool enabled = false;
|
| - if (RenderViewContextMenuBase::IsCommandIdKnown(command_id, &enabled))
|
| - return enabled;
|
| - }
|
| - switch (command_id) {
|
| - // Navigation
|
| - case CMD_BACK:
|
| - return source_web_contents_->GetController().CanGoBack();
|
| - case CMD_FORWARD:
|
| - return source_web_contents_->GetController().CanGoForward();
|
| - case CMD_RELOAD:
|
| - return true;
|
| - case CMD_VIEW_SOURCE:
|
| - return source_web_contents_->GetController().CanViewSource();
|
| -
|
| - // Link
|
| - case CMD_OPEN_LINK_NEW_ACTIVITY:
|
| - return params_.link_url.is_valid();
|
| -
|
| - // Editable
|
| - case CMD_UNDO:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanUndo);
|
| -
|
| - case CMD_REDO:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanRedo);
|
| -
|
| - case CMD_CUT:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanCut);
|
| -
|
| - case CMD_COPY:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanCopy);
|
| -
|
| - case CMD_PASTE:
|
| - case CMD_PASTE_AND_MATCH_STYLE:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanPaste);
|
| -
|
| - case CMD_DELETE:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanDelete);
|
| -
|
| - case CMD_SELECT_ALL:
|
| - return !!(params_.edit_flags & WebContextMenuData::CanSelectAll);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -void RenderViewContextMenuImpl::ExecuteCommand(int command_id,
|
| - int event_flags) {
|
| - RenderViewContextMenuBase::ExecuteCommand(command_id, event_flags);
|
| - if (command_executed_)
|
| - return;
|
| - command_executed_ = true;
|
| - switch (command_id) {
|
| - // Navigation
|
| - case CMD_BACK:
|
| - source_web_contents_->GetController().GoBack();
|
| - break;
|
| - case CMD_FORWARD:
|
| - source_web_contents_->GetController().GoForward();
|
| - break;
|
| - case CMD_RELOAD:
|
| - source_web_contents_->GetController().Reload(true);
|
| - break;
|
| - case CMD_VIEW_SOURCE:
|
| - source_web_contents_->ViewSource();
|
| - break;
|
| -
|
| - // Link
|
| - case CMD_OPEN_LINK_NEW_ACTIVITY:
|
| - OpenURL(
|
| - params_.link_url,
|
| - params_.frame_url.is_empty() ? params_.page_url : params_.frame_url,
|
| - NEW_FOREGROUND_TAB,
|
| - ui::PAGE_TRANSITION_LINK);
|
| - break;
|
| -
|
| - // Editable
|
| - case CMD_UNDO:
|
| - source_web_contents_->Undo();
|
| - break;
|
| -
|
| - case CMD_REDO:
|
| - source_web_contents_->Redo();
|
| - break;
|
| -
|
| - case CMD_CUT:
|
| - source_web_contents_->Cut();
|
| - break;
|
| -
|
| - case CMD_COPY:
|
| - source_web_contents_->Copy();
|
| - break;
|
| -
|
| - case CMD_PASTE:
|
| - source_web_contents_->Paste();
|
| - break;
|
| -
|
| - case CMD_PASTE_AND_MATCH_STYLE:
|
| - source_web_contents_->PasteAndMatchStyle();
|
| - break;
|
| -
|
| - case CMD_DELETE:
|
| - source_web_contents_->Delete();
|
| - break;
|
| -
|
| - case CMD_SELECT_ALL:
|
| - source_web_contents_->SelectAll();
|
| - break;
|
| - }
|
| -}
|
| -
|
| -views::Widget* RenderViewContextMenuImpl::GetTopLevelWidget() {
|
| - return views::Widget::GetTopLevelWidgetForNativeView(GetActiveNativeView());
|
| -}
|
| -
|
| -aura::Window* RenderViewContextMenuImpl::GetActiveNativeView() {
|
| - content::WebContents* web_contents =
|
| - content::WebContents::FromRenderFrameHost(GetRenderFrameHost());
|
| - if (!web_contents) {
|
| - LOG(ERROR) << "RenderViewContextMenuImpl::Show, couldn't find WebContents";
|
| - return NULL;
|
| - }
|
| -
|
| - return web_contents->GetFullscreenRenderWidgetHostView()
|
| - ? web_contents->GetFullscreenRenderWidgetHostView()
|
| - ->GetNativeView()
|
| - : web_contents->GetNativeView();
|
| -}
|
| -
|
| -} // namespace athena
|
|
|