Index: extensions/browser/api_activity_monitor.h |
diff --git a/extensions/browser/api_activity_monitor.h b/extensions/browser/api_activity_monitor.h |
index 9ef97a4a4effe54baa63fe0ae74e7d7e7c1cdb4e..0844ce0eb7a9000b1a7fe3387cdf0d303e3035ad 100644 |
--- a/extensions/browser/api_activity_monitor.h |
+++ b/extensions/browser/api_activity_monitor.h |
@@ -8,33 +8,67 @@ |
#include <memory> |
#include <string> |
+class GURL; |
namespace base { |
+class DictionaryValue; |
class ListValue; |
} |
+namespace content { |
+class BrowserContext; |
+} |
+ |
namespace extensions { |
+namespace activity_monitor { |
+ |
+using Monitor = void (*)(content::BrowserContext* browser_context, |
+ const std::string& extension_id, |
+ const std::string& activity_name, |
+ const base::ListValue& event_args); |
+using WebRequestMonitor = |
+ void (*)(content::BrowserContext* browser_context, |
+ const std::string& extension_id, |
+ const GURL& url, |
+ bool is_incognito, |
+ const std::string& api_call, |
+ std::unique_ptr<base::DictionaryValue> details); |
+ |
+// Get or set the current global monitor for API events and functions. Note that |
+// these handlers *must* be allowed to be called on any thread! |
+// Additionally, since this may be called on any thead, |browser_context| is |
+// unsafe to use unless posted to the UI thread. |
+Monitor GetApiEventMonitor(); |
+Monitor GetApiFunctionMonitor(); |
+WebRequestMonitor GetWebRequestMonitor(); |
+void SetApiEventMonitor(Monitor event_monitor); |
+void SetApiFunctionMonitor(Monitor function_monitor); |
+void SetWebRequestMonitor(WebRequestMonitor web_request_monitor); |
+ |
+// Called when an API event is dispatched to an extension. May be called on any |
+// thread. |browser_context| is unsafe to use. |
+void OnApiEventDispatched(content::BrowserContext* browser_context, |
+ const std::string& extension_id, |
+ const std::string& event_name, |
+ const base::ListValue& event_args); |
+ |
+// Called when an extension calls an API function. May be called on any thread. |
+// |browser_context| is unsafe to use. |
+void OnApiFunctionCalled(content::BrowserContext* browser_context, |
+ const std::string& extension_id, |
+ const std::string& api_name, |
+ const base::ListValue& args); |
-// ApiActivityMonitor is used to monitor extension API event dispatch and API |
-// function calls. An embedder can use this interface to log low-level extension |
-// activity. |
-class ApiActivityMonitor { |
- public: |
- // Called when an API event is dispatched to an extension. |
- virtual void OnApiEventDispatched( |
- const std::string& extension_id, |
- const std::string& event_name, |
- std::unique_ptr<base::ListValue> event_args) = 0; |
- |
- // Called when an extension calls an API function. |
- virtual void OnApiFunctionCalled(const std::string& extension_id, |
- const std::string& api_name, |
- std::unique_ptr<base::ListValue> args) = 0; |
- |
- protected: |
- virtual ~ApiActivityMonitor() {} |
-}; |
+// Called when an extension uses the web request API. May be called on any |
+// thread. |browser_context| is unsafe to use. |
+void OnWebRequestApiUsed(content::BrowserContext* browser_context, |
+ const std::string& extension_id, |
+ const GURL& url, |
+ bool is_incognito, |
+ const std::string& api_call, |
+ std::unique_ptr<base::DictionaryValue> details); |
+} // namespace activity_monitor |
} // namespace extensions |
#endif // EXTENSIONS_BROWSER_API_ACTIVITY_MONITOR_H_ |