Index: chrome/browser/extensions/api/developer_private/developer_private_api.h |
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.h b/chrome/browser/extensions/api/developer_private/developer_private_api.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f97cad8ae7e53bc96183a16663d7f831590ddf03 |
--- /dev/null |
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.h |
@@ -0,0 +1,128 @@ |
+// Copyright (c) 2012 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_API_DEVELOPER_PRIVATE_DEVELOPER_PRIVATE_API_H_ |
+#define CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_DEVELOPER_PRIVATE_API_H_ |
+ |
+#include "chrome/browser/extensions/extension_function.h" |
+#include "chrome/browser/extensions/extension_install_prompt.h" |
+#include "chrome/browser/profiles/profile_keyed_service.h" |
+#include "content/public/browser/notification_observer.h" |
+#include "content/public/browser/notification_registrar.h" |
+#include "content/public/browser/render_view_host.h" |
+ |
+namespace extensions { |
+ |
+class ExtensionSystem; |
+ |
+namespace api { |
+ |
+namespace developer_private { |
+struct ItemInfo; |
+struct ItemInspectView; |
+} |
+ |
+} // namespace api |
+ |
+} // namespace extensions |
+ |
+namespace developer = extensions::api::developer_private; |
+ |
+typedef std::vector<linked_ptr<developer::ItemInfo> > ItemInfoList; |
+typedef std::vector<linked_ptr<developer::ItemInspectView> > |
+ ItemInspectViewList; |
+ |
+namespace extensions { |
+ |
+// The profile-keyed service that manages the DeveloperPrivate API. |
+class DeveloperPrivateAPI : public ProfileKeyedService, |
+ public content::NotificationObserver { |
+ public: |
+ // Convenience method to get the DeveloperPrivateAPI for a profile. |
+ static DeveloperPrivateAPI* Get(Profile* profile); |
+ |
+ explicit DeveloperPrivateAPI(Profile* profile); |
+ virtual ~DeveloperPrivateAPI(); |
+ |
+ void AddItemsInfo(const ExtensionSet& items, |
+ ExtensionSystem* system, |
+ ItemInfoList* item_list); |
+ |
+ // ProfileKeyedService implementation |
+ virtual void Shutdown() OVERRIDE; |
+ |
+ // content::NotificationObserver implementation. |
+ virtual void Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) OVERRIDE; |
+ |
+ private: |
+ void RegisterNotifications(); |
+ |
+ scoped_ptr<developer::ItemInfo> CreateItemInfo( |
+ const extensions::Extension& item, |
+ ExtensionSystem* system, |
+ bool item_is_enabled); |
+ |
+ // Helper that lists the current inspectable html pages for the extension. |
+ void GetInspectablePagesForExtensionProcess( |
+ const std::set<content::RenderViewHost*>& views, |
+ ItemInspectViewList* result); |
+ |
+ ItemInspectViewList GetInspectablePagesForExtension( |
+ const extensions::Extension* extension, |
+ bool extension_is_enabled); |
+ |
+ Profile* profile_; |
+ |
+ content::NotificationRegistrar registrar_; |
+ |
+ // The page may be refreshed in response to a RENDER_VIEW_HOST_DELETED, |
+ // but the iteration over RenderViewHosts will include the host because the |
+ // notification is sent when it is in the process of being deleted (and before |
+ // it is removed from the process). Keep a pointer to it so we can exclude |
+ // it from the active views. |
+ content::RenderViewHost* deleting_render_view_host_; |
+}; |
+ |
+namespace api { |
+ |
+class DeveloperPrivateAutoUpdateFunction : public SyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION_NAME("developerPrivate.autoUpdate"); |
+ |
+ protected: |
+ virtual ~DeveloperPrivateAutoUpdateFunction(); |
+ |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
+}; |
+ |
+class DeveloperPrivateGetItemsInfoFunction : public SyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION_NAME("developerPrivate.getItemsInfo"); |
+ |
+ protected: |
+ virtual ~DeveloperPrivateGetItemsInfoFunction(); |
+ |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
+}; |
+ |
+class DeveloperPrivateInspectFunction : public SyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION_NAME("developerPrivate.inspect"); |
+ |
+ protected: |
+ virtual ~DeveloperPrivateInspectFunction(); |
+ |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
+}; |
+ |
+} // namespace api |
+ |
+} // namespace extensions |
+ |
+#endif // CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_DEVELOPER_PRIVATE_API_H_ |