OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <utility> | 5 #include <utility> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "chrome/common/extensions/api/file_browser_handlers/file_browser_handle
r.h" | 9 #include "chrome/common/extensions/api/file_browser_handlers/file_browser_handle
r.h" |
10 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" | 10 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 TEST_F(FileBrowserHandlerManifestTest, PermissionAllowed) { | 30 TEST_F(FileBrowserHandlerManifestTest, PermissionAllowed) { |
31 RunTestcase(Testcase("filebrowser_valid.json"), EXPECT_TYPE_SUCCESS); | 31 RunTestcase(Testcase("filebrowser_valid.json"), EXPECT_TYPE_SUCCESS); |
32 } | 32 } |
33 | 33 |
34 TEST_F(FileBrowserHandlerManifestTest, GetHandlersRequiresPermission) { | 34 TEST_F(FileBrowserHandlerManifestTest, GetHandlersRequiresPermission) { |
35 extensions::DictionaryBuilder bad_manifest_builder; | 35 extensions::DictionaryBuilder bad_manifest_builder; |
36 bad_manifest_builder.Set("name", "Foo") | 36 bad_manifest_builder.Set("name", "Foo") |
37 .Set("version", "1.0.0") | 37 .Set("version", "1.0.0") |
38 .Set("manifest_version", 2) | 38 .Set("manifest_version", 2) |
39 .Set("file_browser_handlers", | 39 .Set("file_browser_handlers", |
40 std::move(extensions::ListBuilder().Append(std::move( | 40 extensions::ListBuilder() |
41 extensions::DictionaryBuilder() | 41 .Append(extensions::DictionaryBuilder() |
42 .Set("id", "open") | 42 .Set("id", "open") |
43 .Set("default_title", "open") | 43 .Set("default_title", "open") |
44 .Set("file_filters", | 44 .Set("file_filters", extensions::ListBuilder() |
45 std::move(extensions::ListBuilder() | 45 .Append("filesystem:*.txt") |
46 .Append("filesystem:*.txt") | 46 .Append("filesystem:*.html") |
47 .Append("filesystem:*.html"))))))); | 47 .Build()) |
| 48 .Build()) |
| 49 .Build()); |
48 scoped_ptr<base::DictionaryValue> bad_manifest_value( | 50 scoped_ptr<base::DictionaryValue> bad_manifest_value( |
49 bad_manifest_builder.Build()); | 51 bad_manifest_builder.Build()); |
50 | 52 |
51 // Create a good manifest by extending the bad one with the missing | 53 // Create a good manifest by extending the bad one with the missing |
52 // permission. | 54 // permission. |
53 extensions::DictionaryBuilder good_manifest_builder( | 55 extensions::DictionaryBuilder good_manifest_builder(*bad_manifest_value); |
54 *make_scoped_ptr(bad_manifest_value->DeepCopy()).get()); | |
55 good_manifest_builder.Set( | 56 good_manifest_builder.Set( |
56 "permissions", | 57 "permissions", |
57 std::move(extensions::ListBuilder().Append("fileBrowserHandler"))); | 58 extensions::ListBuilder().Append("fileBrowserHandler").Build()); |
58 | 59 |
59 extensions::ExtensionBuilder bad_app_builder; | 60 extensions::ExtensionBuilder bad_app_builder; |
60 bad_app_builder.SetManifest(std::move(bad_manifest_value)); | 61 bad_app_builder.SetManifest(std::move(bad_manifest_value)); |
61 scoped_refptr<extensions::Extension> bad_app(bad_app_builder.Build()); | 62 scoped_refptr<extensions::Extension> bad_app(bad_app_builder.Build()); |
62 EXPECT_FALSE(FileBrowserHandler::GetHandlers(bad_app.get())); | 63 EXPECT_FALSE(FileBrowserHandler::GetHandlers(bad_app.get())); |
63 | 64 |
64 extensions::ExtensionBuilder good_app_builder; | 65 extensions::ExtensionBuilder good_app_builder; |
65 good_app_builder.SetManifest(std::move(good_manifest_builder)); | 66 good_app_builder.SetManifest(good_manifest_builder.Build()); |
66 scoped_refptr<extensions::Extension> good_app(good_app_builder.Build()); | 67 scoped_refptr<extensions::Extension> good_app(good_app_builder.Build()); |
67 EXPECT_TRUE(FileBrowserHandler::GetHandlers(good_app.get())); | 68 EXPECT_TRUE(FileBrowserHandler::GetHandlers(good_app.get())); |
68 } | 69 } |
69 | 70 |
70 TEST_F(FileBrowserHandlerManifestTest, InvalidFileBrowserHandlers) { | 71 TEST_F(FileBrowserHandlerManifestTest, InvalidFileBrowserHandlers) { |
71 Testcase testcases[] = { | 72 Testcase testcases[] = { |
72 Testcase("filebrowser_invalid_access_permission.json", | 73 Testcase("filebrowser_invalid_access_permission.json", |
73 extensions::ErrorUtils::FormatErrorMessage( | 74 extensions::ErrorUtils::FormatErrorMessage( |
74 errors::kInvalidFileAccessValue, base::IntToString(1))), | 75 errors::kInvalidFileAccessValue, base::IntToString(1))), |
75 Testcase("filebrowser_invalid_access_permission_list.json", | 76 Testcase("filebrowser_invalid_access_permission_list.json", |
(...skipping 21 matching lines...) Expand all Loading... |
97 RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR); | 98 RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR); |
98 RunTestcase(Testcase("filebrowser_missing_permission.json", | 99 RunTestcase(Testcase("filebrowser_missing_permission.json", |
99 errors::kInvalidFileBrowserHandlerMissingPermission), | 100 errors::kInvalidFileBrowserHandlerMissingPermission), |
100 EXPECT_TYPE_WARNING); | 101 EXPECT_TYPE_WARNING); |
101 } | 102 } |
102 | 103 |
103 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandler) { | 104 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandler) { |
104 scoped_refptr<const Extension> extension = | 105 scoped_refptr<const Extension> extension = |
105 ExtensionBuilder() | 106 ExtensionBuilder() |
106 .SetManifest( | 107 .SetManifest( |
107 std::move(DictionaryBuilder() | 108 DictionaryBuilder() |
108 .Set("name", "file browser handler test") | 109 .Set("name", "file browser handler test") |
109 .Set("version", "1.0.0") | 110 .Set("version", "1.0.0") |
110 .Set("manifest_version", 2) | 111 .Set("manifest_version", 2) |
111 .Set("permissions", | 112 .Set("permissions", extensions::ListBuilder() |
112 std::move(extensions::ListBuilder().Append( | 113 .Append("fileBrowserHandler") |
113 "fileBrowserHandler"))) | 114 .Build()) |
114 .Set("file_browser_handlers", | 115 .Set("file_browser_handlers", |
115 std::move(ListBuilder().Append(std::move( | 116 ListBuilder() |
116 DictionaryBuilder() | 117 .Append(DictionaryBuilder() |
117 .Set("id", "ExtremelyCoolAction") | 118 .Set("id", "ExtremelyCoolAction") |
118 .Set("default_title", "Be Amazed") | 119 .Set("default_title", "Be Amazed") |
119 .Set("default_icon", "icon.png") | 120 .Set("default_icon", "icon.png") |
120 .Set("file_filters", | 121 .Set("file_filters", |
121 std::move(ListBuilder().Append( | 122 ListBuilder() |
122 "filesystem:*.txt"))))))))) | 123 .Append("filesystem:*.txt") |
| 124 .Build()) |
| 125 .Build()) |
| 126 .Build()) |
| 127 .Build()) |
123 .Build(); | 128 .Build(); |
124 | 129 |
125 ASSERT_TRUE(extension.get()); | 130 ASSERT_TRUE(extension.get()); |
126 FileBrowserHandler::List* handlers = | 131 FileBrowserHandler::List* handlers = |
127 FileBrowserHandler::GetHandlers(extension.get()); | 132 FileBrowserHandler::GetHandlers(extension.get()); |
128 ASSERT_TRUE(handlers != NULL); | 133 ASSERT_TRUE(handlers != NULL); |
129 ASSERT_EQ(1U, handlers->size()); | 134 ASSERT_EQ(1U, handlers->size()); |
130 const FileBrowserHandler* action = handlers->at(0).get(); | 135 const FileBrowserHandler* action = handlers->at(0).get(); |
131 | 136 |
132 EXPECT_EQ("ExtremelyCoolAction", action->id()); | 137 EXPECT_EQ("ExtremelyCoolAction", action->id()); |
133 EXPECT_EQ("Be Amazed", action->title()); | 138 EXPECT_EQ("Be Amazed", action->title()); |
134 EXPECT_EQ("icon.png", action->icon_path()); | 139 EXPECT_EQ("icon.png", action->icon_path()); |
135 const extensions::URLPatternSet& patterns = action->file_url_patterns(); | 140 const extensions::URLPatternSet& patterns = action->file_url_patterns(); |
136 ASSERT_EQ(1U, patterns.patterns().size()); | 141 ASSERT_EQ(1U, patterns.patterns().size()); |
137 EXPECT_TRUE(action->MatchesURL( | 142 EXPECT_TRUE(action->MatchesURL( |
138 GURL("filesystem:chrome-extension://foo/local/test.txt"))); | 143 GURL("filesystem:chrome-extension://foo/local/test.txt"))); |
139 EXPECT_FALSE(action->HasCreateAccessPermission()); | 144 EXPECT_FALSE(action->HasCreateAccessPermission()); |
140 EXPECT_TRUE(action->CanRead()); | 145 EXPECT_TRUE(action->CanRead()); |
141 EXPECT_TRUE(action->CanWrite()); | 146 EXPECT_TRUE(action->CanWrite()); |
142 } | 147 } |
143 | 148 |
144 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerMIMETypes) { | 149 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerMIMETypes) { |
145 scoped_refptr<const Extension> extension = | 150 scoped_refptr<const Extension> extension = |
146 ExtensionBuilder() | 151 ExtensionBuilder() |
147 .SetID(extension_misc::kQuickOfficeExtensionId) | 152 .SetID(extension_misc::kQuickOfficeExtensionId) |
148 .SetManifest( | 153 .SetManifest( |
149 std::move(DictionaryBuilder() | 154 DictionaryBuilder() |
150 .Set("name", "file browser handler test") | 155 .Set("name", "file browser handler test") |
151 .Set("version", "1.0.0") | 156 .Set("version", "1.0.0") |
152 .Set("manifest_version", 2) | 157 .Set("manifest_version", 2) |
153 .Set("permissions", | 158 .Set("permissions", extensions::ListBuilder() |
154 std::move(extensions::ListBuilder().Append( | 159 .Append("fileBrowserHandler") |
155 "fileBrowserHandler"))) | 160 .Build()) |
156 .Set("file_browser_handlers", | 161 .Set("file_browser_handlers", |
157 std::move(ListBuilder().Append(std::move( | 162 ListBuilder() |
158 DictionaryBuilder() | 163 .Append(DictionaryBuilder() |
159 .Set("id", "ID") | 164 .Set("id", "ID") |
160 .Set("default_title", "Default title") | 165 .Set("default_title", "Default title") |
161 .Set("default_icon", "icon.png") | 166 .Set("default_icon", "icon.png") |
162 .Set("file_filters", | 167 .Set("file_filters", |
163 std::move(ListBuilder().Append( | 168 ListBuilder() |
164 "filesystem:*.txt"))))))))) | 169 .Append("filesystem:*.txt") |
| 170 .Build()) |
| 171 .Build()) |
| 172 .Build()) |
| 173 .Build()) |
165 .Build(); | 174 .Build(); |
166 | 175 |
167 ASSERT_TRUE(extension.get()); | 176 ASSERT_TRUE(extension.get()); |
168 FileBrowserHandler::List* handlers = | 177 FileBrowserHandler::List* handlers = |
169 FileBrowserHandler::GetHandlers(extension.get()); | 178 FileBrowserHandler::GetHandlers(extension.get()); |
170 ASSERT_TRUE(handlers != NULL); | 179 ASSERT_TRUE(handlers != NULL); |
171 ASSERT_EQ(1U, handlers->size()); | 180 ASSERT_EQ(1U, handlers->size()); |
172 const FileBrowserHandler* action = handlers->at(0).get(); | 181 const FileBrowserHandler* action = handlers->at(0).get(); |
173 | 182 |
174 const extensions::URLPatternSet& patterns = action->file_url_patterns(); | 183 const extensions::URLPatternSet& patterns = action->file_url_patterns(); |
175 ASSERT_EQ(1U, patterns.patterns().size()); | 184 ASSERT_EQ(1U, patterns.patterns().size()); |
176 EXPECT_TRUE(action->MatchesURL( | 185 EXPECT_TRUE(action->MatchesURL( |
177 GURL("filesystem:chrome-extension://foo/local/test.txt"))); | 186 GURL("filesystem:chrome-extension://foo/local/test.txt"))); |
178 } | 187 } |
179 | 188 |
180 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerWithCreate) { | 189 TEST_F(FileBrowserHandlerManifestTest, ValidFileBrowserHandlerWithCreate) { |
181 scoped_refptr<const Extension> extension = | 190 scoped_refptr<const Extension> extension = |
182 ExtensionBuilder() | 191 ExtensionBuilder() |
183 .SetManifest( | 192 .SetManifest( |
184 std::move(DictionaryBuilder() | 193 DictionaryBuilder() |
185 .Set("name", "file browser handler test create") | 194 .Set("name", "file browser handler test create") |
186 .Set("version", "1.0.0") | 195 .Set("version", "1.0.0") |
187 .Set("manifest_version", 2) | 196 .Set("manifest_version", 2) |
188 .Set("permissions", | 197 .Set("permissions", extensions::ListBuilder() |
189 std::move(extensions::ListBuilder().Append( | 198 .Append("fileBrowserHandler") |
190 "fileBrowserHandler"))) | 199 .Build()) |
191 .Set("file_browser_handlers", | 200 .Set("file_browser_handlers", |
192 std::move(ListBuilder().Append(std::move( | 201 ListBuilder() |
193 DictionaryBuilder() | 202 .Append( |
194 .Set("id", "ID") | 203 DictionaryBuilder() |
195 .Set("default_title", "Default title") | 204 .Set("id", "ID") |
196 .Set("default_icon", "icon.png") | 205 .Set("default_title", "Default title") |
197 .Set("file_filters", | 206 .Set("default_icon", "icon.png") |
198 std::move(ListBuilder().Append( | 207 .Set("file_filters", |
199 "filesystem:*.txt"))) | 208 ListBuilder() |
200 .Set("file_access", | 209 .Append("filesystem:*.txt") |
201 std::move(ListBuilder().Append( | 210 .Build()) |
202 "create"))))))))) | 211 .Set("file_access", |
| 212 ListBuilder().Append("create").Build()) |
| 213 .Build()) |
| 214 .Build()) |
| 215 .Build()) |
203 .Build(); | 216 .Build(); |
204 | 217 |
205 ASSERT_TRUE(extension.get()); | 218 ASSERT_TRUE(extension.get()); |
206 FileBrowserHandler::List* handlers = | 219 FileBrowserHandler::List* handlers = |
207 FileBrowserHandler::GetHandlers(extension.get()); | 220 FileBrowserHandler::GetHandlers(extension.get()); |
208 ASSERT_TRUE(handlers != NULL); | 221 ASSERT_TRUE(handlers != NULL); |
209 ASSERT_EQ(1U, handlers->size()); | 222 ASSERT_EQ(1U, handlers->size()); |
210 const FileBrowserHandler* action = handlers->at(0).get(); | 223 const FileBrowserHandler* action = handlers->at(0).get(); |
211 const extensions::URLPatternSet& patterns = action->file_url_patterns(); | 224 const extensions::URLPatternSet& patterns = action->file_url_patterns(); |
212 | 225 |
213 EXPECT_EQ(0U, patterns.patterns().size()); | 226 EXPECT_EQ(0U, patterns.patterns().size()); |
214 EXPECT_TRUE(action->HasCreateAccessPermission()); | 227 EXPECT_TRUE(action->HasCreateAccessPermission()); |
215 EXPECT_FALSE(action->CanRead()); | 228 EXPECT_FALSE(action->CanRead()); |
216 EXPECT_FALSE(action->CanWrite()); | 229 EXPECT_FALSE(action->CanWrite()); |
217 } | 230 } |
218 | 231 |
219 } // namespace | 232 } // namespace |
OLD | NEW |