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

Side by Side Diff: extensions/browser/event_router.cc

Issue 2077723002: [Extensions] Short-circuit activity logging if not enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add Test Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/event_router.h" 5 #include "extensions/browser/event_router.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <tuple> 9 #include <tuple>
10 #include <utility> 10 #include <utility>
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 // A dictionary of event names to lists of filters that this extension has 56 // A dictionary of event names to lists of filters that this extension has
57 // registered from its lazy background page. 57 // registered from its lazy background page.
58 const char kFilteredEvents[] = "filtered_events"; 58 const char kFilteredEvents[] = "filtered_events";
59 59
60 // Sends a notification about an event to the API activity monitor and the 60 // Sends a notification about an event to the API activity monitor and the
61 // ExtensionHost for |extension_id| on the UI thread. Can be called from any 61 // ExtensionHost for |extension_id| on the UI thread. Can be called from any
62 // thread. 62 // thread.
63 void NotifyEventDispatched(void* browser_context_id, 63 void NotifyEventDispatched(void* browser_context_id,
64 const std::string& extension_id, 64 const std::string& extension_id,
65 const std::string& event_name, 65 const std::string& event_name,
66 std::unique_ptr<ListValue> args) { 66 const base::ListValue& args) {
67 // The ApiActivityMonitor can only be accessed from the UI thread.
68 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
69 BrowserThread::PostTask(
70 BrowserThread::UI, FROM_HERE,
71 base::Bind(&NotifyEventDispatched, browser_context_id, extension_id,
72 event_name, base::Passed(&args)));
73 return;
74 }
75
76 // Notify the ApiActivityMonitor about the event dispatch. 67 // Notify the ApiActivityMonitor about the event dispatch.
77 BrowserContext* context = static_cast<BrowserContext*>(browser_context_id); 68 BrowserContext* context = static_cast<BrowserContext*>(browser_context_id);
78 if (!ExtensionsBrowserClient::Get()->IsValidContext(context)) 69 activity_monitor::OnApiEventDispatched(context, extension_id, event_name,
79 return; 70 args);
80 ApiActivityMonitor* monitor =
81 ExtensionsBrowserClient::Get()->GetApiActivityMonitor(context);
82 if (monitor)
83 monitor->OnApiEventDispatched(extension_id, event_name, std::move(args));
84 } 71 }
85 72
86 // A global identifier used to distinguish extension events. 73 // A global identifier used to distinguish extension events.
87 base::StaticAtomicSequenceNumber g_extension_event_id; 74 base::StaticAtomicSequenceNumber g_extension_event_id;
88 75
89 } // namespace 76 } // namespace
90 77
91 const char EventRouter::kRegisteredEvents[] = "events"; 78 const char EventRouter::kRegisteredEvents[] = "events";
92 79
93 struct EventRouter::ListenerProcess { 80 struct EventRouter::ListenerProcess {
(...skipping 13 matching lines...) Expand all
107 // static 94 // static
108 void EventRouter::DispatchExtensionMessage(IPC::Sender* ipc_sender, 95 void EventRouter::DispatchExtensionMessage(IPC::Sender* ipc_sender,
109 void* browser_context_id, 96 void* browser_context_id,
110 const std::string& extension_id, 97 const std::string& extension_id,
111 int event_id, 98 int event_id,
112 const std::string& event_name, 99 const std::string& event_name,
113 ListValue* event_args, 100 ListValue* event_args,
114 UserGestureState user_gesture, 101 UserGestureState user_gesture,
115 const EventFilteringInfo& info) { 102 const EventFilteringInfo& info) {
116 NotifyEventDispatched(browser_context_id, extension_id, event_name, 103 NotifyEventDispatched(browser_context_id, extension_id, event_name,
117 base::WrapUnique(event_args->DeepCopy())); 104 *event_args);
118 105
119 // TODO(chirantan): Make event dispatch a separate IPC so that it doesn't 106 // TODO(chirantan): Make event dispatch a separate IPC so that it doesn't
120 // piggyback off MessageInvoke, which is used for other things. 107 // piggyback off MessageInvoke, which is used for other things.
121 ListValue args; 108 ListValue args;
122 args.Set(0, new base::StringValue(event_name)); 109 args.Set(0, new base::StringValue(event_name));
123 args.Set(1, event_args); 110 args.Set(1, event_args);
124 args.Set(2, info.AsValue().release()); 111 args.Set(2, info.AsValue().release());
125 args.Set(3, new base::FundamentalValue(event_id)); 112 args.Set(3, new base::FundamentalValue(event_id));
126 ipc_sender->Send(new ExtensionMsg_MessageInvoke( 113 ipc_sender->Send(new ExtensionMsg_MessageInvoke(
127 MSG_ROUTING_CONTROL, 114 MSG_ROUTING_CONTROL,
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 const std::string& extension_id, 893 const std::string& extension_id,
907 const GURL& listener_url, 894 const GURL& listener_url,
908 content::BrowserContext* browser_context) 895 content::BrowserContext* browser_context)
909 : event_name(event_name), 896 : event_name(event_name),
910 extension_id(extension_id), 897 extension_id(extension_id),
911 listener_url(listener_url), 898 listener_url(listener_url),
912 browser_context(browser_context) { 899 browser_context(browser_context) {
913 } 900 }
914 901
915 } // namespace extensions 902 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api_activity_monitor.cc ('k') | extensions/browser/extension_function_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698