Index: chrome/browser/tab_contents/render_view_context_menu.h |
=================================================================== |
--- chrome/browser/tab_contents/render_view_context_menu.h (revision 42220) |
+++ chrome/browser/tab_contents/render_view_context_menu.h (working copy) |
@@ -1,15 +1,20 @@ |
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2010 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. |
#ifndef CHROME_BROWSER_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_H_ |
#define CHROME_BROWSER_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_H_ |
+#include <map> |
+#include <string> |
+#include <vector> |
+ |
#include "base/string16.h" |
#include "chrome/common/page_transition_types.h" |
#include "webkit/glue/context_menu.h" |
#include "webkit/glue/window_open_disposition.h" |
+class ExtensionMenuItem; |
class Profile; |
class TabContents; |
@@ -89,7 +94,29 @@ |
void AppendCopyItem(); |
void AppendEditableItems(); |
void AppendSearchProvider(); |
+ void AppendAllExtensionItems(); |
+ // When extensions have more than 1 top-level item or a single parent item |
+ // with children, we will start a sub menu. In the case of 1 parent with |
+ // children, we will remove the parent from |items| and insert the children |
+ // into it. The |index| parameter is incremented if we start a submenu. This |
+ // returns true if a submenu was started. If we had multiple top-level items |
+ // that needed to be pushed into a submenu, we'll use |extension_name| as the |
+ // title. |
+ bool MaybeStartExtensionSubMenu(const string16& selection_text, |
+ const std::string& extension_name, |
+ std::vector<const ExtensionMenuItem*>* items, |
+ int* index); |
+ |
+ // Fills in |items| with matching items for extension with |extension_id|. |
+ void GetItemsForExtension(const std::string& extension_id, |
+ std::vector<const ExtensionMenuItem*>* items); |
+ |
+ // This is a helper function to append items for one particular extension. |
+ // The |index| parameter is used for assigning id's, and is incremented for |
+ // each item actually added. |
+ void AppendExtensionItems(const std::string& extension_id, int* index); |
+ |
// Opens the specified URL string in a new tab. If |in_current_window| is |
// false, a new window is created to hold the new tab. |
void OpenURL(const GURL& url, |
@@ -110,10 +137,21 @@ |
bool IsDevCommandEnabled(int id) const; |
+ // Returns a (possibly truncated) version of the current selection text |
+ // suitable or putting in the title of a menu item. |
+ string16 PrintableSelectionText(); |
+ |
+ // Attempts to get an ExtensionMenuItem given the id of a context menu item. |
+ ExtensionMenuItem* GetExtensionMenuItem(int id) const; |
+ |
// The destination URL to use if the user tries to search for or navigate to |
// a text selection. |
GURL selection_navigation_url_; |
+ // Maps the id from a context menu item to the ExtensionMenuItem's internal |
+ // id. |
+ std::map<int, int> extension_item_map_; |
+ |
DISALLOW_COPY_AND_ASSIGN(RenderViewContextMenu); |
}; |