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

Side by Side Diff: chrome/browser/chromeos/extensions/file_browser_manifest_unittest.cc

Issue 14020002: chromeos: Move chrome/browser/chromeos/extensions/file_browser* to chrome/browser/chromeos/file_man… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sort Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/strings/string_number_conversions.h"
6 #include "chrome/browser/chromeos/extensions/file_browser_handler.h"
7 #include "chrome/common/extensions/extension_builder.h"
8 #include "chrome/common/extensions/extension_manifest_constants.h"
9 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
10 #include "chrome/common/extensions/manifest_url_handler.h"
11 #include "chrome/common/extensions/value_builder.h"
12 #include "extensions/common/error_utils.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace errors = extension_manifest_errors;
16
17 using extensions::DictionaryBuilder;
18 using extensions::Extension;
19 using extensions::ExtensionBuilder;
20 using extensions::ListBuilder;
21
22 namespace {
23
24 class FileBrowserHandlerManifestTest : public ExtensionManifestTest {
25 virtual void SetUp() OVERRIDE {
26 ExtensionManifestTest::SetUp();
27 (new FileBrowserHandlerParser)->Register();
28 (new extensions::URLOverridesHandler)->Register();
29 }
30 };
31
32 TEST_F(FileBrowserHandlerManifestTest, InvalidFileBrowserHandlers) {
33 Testcase testcases[] = {
34 Testcase("filebrowser_invalid_access_permission.json",
35 extensions::ErrorUtils::FormatErrorMessage(
36 errors::kInvalidFileAccessValue, base::IntToString(1))),
37 Testcase("filebrowser_invalid_access_permission_list.json",
38 errors::kInvalidFileAccessList),
39 Testcase("filebrowser_invalid_empty_access_permission_list.json",
40 errors::kInvalidFileAccessList),
41 Testcase("filebrowser_invalid_actions_1.json",
42 errors::kInvalidFileBrowserHandler),
43 Testcase("filebrowser_invalid_actions_2.json",
44 errors::kInvalidFileBrowserHandler),
45 Testcase("filebrowser_invalid_action_id.json",
46 errors::kInvalidPageActionId),
47 Testcase("filebrowser_invalid_action_title.json",
48 errors::kInvalidPageActionDefaultTitle),
49 Testcase("filebrowser_invalid_file_filters_1.json",
50 errors::kInvalidFileFiltersList),
51 Testcase("filebrowser_invalid_file_filters_2.json",
52 extensions::ErrorUtils::FormatErrorMessage(
53 errors::kInvalidFileFilterValue, base::IntToString(0))),
54 Testcase("filebrowser_invalid_file_filters_url.json",
55 extensions::ErrorUtils::FormatErrorMessage(
56 errors::kInvalidURLPatternError, "http:*.html"))
57 };
58 RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR);
59 }
60
61 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandler) {
62 scoped_refptr<const Extension> extension =
63 ExtensionBuilder()
64 .SetManifest(DictionaryBuilder()
65 .Set("name", "file browser handler test")
66 .Set("version", "1.0.0")
67 .Set("manifest_version", 2)
68 .Set("file_browser_handlers", ListBuilder()
69 .Append(DictionaryBuilder()
70 .Set("id", "ExtremelyCoolAction")
71 .Set("default_title", "Be Amazed")
72 .Set("default_icon", "icon.png")
73 .Set("file_filters", ListBuilder()
74 .Append("filesystem:*.txt")))))
75 .Build();
76
77 ASSERT_TRUE(extension.get());
78 FileBrowserHandler::List* handlers =
79 FileBrowserHandler::GetHandlers(extension);
80 ASSERT_TRUE(handlers != NULL);
81 ASSERT_EQ(handlers->size(), 1U);
82 const FileBrowserHandler* action = handlers->at(0).get();
83
84 EXPECT_EQ(action->id(), "ExtremelyCoolAction");
85 EXPECT_EQ(action->title(), "Be Amazed");
86 EXPECT_EQ(action->icon_path(), "icon.png");
87 const extensions::URLPatternSet& patterns = action->file_url_patterns();
88 ASSERT_EQ(patterns.patterns().size(), 1U);
89 EXPECT_TRUE(action->MatchesURL(
90 GURL("filesystem:chrome-extension://foo/local/test.txt")));
91 EXPECT_FALSE(action->HasCreateAccessPermission());
92 EXPECT_TRUE(action->CanRead());
93 EXPECT_TRUE(action->CanWrite());
94 }
95
96 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerMIMETypes) {
97 scoped_refptr<const Extension> extension =
98 ExtensionBuilder()
99 .SetID(extension_misc::kQuickOfficeExtensionId)
100 .SetManifest(DictionaryBuilder()
101 .Set("name", "file browser handler test")
102 .Set("version", "1.0.0")
103 .Set("manifest_version", 2)
104 .Set("file_browser_handlers", ListBuilder()
105 .Append(DictionaryBuilder()
106 .Set("id", "ID")
107 .Set("default_title", "Default title")
108 .Set("default_icon", "icon.png")
109 .Set("file_filters", ListBuilder()
110 .Append("filesystem:*.txt")))))
111 .Build();
112
113 ASSERT_TRUE(extension.get());
114 FileBrowserHandler::List* handlers =
115 FileBrowserHandler::GetHandlers(extension);
116 ASSERT_TRUE(handlers != NULL);
117 ASSERT_EQ(handlers->size(), 1U);
118 const FileBrowserHandler* action = handlers->at(0).get();
119
120 const extensions::URLPatternSet& patterns = action->file_url_patterns();
121 ASSERT_EQ(patterns.patterns().size(), 1U);
122 EXPECT_TRUE(action->MatchesURL(
123 GURL("filesystem:chrome-extension://foo/local/test.txt")));
124 }
125
126 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerWithCreate) {
127 scoped_refptr<const Extension> extension =
128 ExtensionBuilder()
129 .SetManifest(DictionaryBuilder()
130 .Set("name", "file browser handler test create")
131 .Set("version", "1.0.0")
132 .Set("manifest_version", 2)
133 .Set("file_browser_handlers", ListBuilder()
134 .Append(DictionaryBuilder()
135 .Set("id", "ID")
136 .Set("default_title", "Default title")
137 .Set("default_icon", "icon.png")
138 .Set("file_filters", ListBuilder()
139 .Append("filesystem:*.txt"))
140 .Set("file_access", ListBuilder()
141 .Append("create")))))
142 .Build();
143
144 ASSERT_TRUE(extension.get());
145 FileBrowserHandler::List* handlers =
146 FileBrowserHandler::GetHandlers(extension);
147 ASSERT_TRUE(handlers != NULL);
148 ASSERT_EQ(handlers->size(), 1U);
149 const FileBrowserHandler* action = handlers->at(0).get();
150 const extensions::URLPatternSet& patterns = action->file_url_patterns();
151
152 EXPECT_EQ(patterns.patterns().size(), 0U);
153 EXPECT_TRUE(action->HasCreateAccessPermission());
154 EXPECT_FALSE(action->CanRead());
155 EXPECT_FALSE(action->CanWrite());
156 }
157
158 TEST_F(FileBrowserHandlerManifestTest, FileManagerURLOverride) {
159 scoped_ptr<DictionaryValue> manifest_value =
160 DictionaryBuilder()
161 .Set("name", "override_files")
162 .Set("version", "1.0.0")
163 .Set("manifest_version", 2)
164 .Set("chrome_url_overrides", DictionaryBuilder()
165 .Set("files", "main.html"))
166 .Build();
167
168 // Non component extensions can't ovverride chrome://files/ URL.
169 LoadAndExpectError(Manifest(manifest_value.get(), "override_files"),
170 errors::kInvalidChromeURLOverrides);
171
172 // A component extention can override chrome://files/ URL.
173 std::string error;
174 LoadExtension(Manifest(manifest_value.get(), "override_files"),
175 &error, extensions::Manifest::COMPONENT, Extension::NO_FLAGS);
176 #if defined(FILE_MANAGER_EXTENSION)
177 EXPECT_EQ("", error);
178 #else
179 EXPECT_EQ(std::string(errors::kInvalidChromeURLOverrides), error);
180 #endif
181 }
182
183 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698