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( |