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 d6c17dd2d16ca05afc9f74cfc3694570a4358ef2..d4c2d949aeb241a3b7a1f848561b748ec755d00c 100644 |
--- a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc |
+++ b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc |
@@ -22,6 +22,7 @@ |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/testing_profile.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
+#include "extensions/browser/extension_prefs.h" |
#include "extensions/browser/extension_system.h" |
#include "extensions/common/extension_builder.h" |
#include "google_apis/drive/drive_api_parser.h" |
@@ -379,6 +380,7 @@ TEST_F(FileManagerFileTasksComplexTest, FindFileHandlerTasks) { |
// % ruby -le 'print (0...32).to_a.map{(?a + rand(16)).chr}.join' |
const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; |
const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; |
+ const char kEphemeralId[] = "opoomfdlbjcbjinalcjdjfoiikdeaoel"; |
// Foo.app can handle "text/plain" and "text/html". |
extensions::ExtensionBuilder foo_app; |
@@ -429,6 +431,38 @@ TEST_F(FileManagerFileTasksComplexTest, FindFileHandlerTasks) { |
bar_app.SetID(kBarId); |
extension_service_->AddExtension(bar_app.Build().get()); |
+ // Ephemeral.app is an ephemeral app that can handle "text/plain". |
+ // It should not ever be found as ephemeral apps cannot be file handlers. |
+ extensions::ExtensionBuilder ephemeral_app; |
+ ephemeral_app.SetManifest( |
+ extensions::DictionaryBuilder() |
+ .Set("name", "Ephemeral") |
+ .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"))))); |
+ ephemeral_app.SetID(kEphemeralId); |
+ scoped_refptr<extensions::Extension> built_ephemeral_app( |
+ ephemeral_app.Build()); |
+ extension_service_->AddExtension(built_ephemeral_app.get()); |
+ extensions::ExtensionPrefs* extension_prefs = |
+ extensions::ExtensionPrefs::Get(&test_profile_); |
+ extension_prefs->OnExtensionInstalled(built_ephemeral_app.get(), |
+ extensions::Extension::ENABLED, |
+ syncer::StringOrdinal(), |
+ extensions::kInstallFlagIsEphemeral, |
+ std::string()); |
+ |
// Find apps for a "text/plain" file. Foo.app and Bar.app should be found. |
PathAndMimeTypeSet path_mime_set; |
path_mime_set.insert( |
@@ -483,6 +517,7 @@ TEST_F(FileManagerFileTasksComplexTest, FindFileBrowserHandlerTasks) { |
// Copied from FindFileHandlerTasks test above. |
const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; |
const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; |
+ const char kEphemeralId[] = "opoomfdlbjcbjinalcjdjfoiikdeaoel"; |
// Foo.app can handle ".txt" and ".html". |
// This one is an extension, and has "file_browser_handlers" |
@@ -520,6 +555,35 @@ TEST_F(FileManagerFileTasksComplexTest, FindFileBrowserHandlerTasks) { |
bar_app.SetID(kBarId); |
extension_service_->AddExtension(bar_app.Build().get()); |
+ // Ephemeral.app is an ephemeral app that can handle ".txt". |
+ // It should not ever be found as ephemeral apps cannot be file browser |
+ // handlers. |
+ extensions::ExtensionBuilder ephemeral_app; |
+ ephemeral_app.SetManifest( |
+ extensions::DictionaryBuilder() |
+ .Set("name", "Ephemeral") |
+ .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"))))); |
+ ephemeral_app.SetID(kEphemeralId); |
+ scoped_refptr<extensions::Extension> built_ephemeral_app( |
+ ephemeral_app.Build()); |
+ extension_service_->AddExtension(built_ephemeral_app.get()); |
+ extensions::ExtensionPrefs* extension_prefs = |
+ extensions::ExtensionPrefs::Get(&test_profile_); |
+ extension_prefs->OnExtensionInstalled(built_ephemeral_app.get(), |
+ extensions::Extension::ENABLED, |
+ syncer::StringOrdinal(), |
+ extensions::kInstallFlagIsEphemeral, |
+ std::string()); |
+ |
// Find apps for a ".txt" file. Foo.app and Bar.app should be found. |
std::vector<GURL> file_urls; |
file_urls.push_back(GURL("filesystem:chrome-extension://id/dir/foo.txt")); |