Chromium Code Reviews| Index: chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h |
| diff --git a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h |
| index 934bcd84a95c86bd43471d2425941dc5391f6ac4..9840a2deb889f90d13d2b41447b2331cd329f743 100644 |
| --- a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h |
| +++ b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h |
| @@ -6,15 +6,20 @@ |
| #define CHROME_BROWSER_EXTENSIONS_API_RUNTIME_CHROME_RUNTIME_API_DELEGATE_H_ |
| #include <map> |
| +#include <string> |
| +#include <utility> |
| #include <vector> |
|
Devlin
2016/04/15 17:57:37
nit: don't need this anymore
asargent_no_longer_on_chrome
2016/04/19 17:56:53
Done.
|
| #include "base/macros.h" |
| +#include "base/scoped_observer.h" |
| #include "content/public/browser/notification_observer.h" |
| #include "content/public/browser/notification_registrar.h" |
| #include "extensions/browser/api/runtime/runtime_api.h" |
| #include "extensions/browser/api/runtime/runtime_api_delegate.h" |
| +#include "extensions/browser/extension_registry_observer.h" |
| namespace base { |
| +class TickClock; |
| class TimeTicks; |
| } |
| @@ -25,16 +30,21 @@ class NotificationSource; |
| } |
| namespace extensions { |
| +class ExtensionRegistry; |
| class RuntimeAPI; |
| class UpdateObserver; |
| } |
| class ChromeRuntimeAPIDelegate : public extensions::RuntimeAPIDelegate, |
| - public content::NotificationObserver { |
| + public content::NotificationObserver, |
| + public extensions::ExtensionRegistryObserver { |
| public: |
| explicit ChromeRuntimeAPIDelegate(content::BrowserContext* context); |
| ~ChromeRuntimeAPIDelegate() override; |
| + // Sets a custom TickClock to use in tests. |
| + static void set_tick_clock_for_tests(base::TickClock* clock); |
| + |
| private: |
| friend class extensions::RuntimeAPI; |
| @@ -56,6 +66,11 @@ class ChromeRuntimeAPIDelegate : public extensions::RuntimeAPIDelegate, |
| const content::NotificationSource& source, |
| const content::NotificationDetails& details) override; |
| + // ExtensionRegistryObserver implementation. |
| + void OnExtensionInstalled(content::BrowserContext* browser_context, |
| + const extensions::Extension* extension, |
| + bool is_update) override; |
| + |
| void UpdateCheckComplete(const std::string& extension_id); |
| void CallUpdateCallbacks(const std::string& extension_id, |
| const UpdateCheckResult& result); |
| @@ -73,10 +88,13 @@ class ChromeRuntimeAPIDelegate : public extensions::RuntimeAPIDelegate, |
| // it was reloaded with not enough time in between reloads. |
| std::map<std::string, std::pair<base::TimeTicks, int> > last_reload_time_; |
| - // Pending update checks. |
| - typedef std::vector<UpdateCheckCallback> UpdateCallbackList; |
| - typedef std::map<std::string, UpdateCallbackList> UpdateCallbackMap; |
| - UpdateCallbackMap pending_update_checks_; |
| + // Information about update checks, keyed by extension id. |
| + struct UpdateCheckInfo; |
| + std::map<std::string, UpdateCheckInfo> update_check_info_; |
| + |
| + ScopedObserver<extensions::ExtensionRegistry, |
| + extensions::ExtensionRegistryObserver> |
| + extension_registry_observer_; |
| private: |
|
Devlin
2016/04/15 17:57:37
drive-by: remove
asargent_no_longer_on_chrome
2016/04/19 17:56:53
Done.
|
| DISALLOW_COPY_AND_ASSIGN(ChromeRuntimeAPIDelegate); |