Index: chrome/browser/extensions/chrome_runtime_api_delegate.h |
diff --git a/chrome/browser/extensions/chrome_runtime_api_delegate.h b/chrome/browser/extensions/chrome_runtime_api_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0d69d20c4449b41e816d84312f6b6bf8f1d3a0c7 |
--- /dev/null |
+++ b/chrome/browser/extensions/chrome_runtime_api_delegate.h |
@@ -0,0 +1,88 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_EXTENSIONS_CHROME_RUNTIME_API_DELEGATE_H_ |
+#define CHROME_BROWSER_EXTENSIONS_CHROME_RUNTIME_API_DELEGATE_H_ |
+ |
+#include <map> |
+#include <vector> |
+ |
+#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/runtime_api_delegate.h" |
+ |
+namespace base { |
+class TimeTicks; |
+} |
+ |
+namespace content { |
+class BrowserContext; |
+class NotificationDetails; |
+class NotificationSource; |
+} |
+ |
+namespace extensions { |
+class RuntimeAPI; |
+class UpdateObserver; |
+} |
+ |
+class ChromeRuntimeAPIDelegate : public extensions::RuntimeAPIDelegate, |
not at google - send to devlin
2014/05/05 19:26:15
can this be in chrome/browser/extensions/api/runti
Ken Rockot(use gerrit already)
2014/05/05 21:08:07
Done.
|
+ public content::NotificationObserver { |
+ public: |
+ explicit ChromeRuntimeAPIDelegate(content::BrowserContext* context); |
+ virtual ~ChromeRuntimeAPIDelegate(); |
+ |
+ private: |
+ friend class extensions::RuntimeAPI; |
+ |
+ // extensions::RuntimeAPIDelegate implementation. |
+ virtual void RegisterUpdateObserver( |
+ extensions::UpdateObserver* observer) OVERRIDE; |
+ virtual void UnregisterUpdateObserver( |
+ extensions::UpdateObserver* observer) OVERRIDE; |
+ virtual base::Version GetOldExtensionVersion( |
+ const extensions::Extension* extension) OVERRIDE; |
+ virtual void MaybeReloadExtension(const std::string& extension_id) OVERRIDE; |
+ virtual bool RequestUpdateCheck( |
+ const std::string& extension_id, |
+ const extensions::RuntimeAPI::UpdateCheckCallback& callback) OVERRIDE; |
+ virtual void HandleUninstall(const std::string& extension_id, |
+ const GURL& uninstall_url) OVERRIDE; |
+ virtual bool GetPlatformInfo( |
+ extensions::core_api::runtime::GetPlatformInfo::Results::PlatformInfo* |
+ info) OVERRIDE; |
+ virtual bool RequestRestart(std::string* error_message) OVERRIDE; |
+ |
+ // content::NotificationObserver implementation. |
+ virtual void Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) OVERRIDE; |
+ |
+ void UpdateCheckComplete(const std::string& extension_id); |
+ void CallUpdateCallbacks( |
+ const std::string& extension_id, |
+ const extensions::RuntimeAPI::UpdateCheckResult& result); |
+ |
+ content::BrowserContext* browser_context_; |
+ |
+ content::NotificationRegistrar registrar_; |
+ |
+ // Whether the API registered with the ExtensionService to receive |
+ // update notifications. |
+ bool registered_for_updates_; |
+ |
+ // Map to prevent extensions from getting stuck in reload loops. Maps |
+ // extension id to the last time it was reloaded and the number of times |
+ // 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<extensions::RuntimeAPI::UpdateCheckCallback> |
+ UpdateCallbackList; |
+ typedef std::map<std::string, UpdateCallbackList> UpdateCallbackMap; |
+ UpdateCallbackMap pending_update_checks_; |
+}; |
+ |
+#endif // CHROME_BROWSER_EXTENSIONS_CHROME_RUNTIME_API_DELEGATE_H_ |