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..6ff1a05aef213e2301a6b1664bfa3dda6331f1a5 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,19 @@ |
#define CHROME_BROWSER_EXTENSIONS_API_RUNTIME_CHROME_RUNTIME_API_DELEGATE_H_ |
#include <map> |
-#include <vector> |
+#include <string> |
+#include <utility> |
#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 +29,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 +65,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,12 +87,14 @@ 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: |
DISALLOW_COPY_AND_ASSIGN(ChromeRuntimeAPIDelegate); |
}; |