| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9c3d9f58c13bbaa4436184cdab4624aee1840886
|
| --- /dev/null
|
| +++ b/athena/content/render_view_context_menu_impl.cc
|
| @@ -0,0 +1,140 @@
|
| +// 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 "base/strings/utf_string_conversions.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/web_contents.h"
|
| +#include "ui/views/controls/menu/menu_item_view.h"
|
| +#include "ui/views/controls/menu/menu_model_adapter.h"
|
| +#include "ui/views/controls/menu/menu_runner.h"
|
| +
|
| +namespace athena {
|
| +namespace {
|
| +
|
| +enum {
|
| + CMD_BACK,
|
| + CMD_FORWARD,
|
| + CMD_RELOAD,
|
| + CMD_VIEW_SOURCE,
|
| + CMD_LAST,
|
| +};
|
| +
|
| +// Max number of custom command ids allowd.
|
| +const int kNumCustomCommandIds = 1000;
|
| +
|
| +void AppendPageItems(ui::SimpleMenuModel* menu_model) {
|
| + menu_model->AddItem(CMD_BACK, base::ASCIIToUTF16("Back"));
|
| + menu_model->AddItem(CMD_FORWARD, base::ASCIIToUTF16("Forward"));
|
| + menu_model->AddItem(CMD_RELOAD, base::ASCIIToUTF16("Reload"));
|
| + menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
|
| + menu_model->AddItem(CMD_VIEW_SOURCE, base::ASCIIToUTF16("View Source"));
|
| +}
|
| +
|
| +} // 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::InitMenu() {
|
| + RenderViewContextMenuBase::InitMenu();
|
| +
|
| + if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PAGE)) {
|
| + AppendPageItems(&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 {
|
| + if (RenderViewContextMenuBase::IsCommandIdEnabled(command_id))
|
| + return true;
|
| + switch (command_id) {
|
| + 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();
|
| + }
|
| + 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) {
|
| + 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;
|
| + }
|
| +}
|
| +
|
| +} // namespace athena
|
|
|