Index: chrome/common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc |
diff --git a/chrome/common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc b/chrome/common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc |
index ba36d5ea6fc9ee399ff911e19079228e0ed4f7d0..cfcaeef4e7466036b9ab695392784c2db69d835a 100644 |
--- a/chrome/common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc |
+++ b/chrome/common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc |
@@ -24,6 +24,53 @@ namespace { |
class FileBrowserHandlerManifestTest : public ChromeManifestTest { |
}; |
+#if !defined(OS_CHROMEOS) |
+TEST_F(FileBrowserHandlerManifestTest, PermissionNotAllowedOnNonChromeOS) { |
+ RunTestcase( |
+ Testcase("filebrowser_valid.json", |
+ "'fileBrowserHandler' is not allowed for specified platform."), |
+ EXPECT_TYPE_WARNING); |
+} |
+#else |
+ |
+TEST_F(FileBrowserHandlerManifestTest, PermissionAllowed) { |
+ RunTestcase(Testcase("filebrowser_valid.json"), EXPECT_TYPE_SUCCESS); |
+} |
+ |
+TEST_F(FileBrowserHandlerManifestTest, GetHandlersRequiresPermission) { |
+ extensions::DictionaryBuilder bad_manifest_builder; |
+ bad_manifest_builder.Set("name", "Foo") |
+ .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") |
+ .Append("filesystem:*.html")))); |
+ scoped_ptr<base::DictionaryValue> bad_manifest_value( |
+ bad_manifest_builder.Build()); |
+ |
+ // Create a good manifest by extending the bad one with the missing |
+ // permission. |
+ extensions::DictionaryBuilder good_manifest_builder( |
+ *make_scoped_ptr(bad_manifest_value->DeepCopy()).get()); |
+ good_manifest_builder.Set( |
+ "permissions", extensions::ListBuilder().Append("fileBrowserHandler")); |
+ |
+ extensions::ExtensionBuilder bad_app_builder; |
+ bad_app_builder.SetManifest(bad_manifest_value.Pass()); |
+ scoped_refptr<extensions::Extension> bad_app(bad_app_builder.Build()); |
+ EXPECT_FALSE(FileBrowserHandler::GetHandlers(bad_app.get())); |
+ |
+ extensions::ExtensionBuilder good_app_builder; |
+ good_app_builder.SetManifest(good_manifest_builder); |
+ scoped_refptr<extensions::Extension> good_app(good_app_builder.Build()); |
+ EXPECT_TRUE(FileBrowserHandler::GetHandlers(good_app.get())); |
+} |
+ |
TEST_F(FileBrowserHandlerManifestTest, InvalidFileBrowserHandlers) { |
Testcase testcases[] = { |
Testcase("filebrowser_invalid_access_permission.json", |
@@ -56,18 +103,22 @@ TEST_F(FileBrowserHandlerManifestTest, InvalidFileBrowserHandlers) { |
TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandler) { |
scoped_refptr<const Extension> extension = |
ExtensionBuilder() |
- .SetManifest(DictionaryBuilder() |
+ .SetManifest( |
+ DictionaryBuilder() |
.Set("name", "file browser handler test") |
.Set("version", "1.0.0") |
.Set("manifest_version", 2) |
- .Set("file_browser_handlers", ListBuilder() |
- .Append(DictionaryBuilder() |
- .Set("id", "ExtremelyCoolAction") |
- .Set("default_title", "Be Amazed") |
- .Set("default_icon", "icon.png") |
- .Set("file_filters", ListBuilder() |
- .Append("filesystem:*.txt"))))) |
- .Build(); |
+ .Set("permissions", |
+ extensions::ListBuilder().Append("fileBrowserHandler")) |
+ .Set("file_browser_handlers", |
+ ListBuilder().Append( |
+ DictionaryBuilder() |
+ .Set("id", "ExtremelyCoolAction") |
+ .Set("default_title", "Be Amazed") |
+ .Set("default_icon", "icon.png") |
+ .Set("file_filters", ListBuilder().Append( |
+ "filesystem:*.txt"))))) |
+ .Build(); |
ASSERT_TRUE(extension.get()); |
FileBrowserHandler::List* handlers = |
@@ -91,19 +142,23 @@ TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandler) { |
TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerMIMETypes) { |
scoped_refptr<const Extension> extension = |
ExtensionBuilder() |
- .SetID(extension_misc::kQuickOfficeExtensionId) |
- .SetManifest(DictionaryBuilder() |
+ .SetID(extension_misc::kQuickOfficeExtensionId) |
+ .SetManifest( |
+ DictionaryBuilder() |
.Set("name", "file browser handler test") |
.Set("version", "1.0.0") |
.Set("manifest_version", 2) |
- .Set("file_browser_handlers", ListBuilder() |
- .Append(DictionaryBuilder() |
- .Set("id", "ID") |
- .Set("default_title", "Default title") |
- .Set("default_icon", "icon.png") |
- .Set("file_filters", ListBuilder() |
- .Append("filesystem:*.txt"))))) |
- .Build(); |
+ .Set("permissions", |
+ extensions::ListBuilder().Append("fileBrowserHandler")) |
+ .Set("file_browser_handlers", |
+ ListBuilder().Append( |
+ DictionaryBuilder() |
+ .Set("id", "ID") |
+ .Set("default_title", "Default title") |
+ .Set("default_icon", "icon.png") |
+ .Set("file_filters", ListBuilder().Append( |
+ "filesystem:*.txt"))))) |
+ .Build(); |
ASSERT_TRUE(extension.get()); |
FileBrowserHandler::List* handlers = |
@@ -121,20 +176,24 @@ TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerMIMETypes) { |
TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerWithCreate) { |
scoped_refptr<const Extension> extension = |
ExtensionBuilder() |
- .SetManifest(DictionaryBuilder() |
+ .SetManifest( |
+ DictionaryBuilder() |
.Set("name", "file browser handler test create") |
.Set("version", "1.0.0") |
.Set("manifest_version", 2) |
- .Set("file_browser_handlers", ListBuilder() |
- .Append(DictionaryBuilder() |
- .Set("id", "ID") |
- .Set("default_title", "Default title") |
- .Set("default_icon", "icon.png") |
- .Set("file_filters", ListBuilder() |
- .Append("filesystem:*.txt")) |
- .Set("file_access", ListBuilder() |
- .Append("create"))))) |
- .Build(); |
+ .Set("permissions", |
+ extensions::ListBuilder().Append("fileBrowserHandler")) |
+ .Set("file_browser_handlers", |
+ ListBuilder().Append( |
+ DictionaryBuilder() |
+ .Set("id", "ID") |
+ .Set("default_title", "Default title") |
+ .Set("default_icon", "icon.png") |
+ .Set("file_filters", |
+ ListBuilder().Append("filesystem:*.txt")) |
+ .Set("file_access", |
+ ListBuilder().Append("create"))))) |
+ .Build(); |
ASSERT_TRUE(extension.get()); |
FileBrowserHandler::List* handlers = |
@@ -149,5 +208,6 @@ TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerWithCreate) { |
EXPECT_FALSE(action->CanRead()); |
EXPECT_FALSE(action->CanWrite()); |
} |
+#endif |
} // namespace |