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

Side by Side Diff: chrome/common/extensions/api/extension_api_unittest.cc

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments/TODOs Created 7 years, 11 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "chrome/common/extensions/api/extension_api.h" 5 #include "chrome/common/extensions/api/extension_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 { 226 {
227 std::set<std::string> permissions; 227 std::set<std::string> permissions;
228 permissions.insert("storage"); 228 permissions.insert("storage");
229 permissions.insert("history"); 229 permissions.insert("history");
230 extension = CreateExtensionWithPermissions(permissions); 230 extension = CreateExtensionWithPermissions(permissions);
231 } 231 }
232 232
233 scoped_ptr<ExtensionAPI> extension_api( 233 scoped_ptr<ExtensionAPI> extension_api(
234 ExtensionAPI::CreateWithDefaultConfiguration()); 234 ExtensionAPI::CreateWithDefaultConfiguration());
235 235
236 scoped_ptr<std::set<std::string> > privileged_apis = 236 std::set<std::string> privileged_apis = extension_api->GetAPIsForContext(
237 extension_api->GetAPIsForContext( 237 Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
238 Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
239 238
240 scoped_ptr<std::set<std::string> > unprivileged_apis = 239 std::set<std::string> unprivileged_apis = extension_api->GetAPIsForContext(
241 extension_api->GetAPIsForContext( 240 Feature::UNBLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
242 Feature::UNBLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
243 241
244 scoped_ptr<std::set<std::string> > content_script_apis = 242 std::set<std::string> content_script_apis = extension_api->GetAPIsForContext(
245 extension_api->GetAPIsForContext( 243 Feature::CONTENT_SCRIPT_CONTEXT, extension.get(), GURL());
246 Feature::CONTENT_SCRIPT_CONTEXT, extension.get(), GURL());
247 244
248 // "storage" is completely unprivileged. 245 // "storage" is completely unprivileged.
249 EXPECT_EQ(1u, privileged_apis->count("storage")); 246 EXPECT_EQ(1u, privileged_apis.count("storage"));
250 EXPECT_EQ(1u, unprivileged_apis->count("storage")); 247 EXPECT_EQ(1u, unprivileged_apis.count("storage"));
251 EXPECT_EQ(1u, content_script_apis->count("storage")); 248 EXPECT_EQ(1u, content_script_apis.count("storage"));
252 249
253 // "extension" is partially unprivileged. 250 // "extension" is partially unprivileged.
254 EXPECT_EQ(1u, privileged_apis->count("extension")); 251 EXPECT_EQ(1u, privileged_apis.count("extension"));
255 EXPECT_EQ(1u, unprivileged_apis->count("extension")); 252 EXPECT_EQ(1u, unprivileged_apis.count("extension"));
256 EXPECT_EQ(1u, content_script_apis->count("extension")); 253 EXPECT_EQ(1u, content_script_apis.count("extension"));
257 254
258 // "history" is entirely privileged. 255 // "history" is entirely privileged.
259 EXPECT_EQ(1u, privileged_apis->count("history")); 256 EXPECT_EQ(1u, privileged_apis.count("history"));
260 EXPECT_EQ(0u, unprivileged_apis->count("history")); 257 EXPECT_EQ(0u, unprivileged_apis.count("history"));
261 EXPECT_EQ(0u, content_script_apis->count("history")); 258 EXPECT_EQ(0u, content_script_apis.count("history"));
262 } 259 }
263 260
264 TEST(ExtensionAPI, ExtensionWithDependencies) { 261 TEST(ExtensionAPI, ExtensionWithDependencies) {
265 // Extension with the "ttsEngine" permission but not the "tts" permission; it 262 // Extension with the "ttsEngine" permission but not the "tts" permission; it
266 // must load TTS. 263 // must load TTS.
267 { 264 {
268 scoped_refptr<Extension> extension = 265 scoped_refptr<Extension> extension =
269 CreateExtensionWithPermission("ttsEngine"); 266 CreateExtensionWithPermission("ttsEngine");
270 scoped_ptr<ExtensionAPI> api( 267 scoped_ptr<ExtensionAPI> api(
271 ExtensionAPI::CreateWithDefaultConfiguration()); 268 ExtensionAPI::CreateWithDefaultConfiguration());
272 scoped_ptr<std::set<std::string> > apis = api->GetAPIsForContext( 269 std::set<std::string> apis = api->GetAPIsForContext(
273 Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL()); 270 Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
274 EXPECT_EQ(1u, apis->count("ttsEngine")); 271 EXPECT_EQ(1u, apis.count("ttsEngine"));
275 EXPECT_EQ(1u, apis->count("tts")); 272 EXPECT_EQ(1u, apis.count("tts"));
276 } 273 }
277 274
278 // Conversely, extension with the "tts" permission but not the "ttsEngine" 275 // Conversely, extension with the "tts" permission but not the "ttsEngine"
279 // permission shouldn't get the "ttsEngine" permission. 276 // permission shouldn't get the "ttsEngine" permission.
280 { 277 {
281 scoped_refptr<Extension> extension = 278 scoped_refptr<Extension> extension =
282 CreateExtensionWithPermission("tts"); 279 CreateExtensionWithPermission("tts");
283 scoped_ptr<ExtensionAPI> api( 280 scoped_ptr<ExtensionAPI> api(
284 ExtensionAPI::CreateWithDefaultConfiguration()); 281 ExtensionAPI::CreateWithDefaultConfiguration());
285 scoped_ptr<std::set<std::string> > apis = api->GetAPIsForContext( 282 std::set<std::string> apis = api->GetAPIsForContext(
286 Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL()); 283 Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
287 EXPECT_EQ(0u, apis->count("ttsEngine")); 284 EXPECT_EQ(0u, apis.count("ttsEngine"));
288 EXPECT_EQ(1u, apis->count("tts")); 285 EXPECT_EQ(1u, apis.count("tts"));
289 } 286 }
290 } 287 }
291 288
292 bool MatchesURL( 289 bool MatchesURL(
293 ExtensionAPI* api, const std::string& api_name, const std::string& url) { 290 ExtensionAPI* api, const std::string& api_name, const std::string& url) {
294 scoped_ptr<std::set<std::string> > apis = 291 std::set<std::string> apis =
295 api->GetAPIsForContext(Feature::WEB_PAGE_CONTEXT, NULL, GURL(url)); 292 api->GetAPIsForContext(Feature::WEB_PAGE_CONTEXT, NULL, GURL(url));
296 return apis->count(api_name); 293 return apis.count(api_name);
297 } 294 }
298 295
299 TEST(ExtensionAPI, URLMatching) { 296 TEST(ExtensionAPI, URLMatching) {
300 scoped_ptr<ExtensionAPI> api(ExtensionAPI::CreateWithDefaultConfiguration()); 297 scoped_ptr<ExtensionAPI> api(ExtensionAPI::CreateWithDefaultConfiguration());
301 298
302 // "app" API is available to all URLs that content scripts can be injected. 299 // "app" API is available to all URLs that content scripts can be injected.
303 EXPECT_TRUE(MatchesURL(api.get(), "app", "http://example.com/example.html")); 300 EXPECT_TRUE(MatchesURL(api.get(), "app", "http://example.com/example.html"));
304 EXPECT_TRUE(MatchesURL(api.get(), "app", "https://blah.net")); 301 EXPECT_TRUE(MatchesURL(api.get(), "app", "https://blah.net"));
305 EXPECT_TRUE(MatchesURL(api.get(), "app", "file://somefile.html")); 302 EXPECT_TRUE(MatchesURL(api.get(), "app", "file://somefile.html"));
306 303
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 GetDictionaryFromList(dict, "parameters", 0, &sub_dict); 479 GetDictionaryFromList(dict, "parameters", 0, &sub_dict);
483 EXPECT_TRUE(sub_dict->GetString("$ref", &type)); 480 EXPECT_TRUE(sub_dict->GetString("$ref", &type));
484 EXPECT_EQ("test.foo.TestType", type); 481 EXPECT_EQ("test.foo.TestType", type);
485 GetDictionaryFromList(dict, "parameters", 1, &sub_dict); 482 GetDictionaryFromList(dict, "parameters", 1, &sub_dict);
486 EXPECT_TRUE(sub_dict->GetString("$ref", &type)); 483 EXPECT_TRUE(sub_dict->GetString("$ref", &type));
487 EXPECT_EQ("fully.qualified.Type", type); 484 EXPECT_EQ("fully.qualified.Type", type);
488 } 485 }
489 486
490 } // namespace 487 } // namespace
491 } // namespace extensions 488 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698