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

Unified Diff: chrome/browser/chromeos/extensions/file_manager/file_tasks.cc

Issue 23532010: file_manager: Introduce FullTaskDescriptor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 7 years, 4 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/chromeos/extensions/file_manager/file_tasks.cc
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_tasks.cc b/chrome/browser/chromeos/extensions/file_manager/file_tasks.cc
index 262705bce261e3021e6d3932b7097ff0b77a2964..1cb331d98e8156b437709bd60b99a3ea333d7ac9 100644
--- a/chrome/browser/chromeos/extensions/file_manager/file_tasks.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/file_tasks.cc
@@ -111,6 +111,30 @@ bool FileBrowserHasAccessPermissionForFiles(
} // namespace
+FullTaskDescriptor::FullTaskDescriptor(
+ const TaskDescriptor& task_descriptor,
+ const std::string& task_title,
+ const GURL& icon_url,
+ bool is_default)
+ : task_descriptor_(task_descriptor),
+ task_title_(task_title),
+ icon_url_(icon_url),
+ is_default_(is_default){
+}
+
+scoped_ptr<base::DictionaryValue>
+FullTaskDescriptor::AsDictionaryValue() const {
+ scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue);
+ dictionary->SetString("taskId", TaskDescriptorToId(task_descriptor_));
+ if (!icon_url_.is_empty())
+ dictionary->SetString("iconUrl", icon_url_.spec());
+ dictionary->SetBoolean("driveApp",
+ task_descriptor_.task_type == TASK_TYPE_DRIVE_APP);
+ dictionary->SetString("title", task_title_);
+ dictionary->SetBoolean("isDefault", is_default_);
+ return dictionary.Pass();
+}
+
void UpdateDefaultTask(PrefService* pref_service,
const std::string& task_id,
const std::set<std::string>& suffixes,
@@ -170,11 +194,11 @@ std::string GetDefaultTaskIdFromPrefs(const PrefService& pref_service,
return task_id;
}
-std::string MakeTaskID(const std::string& extension_id,
+std::string MakeTaskID(const std::string& app_id,
TaskType task_type,
const std::string& action_id) {
return base::StringPrintf("%s|%s|%s",
- extension_id.c_str(),
+ app_id.c_str(),
TaskTypeToString(task_type).c_str(),
action_id.c_str());
}
@@ -183,6 +207,12 @@ std::string MakeDriveAppTaskId(const std::string& app_id) {
return MakeTaskID(app_id, TASK_TYPE_DRIVE_APP, "open-with");
}
+std::string TaskDescriptorToId(const TaskDescriptor& task_descriptor) {
+ return MakeTaskID(task_descriptor.app_id,
+ task_descriptor.task_type,
+ task_descriptor.action_id);
+}
+
bool ParseTaskID(const std::string& task_id, TaskDescriptor* task) {
DCHECK(task);
@@ -353,39 +383,35 @@ void FindDefaultDriveTasks(
void CreateDriveTasks(
const TaskInfoMap& task_info_map,
const std::set<std::string>& default_tasks,
- ListValue* result_list,
+ std::vector<FullTaskDescriptor>* result_list,
bool* default_already_set) {
DCHECK(result_list);
DCHECK(default_already_set);
for (TaskInfoMap::const_iterator iter = task_info_map.begin();
iter != task_info_map.end(); ++iter) {
- DictionaryValue* task = new DictionaryValue;
- task->SetString("taskId", iter->first);
- task->SetString("title", iter->second.app_name);
-
- const GURL& icon_url = iter->second.icon_url;
- if (!icon_url.is_empty())
- task->SetString("iconUrl", icon_url.spec());
-
- task->SetBoolean("driveApp", true);
-
+ bool is_default = false;
// Once we set a default app, we don't want to set any more.
if (!(*default_already_set) &&
default_tasks.find(iter->first) != default_tasks.end()) {
- task->SetBoolean("isDefault", true);
+ is_default = true;
*default_already_set = true;
- } else {
- task->SetBoolean("isDefault", false);
}
- result_list->Append(task);
+
+ TaskDescriptor descriptor;
+ DCHECK(ParseTaskID(iter->first, &descriptor));
+ result_list->push_back(
+ FullTaskDescriptor(descriptor,
+ iter->second.app_name,
+ iter->second.icon_url,
+ is_default));
}
}
void FindDriveAppTasks(
Profile* profile,
const PathAndMimeTypeSet& path_mime_set,
- ListValue* result_list,
+ std::vector<FullTaskDescriptor>* result_list,
bool* default_already_set) {
DCHECK(!path_mime_set.empty());
DCHECK(result_list);
@@ -415,7 +441,7 @@ void FindDriveAppTasks(
void FindFileHandlerTasks(
Profile* profile,
const PathAndMimeTypeSet& path_mime_set,
- ListValue* result_list,
+ std::vector<FullTaskDescriptor>* result_list,
bool* default_already_set) {
DCHECK(!path_mime_set.empty());
DCHECK(result_list);
@@ -453,16 +479,13 @@ void FindFileHandlerTasks(
for (FileHandlerList::iterator i = file_handlers.begin();
i != file_handlers.end(); ++i) {
- DictionaryValue* task = new DictionaryValue;
std::string task_id = file_tasks::MakeTaskID(
extension->id(), file_tasks::TASK_TYPE_FILE_HANDLER, (*i)->id);
- task->SetString("taskId", task_id);
- task->SetString("title", (*i)->title);
+
+ bool is_default = false;
if (!(*default_already_set) && ContainsKey(default_tasks, task_id)) {
- task->SetBoolean("isDefault", true);
+ is_default = true;
*default_already_set = true;
- } else {
- task->SetBoolean("isDefault", false);
}
GURL best_icon = extensions::ExtensionIconSource::GetIconURL(
@@ -471,13 +494,14 @@ void FindFileHandlerTasks(
ExtensionIconSet::MATCH_BIGGER,
false, // grayscale
NULL); // exists
- if (!best_icon.is_empty())
- task->SetString("iconUrl", best_icon.spec());
- else
- task->SetString("iconUrl", kDefaultIcon);
- task->SetBoolean("driveApp", false);
- result_list->Append(task);
+ result_list->push_back(FullTaskDescriptor(
+ TaskDescriptor(extension->id(),
+ file_tasks::TASK_TYPE_FILE_HANDLER,
+ (*i)->id),
+ (*i)->title,
+ best_icon,
+ is_default));
}
}
}
@@ -486,7 +510,7 @@ void FindFileBrowserHandlerTasks(
Profile* profile,
const std::vector<GURL>& file_urls,
const std::vector<base::FilePath>& file_paths,
- ListValue* result_list,
+ std::vector<FullTaskDescriptor>* result_list,
bool* default_already_set) {
DCHECK(!file_paths.empty());
DCHECK(!file_urls.empty());
@@ -510,35 +534,33 @@ void FindFileBrowserHandlerTasks(
const FileBrowserHandler* handler = *iter;
const std::string extension_id = handler->extension_id();
const Extension* extension = service->GetExtensionById(extension_id, false);
- CHECK(extension);
- DictionaryValue* task = new DictionaryValue;
- task->SetString("taskId", file_tasks::MakeTaskID(
- extension_id,
- file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER,
- handler->id()));
- task->SetString("title", handler->title());
+ DCHECK(extension);
+
// TODO(zelidrag): Figure out how to expose icon URL that task defined in
// manifest instead of the default extension icon.
- GURL icon = extensions::ExtensionIconSource::GetIconURL(
+ const GURL icon_url = extensions::ExtensionIconSource::GetIconURL(
extension,
extension_misc::EXTENSION_ICON_BITTY,
ExtensionIconSet::MATCH_BIGGER,
false, // grayscale
NULL); // exists
- task->SetString("iconUrl", icon.spec());
- task->SetBoolean("driveApp", false);
// Only set the default if there isn't already a default set.
+ bool is_default = false;
if (!*default_already_set &&
std::find(default_tasks.begin(), default_tasks.end(), *iter) !=
default_tasks.end()) {
- task->SetBoolean("isDefault", true);
+ is_default = true;
*default_already_set = true;
- } else {
- task->SetBoolean("isDefault", false);
}
- result_list->Append(task);
+ result_list->push_back(FullTaskDescriptor(
+ TaskDescriptor(extension_id,
+ file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER,
+ handler->id()),
+ handler->title(),
+ icon_url,
+ is_default));
}
}
@@ -547,7 +569,10 @@ void FindAllTypesOfTasks(
const PathAndMimeTypeSet& path_mime_set,
const std::vector<GURL>& file_urls,
const std::vector<base::FilePath>& file_paths,
- ListValue* result_list) {
+ std::vector<FullTaskDescriptor>* result_list) {
+ DCHECK(profile);
+ DCHECK(result_list);
+
// Check if file_paths contain a google document.
bool has_google_document = false;
for (size_t i = 0; i < file_paths.size(); ++i) {

Powered by Google App Engine
This is Rietveld 408576698