Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3317)

Unified Diff: chrome/browser/extensions/api/developer_private/developer_private_api.h

Issue 150663013: Integrate ErrorConsole with Apps Dev Tool (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Dan's and Finnur's Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..bea9bfe20ea92c3328e1912b575ca8961100469c 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
Dan Beam 2014/02/11 18:54:44 nit: // ExtensionFunction: or // ExtensionF
Devlin 2014/02/11 19:26:45 Whoops, done.
+ virtual bool RunImpl() OVERRIDE;
+
+ private:
+ void LaunchCallback(const base::DictionaryValue& results);
+};
+
+class DeveloperPrivateOpenDevToolsFunction
+ : public ChromeAsyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("developerPrivate.openDevTools",
+ DEVELOPERPRIVATE_OPENDEVTOOLS);
- // 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_;
+ DeveloperPrivateOpenDevToolsFunction();
+ protected:
+ virtual ~DeveloperPrivateOpenDevToolsFunction();
+
+ // ExtensionFunction
+ virtual bool RunImpl() OVERRIDE;
};
} // namespace api

Powered by Google App Engine
This is Rietveld 408576698