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

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

Issue 10694085: Refactor extension event distribution to use Values instead of JSON strings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and review changes. Created 8 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_event_router.h
diff --git a/chrome/browser/extensions/extension_event_router.h b/chrome/browser/extensions/extension_event_router.h
index 4afc4a265f26dbb501029ad6d4d4d2483c84852c..1803b07a3b08030a141d03ff2410a330c39f2c67 100644
--- a/chrome/browser/extensions/extension_event_router.h
+++ b/chrome/browser/extensions/extension_event_router.h
@@ -50,22 +50,13 @@ class ExtensionEventRouter : public content::NotificationObserver,
USER_GESTURE_NOT_ENABLED = 2,
};
- // Sends an event via ipc_sender to the given extension. Can be called on
- // any thread.
+ // Sends an event via ipc_sender to the given extension. Can be called on any
+ // thread. Takes ownership of |event_args|, but can be safely invoked with
+ // NULL.
static void DispatchEvent(IPC::Sender* ipc_sender,
miket_OOO 2012/07/10 22:33:19 Great, makes more sense now. I'd like to see simil
const std::string& extension_id,
const std::string& event_name,
- const base::Value& event_args,
- const GURL& event_url,
- UserGestureState user_gesture,
- const extensions::EventFilteringInfo& info);
-
- // This invocation is deprecated. All future consumers of this API should be
- // sending Values as event arguments, using the above version.
- static void DispatchEvent(IPC::Sender* ipc_sender,
- const std::string& extension_id,
- const std::string& event_name,
- const std::string& event_args,
+ base::ListValue* event_args,
sky 2012/07/16 22:29:06 Did you consider making this take a const base::Li
const GURL& event_url,
UserGestureState user_gesture,
const extensions::EventFilteringInfo& info);
@@ -120,44 +111,39 @@ class ExtensionEventRouter : public content::NotificationObserver,
// profiles unless the extension has permission (e.g. incognito tab update ->
// normal profile only works if extension is allowed incognito access). If
// |event_url| is not empty, the event is only sent to extension with host
- // permissions for this url.
+ // permissions for this url. Takes ownership of |event_args|, but can be
+ // safely invoked with NULL.
void DispatchEventToRenderers(
const std::string& event_name,
- const std::string& event_args,
+ base::ListValue* event_args,
Profile* restrict_to_profile,
const GURL& event_url,
extensions::EventFilteringInfo info);
- // As above, but defaults |info| to EventFilteringInfo().
+ // As above, but defaults |info| to EventFilteringInfo(). Takes ownership of
+ // |event_args|, but can be safely invoked with NULL.
void DispatchEventToRenderers(
const std::string& event_name,
- const std::string& event_args,
+ base::ListValue* event_args,
Profile* restrict_to_profile,
const GURL& event_url);
- // Same as above, except only send the event to the given extension.
+ // Same as above, except only send the event to the given extension. Takes
+ // ownership of |event_args|, but can be safely invoked with NULL.
virtual void DispatchEventToExtension(
const std::string& extension_id,
const std::string& event_name,
- const base::Value& event_args,
+ base::ListValue* event_args,
Profile* restrict_to_profile,
const GURL& event_url);
- // This invocation is deprecated. The above variant which uses a Value for
- // event_args is to be used instead.
+ // Dispatch an event to particular extension. Also include an explicit user
+ // gesture indicator. Takes ownership of |event_args|, but can be safely
+ // invoked with NULL.
virtual void DispatchEventToExtension(
const std::string& extension_id,
const std::string& event_name,
- const std::string& event_args,
- Profile* restrict_to_profile,
- const GURL& event_url);
-
- // Dispatch an event to particular extension. Also include an
- // explicit user gesture indicator.
- virtual void DispatchEventToExtension(
- const std::string& extension_id,
- const std::string& event_name,
- const std::string& event_args,
+ base::ListValue* event_args,
Profile* restrict_to_profile,
const GURL& event_url,
UserGestureState user_gesture);
@@ -168,12 +154,14 @@ class ExtensionEventRouter : public content::NotificationObserver,
// in order to avoid sending 2 events to "spanning" extensions.
// If |cross_incognito_profile| is non-NULL and different from
// restrict_to_profile, send the event with cross_incognito_args to the
- // extensions in that profile that can't cross incognito.
+ // extensions in that profile that can't cross incognito. Takes ownership of
+ // |event_args| and |cross_incognito_args|, but can be safely invoked with
+ // NULL for either.
void DispatchEventsToRenderersAcrossIncognito(
const std::string& event_name,
- const std::string& event_args,
+ base::ListValue* event_args,
Profile* restrict_to_profile,
- const std::string& cross_incognito_args,
+ base::ListValue* cross_incognito_args,
const GURL& event_url);
// Record the Event Ack from the renderer. (One less event in-flight.)
@@ -217,13 +205,13 @@ class ExtensionEventRouter : public content::NotificationObserver,
// Returns false when the event is scoped to a profile and the listening
// extension does not have access to events from that profile. Also fills
- // |event_args| with the proper arguments to send, which may differ if
- // the event crosses the incognito boundary.
+ // |event_args| (if non-NULL) with the proper arguments to send, which may
+ // differ if the event crosses the incognito boundary.
bool CanDispatchEventToProfile(
Profile* profile,
const extensions::Extension* extension,
const linked_ptr<ExtensionEvent>& event,
- const base::Value** event_args);
+ base::ListValue** event_args);
// Possibly loads given extension's background page in preparation to
// dispatch an event.
@@ -257,40 +245,21 @@ class ExtensionEventRouter : public content::NotificationObserver,
struct ExtensionEvent {
std::string event_name;
- scoped_ptr<Value> event_args;
+ scoped_ptr<ListValue> event_args;
GURL event_url;
Profile* restrict_to_profile;
- scoped_ptr<Value> cross_incognito_args;
+ scoped_ptr<ListValue> cross_incognito_args;
ExtensionEventRouter::UserGestureState user_gesture;
extensions::EventFilteringInfo info;
ExtensionEvent(const std::string& event_name,
- const Value& event_args,
+ ListValue* event_args,
const GURL& event_url,
Profile* restrict_to_profile,
- const Value& cross_incognito_args,
+ ListValue* cross_incognito_args,
ExtensionEventRouter::UserGestureState user_gesture,
const extensions::EventFilteringInfo& info);
-
- // TODO(gdk): This variant should be retired once the callers are switched to
- // providing Values instead of just strings.
- ExtensionEvent(const std::string& event_name,
- const std::string& event_args,
- const GURL& event_url,
- Profile* restrict_to_profile,
- const std::string& cross_incognito_args,
- ExtensionEventRouter::UserGestureState user_gesture,
- const extensions::EventFilteringInfo& info);
-
- ExtensionEvent(const std::string& event_name,
- const Value& event_args,
- const GURL& event_url,
- Profile* restrict_to_profile,
- ExtensionEventRouter::UserGestureState user_gesture,
- const extensions::EventFilteringInfo& info);
-
~ExtensionEvent();
};
-
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_

Powered by Google App Engine
This is Rietveld 408576698