Chromium Code Reviews| 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..207fc195e88b49ef5d3039b5681878dc1aa8ce77 100644 |
| --- a/extensions/browser/api_activity_monitor.h |
| +++ b/extensions/browser/api_activity_monitor.h |
| @@ -8,33 +8,63 @@ |
| #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! |
| +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. |
| +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. |
| +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. |
|
asargent_no_longer_on_chrome
2016/06/20 22:13:11
Looks like this can be called from IO thread - wor
Devlin
2016/06/21 17:07:51
Added more comments.
|
| +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_ |