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

Unified Diff: chrome/browser/extensions/extension_menu_manager.h

Issue 2811049: Add ability to limit when context menu items appear with url patterns.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 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: chrome/browser/extensions/extension_menu_manager.h
===================================================================
--- chrome/browser/extensions/extension_menu_manager.h (revision 52866)
+++ chrome/browser/extensions/extension_menu_manager.h (working copy)
@@ -14,6 +14,7 @@
#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "chrome/browser/extensions/extension_icon_manager.h"
+#include "chrome/common/extensions/extension_extent.h"
#include "chrome/common/notification_observer.h"
#include "chrome/common/notification_registrar.h"
@@ -31,6 +32,10 @@
// A list of ExtensionMenuItem's.
typedef std::vector<ExtensionMenuItem*> List;
+ // An Id is a pair of |extension id|, |int| where the |int| is unique per
+ // extension.
+ typedef std::pair<std::string, int> Id;
+
// For context menus, these are the contexts where an item can appear.
enum Context {
ALL = 1,
@@ -82,10 +87,6 @@
uint32 value_; // A bitmask of Context values.
};
- // An Id is a pair of |extension id|, |int| where the |int| is unique per
- // extension.
- typedef std::pair<std::string, int> Id;
-
ExtensionMenuItem(const Id& id, std::string title, bool checked, Type type,
const ContextList& contexts);
virtual ~ExtensionMenuItem();
@@ -100,11 +101,23 @@
ContextList contexts() const { return contexts_; }
Type type() const { return type_; }
bool checked() const { return checked_; }
+ const ExtensionExtent& document_url_patterns() const {
+ return document_url_patterns_;
+ }
+ const ExtensionExtent& target_url_patterns() const {
+ return target_url_patterns_;
+ }
// Simple mutator methods.
void set_title(std::string new_title) { title_ = new_title; }
void set_contexts(ContextList contexts) { contexts_ = contexts; }
void set_type(Type type) { type_ = type; }
+ void set_document_url_patterns(const ExtensionExtent& patterns) {
+ document_url_patterns_ = patterns;
+ }
+ void set_target_url_patterns(const ExtensionExtent& patterns) {
+ target_url_patterns_ = patterns;
+ }
// Returns the title with any instances of %s replaced by |selection|.
string16 TitleWithReplacement(const string16& selection) const;
@@ -149,6 +162,14 @@
// this is a top-level item with no parent, this will be NULL.
scoped_ptr<Id> parent_id_;
+ // Patterns for restricting what documents this item will appear for. This
+ // applies to the frame where the click took place.
+ ExtensionExtent document_url_patterns_;
+
+ // Patterns for restricting where items appear based on the src/href
+ // attribute of IMAGE/AUDIO/VIDEO/LINK tags.
+ ExtensionExtent target_url_patterns_;
+
// Any children this item may have.
List children_;
@@ -158,6 +179,10 @@
// This class keeps track of menu items added by extensions.
class ExtensionMenuManager : public NotificationObserver {
public:
+ // A bitmask of values from URLPattern::SchemeMasks indicating the schemes
+ // of pages where we'll show extension menu items.
+ static const int kAllowedSchemes;
+
ExtensionMenuManager();
virtual ~ExtensionMenuManager();
@@ -214,6 +239,10 @@
virtual void Observe(NotificationType type, const NotificationSource& source,
const NotificationDetails& details);
+ // Returns true if |url| has an allowed scheme for extension context menu
+ // items. This checks against kAllowedSchemes.
+ static bool HasAllowedScheme(const GURL& url);
+
private:
// This is a helper function which takes care of de-selecting any other radio
// items in the same group (i.e. that are adjacent in the list).
« no previous file with comments | « chrome/browser/extensions/extension_context_menu_browsertest.cc ('k') | chrome/browser/extensions/extension_menu_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698