Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(911)

Unified Diff: components/renderer_context_menu/render_view_context_menu_base.h

Issue 432003007: Separate chrome independent part from RVContextMenu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: exclude android webview Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/renderer_context_menu/render_view_context_menu_base.h
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.h b/components/renderer_context_menu/render_view_context_menu_base.h
similarity index 52%
copy from chrome/browser/renderer_context_menu/render_view_context_menu.h
copy to components/renderer_context_menu/render_view_context_menu_base.h
index 5b5932eedbe389723dccce7742d091b2821454c6..9d4ac636c0fc38bc8f855d37c2f6ae7ae8604ed3 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.h
+++ b/components/renderer_context_menu/render_view_context_menu_base.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_H_
-#define CHROME_BROWSER_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_H_
+#ifndef COMPONENTS_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_BASE_H_
+#define COMPONENTS_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_BASE_H_
#include <map>
#include <string>
@@ -11,9 +11,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
#include "base/strings/string16.h"
-#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
-#include "chrome/browser/extensions/context_menu_matcher.h"
-#include "chrome/browser/extensions/menu_manager.h"
#include "components/renderer_context_menu/context_menu_content_type.h"
#include "components/renderer_context_menu/render_view_context_menu_observer.h"
#include "components/renderer_context_menu/render_view_context_menu_proxy.h"
@@ -22,21 +19,11 @@
#include "ui/base/models/simple_menu_model.h"
#include "ui/base/window_open_disposition.h"
-class PrintPreviewContextMenuObserver;
-class Profile;
-class SpellingMenuObserver;
-class SpellCheckerSubMenuObserver;
-
namespace content {
class RenderFrameHost;
class WebContents;
}
-namespace extensions {
-class Extension;
-class MenuItem;
-}
-
namespace gfx {
class Point;
}
@@ -46,8 +33,8 @@ struct WebMediaPlayerAction;
struct WebPluginAction;
}
-class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
- public RenderViewContextMenuProxy {
+class RenderViewContextMenuBase : public ui::SimpleMenuModel::Delegate,
+ public RenderViewContextMenuProxy {
public:
// A delegate interface to communicate with the toolkit used by
// the embedder.
@@ -68,6 +55,8 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
static const size_t kMaxSelectionTextLength;
+ static void SetContentCustomCommandIdRange(int first, int last);
+
// Convert a command ID so that it fits within the range for
// content context menu.
static int ConvertToContentCustomCommandId(int id);
@@ -75,10 +64,10 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
// True if the given id is the one generated for content context menu.
static bool IsContentCustomCommandId(int id);
- RenderViewContextMenu(content::RenderFrameHost* render_frame_host,
- const content::ContextMenuParams& params);
+ RenderViewContextMenuBase(content::RenderFrameHost* render_frame_host,
+ const content::ContextMenuParams& params);
- virtual ~RenderViewContextMenu();
+ virtual ~RenderViewContextMenuBase();
// Initializes the context menu.
void Init();
@@ -114,6 +103,13 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
virtual content::BrowserContext* GetBrowserContext() const OVERRIDE;
protected:
+ friend class RenderViewContextMenuTest;
+ friend class RenderViewContextMenuPrefsTest;
+
+ void set_content_type(ContextMenuContentType* content_type) {
+ content_type_.reset(content_type);
+ }
+
void set_toolkit_delegate(scoped_ptr<ToolkitDelegate> delegate) {
toolkit_delegate_ = delegate.Pass();
}
@@ -122,114 +118,49 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
return toolkit_delegate_.get();
}
- void InitMenu();
- Profile* GetProfile();
+ // TODO(oshima): Make these methods delegate.
+
+ // Menu Construction.
+ virtual void InitMenu();
- // Platform specific functions.
+ // Increments histogram value for used items specified by |id|.
+ virtual void RecordUsedItem(int id) = 0;
+
+ // Increments histogram value for visible context menu item specified by |id|.
+ virtual void RecordShownItem(int id) = 0;
+
+#if defined(ENABLE_PLUGINS)
+ virtual void HandleAuthorizeAllPlugins() = 0;
+#endif
+
+ // Returns the accelerator for given |command_id|.
virtual bool GetAcceleratorForCommandId(
int command_id,
ui::Accelerator* accelerator) = 0;
- virtual void AppendPlatformEditableItems();
- content::ContextMenuParams params_;
- content::WebContents* source_web_contents_;
- // The RenderFrameHost's IDs.
- int render_process_id_;
- int render_frame_id_;
- content::BrowserContext* browser_context_;
+ // Subclasses should send notification.
+ virtual void NotifyMenuShown() = 0;
+ virtual void NotifyURLOpened(const GURL& url,
+ content::WebContents* new_contents) = 0;
- ui::SimpleMenuModel menu_model_;
- extensions::ContextMenuMatcher extension_items_;
+ // TODO(oshima): Remove this.
+ virtual void AppendPlatformEditableItems() {}
- private:
- friend class RenderViewContextMenuTest;
- friend class RenderViewContextMenuPrefsTest;
+ content::RenderFrameHost* GetRenderFrameHost();
- static bool IsDevToolsURL(const GURL& url);
- static bool IsInternalResourcesURL(const GURL& url);
- static bool ExtensionContextAndPatternMatch(
- const content::ContextMenuParams& params,
- extensions::MenuItem::ContextList contexts,
- const extensions::URLPatternSet& target_url_patterns);
- static bool MenuItemMatchesParams(const content::ContextMenuParams& params,
- const extensions::MenuItem* item);
-
- // Gets the extension (if any) associated with the WebContents that we're in.
- const extensions::Extension* GetExtension() const;
- bool AppendCustomItems();
-
- void AppendDeveloperItems();
- void AppendDevtoolsForUnpackedExtensions();
- void AppendLinkItems();
- void AppendImageItems();
- void AppendAudioItems();
- void AppendCanvasItems();
- void AppendVideoItems();
- void AppendMediaItems();
- void AppendPluginItems();
- void AppendPageItems();
- void AppendFrameItems();
- void AppendCopyItem();
- void AppendPrintItem();
- void AppendEditableItems();
- void AppendSearchProvider();
- void AppendAllExtensionItems();
- void AppendCurrentExtensionItems();
- void AppendPrintPreviewItems();
- void AppendSearchWebForImageItems();
- void AppendSpellingSuggestionsSubMenu();
- void AppendSpellcheckOptionsSubMenu();
- void AppendProtocolHandlerSubMenu();
+ bool IsCustomItemChecked(int id) const;
+ bool IsCustomItemEnabled(int id) const;
// Opens the specified URL string in a new tab.
void OpenURL(const GURL& url, const GURL& referrer,
WindowOpenDisposition disposition,
content::PageTransition transition);
- // Copy to the clipboard an image located at a point in the RenderView
- void CopyImageAt(int x, int y);
-
- // Get an image located at a point in the RenderView for search.
- void GetImageThumbnailForSearch();
-
- // Launch the inspector targeting a point in the RenderView
- void Inspect(int x, int y);
-
- // Writes the specified text/url to the system clipboard
- void WriteURLToClipboard(const GURL& url);
-
- void MediaPlayerActionAt(const gfx::Point& location,
- const blink::WebMediaPlayerAction& action);
- void PluginActionAt(const gfx::Point& location,
- const blink::WebPluginAction& action);
-
- bool IsDevCommandEnabled(int id) const;
-
- // Returns a list of registered ProtocolHandlers that can handle the clicked
- // on URL.
- ProtocolHandlerRegistry::ProtocolHandlerList GetHandlersForLinkUrl();
-
- // Returns a (possibly truncated) version of the current selection text
- // suitable or putting in the title of a menu item.
- base::string16 PrintableSelectionText();
-
- // The destination URL to use if the user tries to search for or navigate to
- // a text selection.
- GURL selection_navigation_url_;
-
- ui::SimpleMenuModel protocol_handler_submenu_model_;
- ProtocolHandlerRegistry* protocol_handler_registry_;
-
- // An observer that handles spelling-menu items.
- scoped_ptr<SpellingMenuObserver> spelling_menu_observer_;
-
- // An observer that handles a 'spell-checker options' submenu.
- scoped_ptr<SpellCheckerSubMenuObserver> spellchecker_submenu_observer_;
+ content::ContextMenuParams params_;
+ content::WebContents* source_web_contents_;
+ content::BrowserContext* browser_context_;
-#if defined(ENABLE_FULL_PRINTING)
- // An observer that disables menu items when print preview is active.
- scoped_ptr<PrintPreviewContextMenuObserver> print_preview_menu_observer_;
-#endif
+ ui::SimpleMenuModel menu_model_;
// Our observers.
mutable ObserverList<RenderViewContextMenuObserver> observers_;
@@ -240,9 +171,16 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
scoped_ptr<ContextMenuContentType> content_type_;
+ private:
+ bool AppendCustomItems();
+
+ // The RenderFrameHost's IDs.
+ int render_process_id_;
+ int render_frame_id_;
+
scoped_ptr<ToolkitDelegate> toolkit_delegate_;
- DISALLOW_COPY_AND_ASSIGN(RenderViewContextMenu);
+ DISALLOW_COPY_AND_ASSIGN(RenderViewContextMenuBase);
};
-#endif // CHROME_BROWSER_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_H_
+#endif // COMPONENTS_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_BASE_H_
« no previous file with comments | « components/renderer_context_menu.gypi ('k') | components/renderer_context_menu/render_view_context_menu_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698