| 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_
|
|
|