Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3508)

Unified Diff: chrome/common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc

Issue 1030133002: Move the check for fileBrowserHandler permission to FileBrowserHandler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed test for OS != OS_CHROMEOS. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698