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 |
index ee1b45551887f55fa7e3e82fbad4fbe7a711c172..89036ab9bae42ded994011049ab3b4f969f9777c 100644 |
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.h |
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.h |
@@ -5,10 +5,13 @@ |
#ifndef CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_DEVELOPER_PRIVATE_API_H_ |
#define CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_DEVELOPER_PRIVATE_API_H_ |
+#include <set> |
+ |
#include "base/files/file.h" |
#include "chrome/browser/extensions/api/developer_private/entry_picker.h" |
#include "chrome/browser/extensions/api/file_system/file_system_api.h" |
#include "chrome/browser/extensions/chrome_extension_function.h" |
+#include "chrome/browser/extensions/error_console/error_console.h" |
#include "chrome/browser/extensions/extension_install_prompt.h" |
#include "chrome/browser/extensions/extension_uninstall_dialog.h" |
#include "chrome/browser/extensions/pack_extension_job.h" |
@@ -26,6 +29,7 @@ class ExtensionService; |
namespace extensions { |
+class ExtensionError; |
class ExtensionSystem; |
class ManagementPolicy; |
@@ -40,42 +44,54 @@ struct ItemInfo; |
struct ItemInspectView; |
struct ProjectInfo; |
-} |
+} // namespace developer_private |
} // namespace api |
-} // namespace extensions |
- |
-namespace developer = extensions::api::developer_private; |
+namespace developer = api::developer_private; |
typedef std::vector<linked_ptr<developer::ItemInfo> > ItemInfoList; |
typedef std::vector<linked_ptr<developer::ProjectInfo> > ProjectInfoList; |
typedef std::vector<linked_ptr<developer::ItemInspectView> > |
ItemInspectViewList; |
-namespace extensions { |
- |
-class DeveloperPrivateEventRouter : public content::NotificationObserver { |
+class DeveloperPrivateEventRouter : public content::NotificationObserver, |
+ public ErrorConsole::Observer { |
public: |
explicit DeveloperPrivateEventRouter(Profile* profile); |
virtual ~DeveloperPrivateEventRouter(); |
+ // Add or remove an ID to the list of extensions subscribed to events. |
+ void AddExtensionId(const std::string& extension_id); |
+ void RemoveExtensionId(const std::string& extension_id); |
+ |
private: |
// content::NotificationObserver implementation |
virtual void Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) OVERRIDE; |
+ // ErrorConsole::Observer implementation |
+ virtual void OnErrorAdded(const ExtensionError* error) OVERRIDE; |
+ |
content::NotificationRegistrar registrar_; |
Profile* profile_; |
+ // The set of IDs of the Extensions that have subscribed to DeveloperPrivate |
+ // events. Since the only consumer of the DeveloperPrivate API is currently |
+ // the Apps Developer Tool (which replaces the chrome://extensions page), we |
+ // don't want to send information about the subscribing extension in an |
+ // update. In particular, we want to avoid entering a loop, which could happen |
+ // when, e.g., the Apps Developer Tool throws an error. |
+ std::set<std::string> extension_ids_; |
+ |
DISALLOW_COPY_AND_ASSIGN(DeveloperPrivateEventRouter); |
}; |
// The profile-keyed service that manages the DeveloperPrivate API. |
class DeveloperPrivateAPI : public BrowserContextKeyedService, |
- public extensions::EventRouter::Observer { |
+ public EventRouter::Observer { |
public: |
// Convenience method to get the DeveloperPrivateAPI for a profile. |
static DeveloperPrivateAPI* Get(Profile* profile); |
@@ -93,10 +109,8 @@ class DeveloperPrivateAPI : public BrowserContextKeyedService, |
virtual void Shutdown() OVERRIDE; |
// EventRouter::Observer implementation. |
- virtual void OnListenerAdded(const extensions::EventListenerInfo& details) |
- OVERRIDE; |
- virtual void OnListenerRemoved(const extensions::EventListenerInfo& details) |
- OVERRIDE; |
+ virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE; |
+ virtual void OnListenerRemoved(const EventListenerInfo& details) OVERRIDE; |
private: |
void RegisterNotifications(); |
@@ -141,10 +155,8 @@ class DeveloperPrivateGetItemsInfoFunction |
virtual bool RunImpl() OVERRIDE; |
private: |
- |
- scoped_ptr<developer::ItemInfo> CreateItemInfo( |
- const extensions::Extension& item, |
- bool item_is_enabled); |
+ scoped_ptr<developer::ItemInfo> CreateItemInfo(const Extension& item, |
+ bool item_is_enabled); |
void GetIconsOnFileThread( |
ItemInfoList item_list, |
@@ -157,12 +169,11 @@ class DeveloperPrivateGetItemsInfoFunction |
ItemInspectViewList* result); |
ItemInspectViewList GetInspectablePagesForExtension( |
- const extensions::Extension* extension, |
+ const Extension* extension, |
bool extension_is_enabled); |
- void GetShellWindowPagesForExtensionProfile( |
- const extensions::Extension* extension, |
- ItemInspectViewList* result); |
+ void GetShellWindowPagesForExtensionProfile(const Extension* extension, |
+ ItemInspectViewList* result); |
linked_ptr<developer::ItemInspectView> constructInspectView( |
const GURL& url, |
@@ -264,7 +275,7 @@ class DeveloperPrivateEnableFunction |
virtual bool RunImpl() OVERRIDE; |
private: |
- scoped_ptr<extensions::RequirementsChecker> requirements_checker_; |
+ scoped_ptr<RequirementsChecker> requirements_checker_; |
}; |
class DeveloperPrivateChooseEntryFunction : public ChromeAsyncExtensionFunction, |
@@ -316,7 +327,7 @@ class DeveloperPrivateChoosePathFunction |
class DeveloperPrivatePackDirectoryFunction |
: public ChromeAsyncExtensionFunction, |
- public extensions::PackExtensionJob::Client { |
+ public PackExtensionJob::Client { |
public: |
DECLARE_EXTENSION_FUNCTION("developerPrivate.packDirectory", |
@@ -327,101 +338,120 @@ class DeveloperPrivatePackDirectoryFunction |
// ExtensionPackJob::Client implementation. |
virtual void OnPackSuccess(const base::FilePath& crx_file, |
const base::FilePath& key_file) OVERRIDE; |
- virtual void OnPackFailure( |
- const std::string& error, |
- extensions::ExtensionCreator::ErrorType error_type) OVERRIDE; |
+ virtual void OnPackFailure(const std::string& error, |
+ ExtensionCreator::ErrorType error_type) OVERRIDE; |
protected: |
virtual ~DeveloperPrivatePackDirectoryFunction(); |
virtual bool RunImpl() OVERRIDE; |
private: |
- scoped_refptr<extensions::PackExtensionJob> pack_job_; |
+ scoped_refptr<PackExtensionJob> pack_job_; |
std::string item_path_str_; |
std::string key_path_str_; |
}; |
-class DeveloperPrivateGetStringsFunction : public ChromeSyncExtensionFunction { |
- public: |
- DECLARE_EXTENSION_FUNCTION("developerPrivate.getStrings", |
- DEVELOPERPRIVATE_GETSTRINGS); |
- |
- protected: |
- virtual ~DeveloperPrivateGetStringsFunction(); |
- |
- // ExtensionFunction |
- virtual bool RunImpl() OVERRIDE; |
-}; |
- |
class DeveloperPrivateIsProfileManagedFunction |
: public ChromeSyncExtensionFunction { |
- public: |
- DECLARE_EXTENSION_FUNCTION("developerPrivate.isProfileManaged", |
- DEVELOPERPRIVATE_ISPROFILEMANAGED); |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("developerPrivate.isProfileManaged", |
+ DEVELOPERPRIVATE_ISPROFILEMANAGED); |
- protected: |
- virtual ~DeveloperPrivateIsProfileManagedFunction(); |
+ protected: |
+ virtual ~DeveloperPrivateIsProfileManagedFunction(); |
- // ExtensionFunction |
- virtual bool RunImpl() OVERRIDE; |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
}; |
class DeveloperPrivateLoadDirectoryFunction |
: public ChromeAsyncExtensionFunction { |
- public: |
- DECLARE_EXTENSION_FUNCTION("developerPrivate.loadDirectory", |
- DEVELOPERPRIVATE_LOADUNPACKEDCROS); |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("developerPrivate.loadDirectory", |
+ DEVELOPERPRIVATE_LOADUNPACKEDCROS); |
- DeveloperPrivateLoadDirectoryFunction(); |
+ DeveloperPrivateLoadDirectoryFunction(); |
- protected: |
- virtual ~DeveloperPrivateLoadDirectoryFunction(); |
+ protected: |
+ virtual ~DeveloperPrivateLoadDirectoryFunction(); |
- // ExtensionFunction |
- virtual bool RunImpl() OVERRIDE; |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
- void ClearExistingDirectoryContent(const base::FilePath& project_path); |
+ void ClearExistingDirectoryContent(const base::FilePath& project_path); |
- void ReadSyncFileSystemDirectory(const base::FilePath& project_path, |
- const base::FilePath& destination_path); |
+ void ReadSyncFileSystemDirectory(const base::FilePath& project_path, |
+ const base::FilePath& destination_path); |
- void ReadSyncFileSystemDirectoryCb( |
- const base::FilePath& project_path, |
- const base::FilePath& destination_path, |
- base::File::Error result, |
- const fileapi::FileSystemOperation::FileEntryList& file_list, |
- bool has_more); |
+ void ReadSyncFileSystemDirectoryCb( |
+ const base::FilePath& project_path, |
+ const base::FilePath& destination_path, |
+ base::File::Error result, |
+ const fileapi::FileSystemOperation::FileEntryList& file_list, |
+ bool has_more); |
- void SnapshotFileCallback( |
- const base::FilePath& target_path, |
- base::File::Error result, |
- const base::File::Info& file_info, |
- const base::FilePath& platform_path, |
- const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref); |
+ void SnapshotFileCallback( |
+ const base::FilePath& target_path, |
+ base::File::Error result, |
+ const base::File::Info& file_info, |
+ const base::FilePath& platform_path, |
+ const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref); |
- void CopyFile(const base::FilePath& src_path, |
- const base::FilePath& dest_path); |
+ void CopyFile(const base::FilePath& src_path, |
+ const base::FilePath& dest_path); |
- void Load(); |
+ void Load(); |
- scoped_refptr<fileapi::FileSystemContext> context_; |
+ scoped_refptr<fileapi::FileSystemContext> context_; |
- // syncfs url representing the root of the folder to be copied. |
- std::string project_base_url_; |
+ // syncfs url representing the root of the folder to be copied. |
+ std::string project_base_url_; |
- // physical path on disc of the folder to be copied. |
- base::FilePath project_base_path_; |
+ // physical path on disc of the folder to be copied. |
+ base::FilePath project_base_path_; |
- // Path of the current folder to be copied. |
- base::FilePath current_path_; |
+ // Path of the current folder to be copied. |
+ base::FilePath current_path_; |
- private: |
- int pending_copy_operations_count_; |
+ private: |
+ int pending_copy_operations_count_; |
+ |
+ // This is set to false if any of the copyFile operations fail on |
+ // call of the API. It is returned as a response of the API call. |
+ bool success_; |
+}; |
+ |
+class DeveloperPrivateRequestFileSourceFunction |
+ : public ChromeAsyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("developerPrivate.requestFileSource", |
+ DEVELOPERPRIVATE_REQUESTFILESOURCE); |
+ |
+ DeveloperPrivateRequestFileSourceFunction(); |
+ |
+ protected: |
+ virtual ~DeveloperPrivateRequestFileSourceFunction(); |
+ |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
+ |
+ private: |
+ void LaunchCallback(const base::DictionaryValue& results); |
+}; |
- // This is set to false if any of the copyFile operations fail on |
- // call of the API. It is returned as a response of the API call. |
- bool success_; |
+class DeveloperPrivateOpenDevToolsFunction |
+ : public ChromeAsyncExtensionFunction { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("developerPrivate.openDevTools", |
+ DEVELOPERPRIVATE_OPENDEVTOOLS); |
+ DeveloperPrivateOpenDevToolsFunction(); |
+ |
+ protected: |
+ virtual ~DeveloperPrivateOpenDevToolsFunction(); |
+ |
+ // ExtensionFunction: |
+ virtual bool RunImpl() OVERRIDE; |
}; |
} // namespace api |