diff options
author | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-11 04:49:16 +0000 |
---|---|---|
committer | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-11 04:49:16 +0000 |
commit | 8135ba931ffc9676430e9deed4b43a0ba89aece4 (patch) | |
tree | 3a1be6eae050e47fca0b49f0f8bb588b5871c3c7 /chrome/browser/chromeos/file_manager/file_tasks_unittest.cc | |
parent | 00133a5ee5b85a77eafe4805cdde79284afa417c (diff) | |
download | chromium_src-8135ba931ffc9676430e9deed4b43a0ba89aece4.zip chromium_src-8135ba931ffc9676430e9deed4b43a0ba89aece4.tar.gz chromium_src-8135ba931ffc9676430e9deed4b43a0ba89aece4.tar.bz2 |
file_manager: Add a unit test for FindAllTypesOfTasks()
Along the way, add a parameter to FindAllTypesOfTasks() to make this
function testable.
BUG=269929
TEST=none
R=kinaba@chromium.org
Review URL: https://codereview.chromium.org/26221007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228116 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/file_manager/file_tasks_unittest.cc')
-rw-r--r-- | chrome/browser/chromeos/file_manager/file_tasks_unittest.cc | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc index 16aa88f..6024efa 100644 --- a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc +++ b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc @@ -552,5 +552,104 @@ TEST_F(FileManagerFileTasksComplexTest, FindFileBrowserHandlerTasks) { ASSERT_TRUE(tasks.empty()); } +// Test that all kinds of apps (file handler, file browser handler, and Drive +// app) are returned. +TEST_F(FileManagerFileTasksComplexTest, FindAllTypesOfTasks) { + // kFooId and kBarId copied from FindFileHandlerTasks test above. + const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; + const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; + const char kBazId[] = "plifkpkakemokpflgbnnigcoldgcbdmc"; + + // Foo.app can handle "text/plain". + // This is a packaged app (file handler). + 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("text", + extensions::DictionaryBuilder() + .Set("title", "Text") + .Set("types", + extensions::ListBuilder() + .Append("text/plain"))))); + foo_app.SetID(kFooId); + extension_service_->AddExtension(foo_app.Build().get()); + + // Bar.app can only handle ".txt". + // This is an extension (file browser handler). + extensions::ExtensionBuilder bar_app; + bar_app.SetManifest(extensions::DictionaryBuilder() + .Set("name", "Bar") + .Set("version", "1.0.0") + .Set("manifest_version", 2) + .Set("file_browser_handlers", + extensions::ListBuilder() + .Append(extensions::DictionaryBuilder() + .Set("id", "open") + .Set("default_title", "open") + .Set("file_filters", + extensions::ListBuilder() + .Append("filesystem:*.txt"))))); + bar_app.SetID(kBarId); + extension_service_->AddExtension(bar_app.Build().get()); + + // Baz.app can handle "text/plain". + // This is a Drive app. + scoped_ptr<google_apis::AppResource> baz_app(new google_apis::AppResource); + baz_app->set_product_url( + GURL("https://chrome.google.com/webstore/detail/baz_app_id")); + baz_app->set_application_id(kBazId); + baz_app->set_name("Baz"); + baz_app->set_object_type("baz_object_type"); + ScopedVector<std::string> baz_mime_types; + baz_mime_types.push_back(new std::string("text/plain")); + baz_app->set_primary_mimetypes(baz_mime_types.Pass()); + // Set up DriveAppRegistry. + ScopedVector<google_apis::AppResource> app_resources; + app_resources.push_back(baz_app.release()); + google_apis::AppList app_list; + app_list.set_items(app_resources.Pass()); + drive::DriveAppRegistry drive_app_registry(NULL); + drive_app_registry.UpdateFromAppList(app_list); + + // Find apps for "foo.txt". All apps should be found. + PathAndMimeTypeSet path_mime_set; + std::vector<GURL> file_urls; + path_mime_set.insert( + std::make_pair( + drive::util::GetDriveMountPointPath().AppendASCII("foo.txt"), + "text/plain")); + file_urls.push_back(GURL("filesystem:chrome-extension://id/dir/foo.txt")); + + std::vector<FullTaskDescriptor> tasks; + FindAllTypesOfTasks(&test_profile_, + &drive_app_registry, + path_mime_set, + file_urls, + &tasks); + ASSERT_EQ(3U, tasks.size()); + + // Sort the app IDs, as the order is not guaranteed. + std::vector<std::string> app_ids; + app_ids.push_back(tasks[0].task_descriptor().app_id); + app_ids.push_back(tasks[1].task_descriptor().app_id); + app_ids.push_back(tasks[2].task_descriptor().app_id); + std::sort(app_ids.begin(), app_ids.end()); + // Confirm that all apps are found. + EXPECT_EQ(kFooId, app_ids[0]); + EXPECT_EQ(kBarId, app_ids[1]); + EXPECT_EQ(kBazId, app_ids[2]); +} + } // namespace file_tasks } // namespace file_manager. |