Commit 219b882d authored by satorux@chromium.org's avatar satorux@chromium.org

file_manager: IsFallbackFileBrowserHandler() to take TaskDescriptor

This is in preparation of reworking the default task selection logic.
This function will be needed from a place where FileBrowserHandler
pointers are not present.

BUG=282109
TEST=none
R=kinaba@chromium.org

Review URL: https://codereview.chromium.org/23455020

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220530 0039d316-1c4b-4281-b951-d872f2087c98
parent e26f5642
......@@ -519,12 +519,12 @@ bool ExecuteFileBrowserHandler(
return true;
}
bool IsFallbackFileBrowserHandler(const FileBrowserHandler* handler) {
const std::string& extension_id = handler->extension_id();
return (extension_id == kFileManagerAppId ||
extension_id == extension_misc::kQuickOfficeComponentExtensionId ||
extension_id == extension_misc::kQuickOfficeDevExtensionId ||
extension_id == extension_misc::kQuickOfficeExtensionId);
bool IsFallbackFileBrowserHandler(const file_tasks::TaskDescriptor& task) {
return (task.task_type == file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER &&
(task.app_id == kFileManagerAppId ||
task.app_id == extension_misc::kQuickOfficeComponentExtensionId ||
task.app_id == extension_misc::kQuickOfficeDevExtensionId ||
task.app_id == extension_misc::kQuickOfficeExtensionId));
}
FileBrowserHandlerList FindDefaultFileBrowserHandlers(
......@@ -547,10 +547,12 @@ FileBrowserHandlerList FindDefaultFileBrowserHandlers(
// from common_handlers.
for (size_t i = 0; i < common_handlers.size(); ++i) {
const FileBrowserHandler* handler = common_handlers[i];
std::string task_id = file_tasks::MakeTaskID(
const file_tasks::TaskDescriptor task_descriptor(
handler->extension_id(),
file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER,
handler->id());
const std::string task_id =
file_tasks::TaskDescriptorToId(task_descriptor);
std::set<std::string>::iterator default_iter = default_ids.find(task_id);
if (default_iter != default_ids.end()) {
default_handlers.push_back(handler);
......@@ -558,7 +560,7 @@ FileBrowserHandlerList FindDefaultFileBrowserHandlers(
}
// Remember the first fallback handler.
if (!fallback_handler && IsFallbackFileBrowserHandler(handler))
if (!fallback_handler && IsFallbackFileBrowserHandler(task_descriptor))
fallback_handler = handler;
}
......
......@@ -38,10 +38,10 @@ namespace file_browser_handlers {
// Tasks are stored as a vector in order of priorities.
typedef std::vector<const FileBrowserHandler*> FileBrowserHandlerList;
// Returns true if the given file browser handler should be used as a
// fallback. Such handlers are Files.app's internal handlers as well as quick
// office extensions.
bool IsFallbackFileBrowserHandler(const FileBrowserHandler* handler);
// Returns true if the given task is a fallback file browser handler. Such
// handlers are Files.app's internal handlers as well as quick office
// extensions.
bool IsFallbackFileBrowserHandler(const file_tasks::TaskDescriptor& task);
// Finds file browser handlers set as default from |common_tasks| for
// |file_list|. If no handlers are set as default, choose the the firstly
......
......@@ -244,12 +244,14 @@ bool OpenFileWithHandler(Profile* profile, const base::FilePath& file_path) {
profile, file_path, url, mime_type, default_task_id);
}
std::string handler_task_id = file_tasks::MakeTaskID(
handler->extension_id(),
file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER,
handler->id());
const file_tasks::TaskDescriptor task_descriptor(
handler->extension_id(),
file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER,
handler->id());
const std::string handler_task_id =
file_tasks::TaskDescriptorToId(task_descriptor);
if (handler_task_id != default_task_id &&
!file_browser_handlers::IsFallbackFileBrowserHandler(handler) &&
!file_browser_handlers::IsFallbackFileBrowserHandler(task_descriptor) &&
OpenFileWithFileHandler(
profile, file_path, url, mime_type, default_task_id)) {
return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment