| Index: chrome/browser/chromeos/file_manager/file_tasks_unittest.cc
|
| diff --git a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc
|
| index 21be58d98a9b1083a7d7e6bb13e1a81ae73e8284..c165b5a279459ad955b6f86392de9954a5bf7750 100644
|
| --- a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc
|
| +++ b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc
|
| @@ -65,7 +65,8 @@ TEST(FileManagerFileTasksTest,
|
| "action-id"),
|
| "task title",
|
| GURL("http://example.com/icon.png"),
|
| - true /* is_default */);
|
| + true /* is_default */,
|
| + false /* is_generic_file_handler */);
|
|
|
| const std::string task_id =
|
| TaskDescriptorToId(full_descriptor.task_descriptor());
|
| @@ -83,7 +84,8 @@ TEST(FileManagerFileTasksTest,
|
| "action-id"),
|
| "task title",
|
| GURL(), // No icon URL.
|
| - false /* is_default */);
|
| + false /* is_default */,
|
| + false /* is_generic_file_handler */);
|
|
|
| const std::string task_id =
|
| TaskDescriptorToId(full_descriptor.task_descriptor());
|
| @@ -267,12 +269,14 @@ TEST(FileManagerFileTasksTest, ChooseAndSetDefaultTask_MultipleTasks) {
|
| text_app_task,
|
| "Text.app",
|
| GURL("http://example.com/text_app.png"),
|
| - false /* is_default */));
|
| + false /* is_default */,
|
| + false /* is_generic_file_handler */));
|
| tasks.push_back(FullTaskDescriptor(
|
| nice_app_task,
|
| "Nice.app",
|
| GURL("http://example.com/nice_app.png"),
|
| - false /* is_default */));
|
| + false /* is_default */,
|
| + false /* is_generic_file_handler */));
|
| PathAndMimeTypeSet path_mime_set;
|
| path_mime_set.insert(std::make_pair(
|
| base::FilePath::FromUTF8Unsafe("foo.txt"),
|
| @@ -334,7 +338,8 @@ TEST(FileManagerFileTasksTest, ChooseAndSetDefaultTask_FallbackFileBrowser) {
|
| files_app_task,
|
| "View in browser",
|
| GURL("http://example.com/some_icon.png"),
|
| - false /* is_default */));
|
| + false /* is_default */,
|
| + false /* is_generic_file_handler */));
|
| PathAndMimeTypeSet path_mime_set;
|
| path_mime_set.insert(std::make_pair(
|
| base::FilePath::FromUTF8Unsafe("foo.txt"),
|
| @@ -794,5 +799,144 @@ TEST_F(FileManagerFileTasksComplexTest, FindAllTypesOfTasks_GoogleDocument) {
|
| EXPECT_EQ(kFileManagerAppId, tasks[0].task_descriptor().app_id);
|
| }
|
|
|
| +TEST_F(FileManagerFileTasksComplexTest, FindFileHandlerTask_Generic) {
|
| + // Since we want to keep the order of the result as foo,bar,baz,qux,
|
| + // keep the ids in alphabetical order.
|
| + const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph";
|
| + const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca";
|
| + const char kBazId[] = "plifkpkakemokpflgbnnigcoldgcbdmc";
|
| + const char kQuxId[] = "pmifkpkakgkadkkhcmhgnigmmifgpaph";
|
| +
|
| + // Foo app provides file handler for text/plain and all file types.
|
| + extensions::ExtensionBuilder foo_app;
|
| + foo_app.SetManifest(extensions::DictionaryBuilder()
|
| + .Set("name", "Foo")
|
| + .Set("version", "1.0.0")
|
| + .Set("manifest_version", 2)
|
| + .Set("app", extensions::DictionaryBuilder()
|
| + .Set("background", extensions::DictionaryBuilder()
|
| + .Set("scripts", extensions::ListBuilder()
|
| + .Append("background.js"))))
|
| + .Set("file_handlers",
|
| + extensions::DictionaryBuilder()
|
| + .Set("any",
|
| + extensions::DictionaryBuilder()
|
| + .Set("types", extensions::ListBuilder()
|
| + .Append("*/*")))
|
| + .Set("text",
|
| + extensions::DictionaryBuilder()
|
| + .Set("types", extensions::ListBuilder()
|
| + .Append("text/plain")))));
|
| + foo_app.SetID(kFooId);
|
| + extension_service_->AddExtension(foo_app.Build().get());
|
| +
|
| + // Bar app provides file handler for .txt and not provide generic file
|
| + // handler.
|
| + extensions::ExtensionBuilder bar_app;
|
| + bar_app.SetManifest(extensions::DictionaryBuilder()
|
| + .Set("name", "Bar")
|
| + .Set("version", "1.0.0")
|
| + .Set("manifest_version", 2)
|
| + .Set("app", extensions::DictionaryBuilder()
|
| + .Set("background", extensions::DictionaryBuilder()
|
| + .Set("scripts", extensions::ListBuilder()
|
| + .Append("background.js"))))
|
| + .Set("file_handlers",
|
| + extensions::DictionaryBuilder()
|
| + .Set("text",
|
| + extensions::DictionaryBuilder()
|
| + .Set("extensions", extensions::ListBuilder()
|
| + .Append("txt")))));
|
| + bar_app.SetID(kBarId);
|
| + extension_service_->AddExtension(bar_app.Build().get());
|
| +
|
| + // Baz app provides file handler for all extensions and images.
|
| + extensions::ExtensionBuilder baz_app;
|
| + baz_app.SetManifest(extensions::DictionaryBuilder()
|
| + .Set("name", "Baz")
|
| + .Set("version", "1.0.0")
|
| + .Set("manifest_version", 2)
|
| + .Set("app", extensions::DictionaryBuilder()
|
| + .Set("background", extensions::DictionaryBuilder()
|
| + .Set("scripts", extensions::ListBuilder()
|
| + .Append("background.js"))))
|
| + .Set("file_handlers",
|
| + extensions::DictionaryBuilder()
|
| + .Set("any",
|
| + extensions::DictionaryBuilder()
|
| + .Set("extensions", extensions::ListBuilder()
|
| + .Append("*")
|
| + .Append("bar")))
|
| + .Set("image",
|
| + extensions::DictionaryBuilder()
|
| + .Set("types", extensions::ListBuilder()
|
| + .Append("image/*")))));
|
| + baz_app.SetID(kBazId);
|
| + extension_service_->AddExtension(baz_app.Build().get());
|
| +
|
| + // Qux app provides file handler for all types.
|
| + extensions::ExtensionBuilder qux_app;
|
| + qux_app.SetManifest(extensions::DictionaryBuilder()
|
| + .Set("name", "Qux")
|
| + .Set("version", "1.0.0")
|
| + .Set("manifest_version", 2)
|
| + .Set("app", extensions::DictionaryBuilder()
|
| + .Set("background", extensions::DictionaryBuilder()
|
| + .Set("scripts", extensions::ListBuilder()
|
| + .Append("background.js"))))
|
| + .Set("file_handlers",
|
| + extensions::DictionaryBuilder()
|
| + .Set("any",
|
| + extensions::DictionaryBuilder()
|
| + .Set("types", extensions::ListBuilder()
|
| + .Append("*")))));
|
| + qux_app.SetID(kQuxId);
|
| + extension_service_->AddExtension(qux_app.Build().get());
|
| +
|
| + // Test case with .txt file
|
| + PathAndMimeTypeSet txt_path_mime_set;
|
| + txt_path_mime_set.insert(
|
| + std::make_pair(
|
| + drive::util::GetDriveMountPointPath(&test_profile_).AppendASCII(
|
| + "foo.txt"),
|
| + "text/plain"));
|
| + std::vector<FullTaskDescriptor> txt_result;
|
| + FindFileHandlerTasks(&test_profile_, txt_path_mime_set, &txt_result);
|
| + EXPECT_EQ(4U, txt_result.size());
|
| + // Foo app provides a handler for text/plain.
|
| + EXPECT_EQ("Foo", txt_result[0].task_title());
|
| + EXPECT_FALSE(txt_result[0].is_generic_file_handler());
|
| + // Bar app provides a handler for .txt.
|
| + EXPECT_EQ("Bar", txt_result[1].task_title());
|
| + EXPECT_FALSE(txt_result[1].is_generic_file_handler());
|
| + // Baz app provides a handler for all extensions.
|
| + EXPECT_EQ("Baz", txt_result[2].task_title());
|
| + EXPECT_TRUE(txt_result[2].is_generic_file_handler());
|
| + // Qux app provides a handler for all types.
|
| + EXPECT_EQ("Qux", txt_result[3].task_title());
|
| + EXPECT_TRUE(txt_result[3].is_generic_file_handler());
|
| +
|
| + // Test case with .jpg file
|
| + PathAndMimeTypeSet jpg_path_mime_set;
|
| + jpg_path_mime_set.insert(
|
| + std::make_pair(
|
| + drive::util::GetDriveMountPointPath(&test_profile_).AppendASCII(
|
| + "foo.jpg"),
|
| + "image/jpeg"));
|
| + std::vector<FullTaskDescriptor> jpg_result;
|
| + FindFileHandlerTasks(&test_profile_, jpg_path_mime_set, &jpg_result);
|
| + EXPECT_EQ(3U, jpg_result.size());
|
| + // Foo app provides a handler for all types.
|
| + EXPECT_EQ("Foo", jpg_result[0].task_title());
|
| + EXPECT_TRUE(jpg_result[0].is_generic_file_handler());
|
| + // Baz app provides a handler for image/*. A partial wildcarded handler is
|
| + // treated as non-generic handler.
|
| + EXPECT_EQ("Baz", jpg_result[1].task_title());
|
| + EXPECT_FALSE(jpg_result[1].is_generic_file_handler());
|
| + // Qux app provides a handler for all types.
|
| + EXPECT_EQ("Qux", jpg_result[2].task_title());
|
| + EXPECT_TRUE(jpg_result[2].is_generic_file_handler());
|
| +}
|
| +
|
| } // namespace file_tasks
|
| } // namespace file_manager.
|
|
|