 Chromium Code Reviews
 Chromium Code Reviews Issue 1887253002:
  Rate limit programmatic update checks for extensions  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1887253002:
  Rate limit programmatic update checks for extensions  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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); |