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

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

Issue 13885007: Add API to load a unpacked project to developerPrivate. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase Created 7 years, 8 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.cc
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
index 89cf5df13f32bf9dff52cd110ca4453b0e9f4bda..3ccc046761a28bf75e94b8472ac95f7933b3b051 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -56,6 +56,9 @@ namespace extensions {
namespace {
+const base::FilePath::CharType kUnpackedAppsFolder[]
+ = FILE_PATH_LITERAL("apps_target");
+
ExtensionUpdater* GetExtensionUpdater(Profile* profile) {
return profile->GetExtensionService()->updater();
}
@@ -816,7 +819,7 @@ void DeveloperPrivateExportSyncfsFolderToLocalfsFunction::
base::FilePath(file_list[i].name)));
base::FilePath target_path(profile()->GetPath());
target_path =
- target_path.Append(FILE_PATH_LITERAL("apps_target"));
+ target_path.Append(kUnpackedAppsFolder);
target_path = target_path.Append(project_name);
target_path = target_path.Append(file_list[i].name);
@@ -877,6 +880,73 @@ DeveloperPrivateExportSyncfsFolderToLocalfsFunction::
DeveloperPrivateExportSyncfsFolderToLocalfsFunction::
~DeveloperPrivateExportSyncfsFolderToLocalfsFunction() {}
+bool DeveloperPrivateLoadProjectToSyncfsFunction::RunImpl() {
+ // TODO(grv) : implement
+ return true;
+}
+
+DeveloperPrivateLoadProjectToSyncfsFunction::
+ DeveloperPrivateLoadProjectToSyncfsFunction() {}
+
+DeveloperPrivateLoadProjectToSyncfsFunction::
+ ~DeveloperPrivateLoadProjectToSyncfsFunction() {}
+
+bool DeveloperPrivateGetProjectsInfoFunction::RunImpl() {
+ content::BrowserThread::PostTask(content::BrowserThread::FILE, FROM_HERE,
+ base::Bind(&DeveloperPrivateGetProjectsInfoFunction::ReadFolder,
+ this));
+
+ // Released by ReadFolder
+ AddRef();
+ return true;
+}
+
+void DeveloperPrivateGetProjectsInfoFunction::ReadFolder() {
+ base::FilePath path(profile()->GetPath());
+ path = path.Append(kUnpackedAppsFolder);
+
+ file_util::FileEnumerator files(
+ path, false, file_util::FileEnumerator::DIRECTORIES);
+ ProjectInfoList info_list;
+ for (base::FilePath current_path = files.Next(); !current_path.empty();
+ current_path = files.Next()) {
+ scoped_ptr<developer::ProjectInfo> info(new developer::ProjectInfo());
+ info->name = current_path.BaseName().MaybeAsASCII();
+ info_list.push_back(
+ make_linked_ptr<developer::ProjectInfo>(info.release()));
+ }
+ results_ = developer::GetProjectsInfo::Results::Create(info_list);
+ content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
+ base::Bind(&DeveloperPrivateGetProjectsInfoFunction::SendResponse,
+ this,
+ true));
+ Release();
+}
+
+DeveloperPrivateGetProjectsInfoFunction::
+ DeveloperPrivateGetProjectsInfoFunction() {}
+
+DeveloperPrivateGetProjectsInfoFunction::
+ ~DeveloperPrivateGetProjectsInfoFunction() {}
+
+bool DeveloperPrivateLoadProjectFunction::RunImpl() {
+ // TODO(grv) : add unit tests.
+ base::FilePath::StringType project_name;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &project_name));
+ base::FilePath path(profile()->GetPath());
+ path = path.Append(kUnpackedAppsFolder);
+ // TODO(grv) : Sanitize / check project_name.
+ path = path.Append(project_name);
+ ExtensionService* service = profile()->GetExtensionService();
+ UnpackedInstaller::Create(service)->Load(path);
+ SendResponse(true);
+ return true;
+}
+
+DeveloperPrivateLoadProjectFunction::DeveloperPrivateLoadProjectFunction() {}
+
+DeveloperPrivateLoadProjectFunction::~DeveloperPrivateLoadProjectFunction() {}
+
bool DeveloperPrivateChoosePathFunction::RunImpl() {
scoped_ptr<developer::ChoosePath::Params> params(

Powered by Google App Engine
This is Rietveld 408576698