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

Side by Side Diff: chrome/common/extensions/permissions/permissions_data_unittest.cc

Issue 980353003: Extensions: Switch to new permission message system, part I (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 <vector> 5 #include <vector>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/common/extensions/extension_test_util.h" 11 #include "chrome/common/extensions/extension_test_util.h"
12 #include "components/crx_file/id_util.h" 12 #include "components/crx_file/id_util.h"
13 #include "content/public/common/socket_permission_request.h" 13 #include "content/public/common/socket_permission_request.h"
14 #include "extensions/common/error_utils.h" 14 #include "extensions/common/error_utils.h"
15 #include "extensions/common/extension.h" 15 #include "extensions/common/extension.h"
16 #include "extensions/common/extension_builder.h" 16 #include "extensions/common/extension_builder.h"
17 #include "extensions/common/manifest.h" 17 #include "extensions/common/manifest.h"
18 #include "extensions/common/manifest_constants.h" 18 #include "extensions/common/manifest_constants.h"
19 #include "extensions/common/permissions/api_permission.h" 19 #include "extensions/common/permissions/api_permission.h"
20 #include "extensions/common/permissions/permission_message_test_util.h"
20 #include "extensions/common/permissions/permission_set.h" 21 #include "extensions/common/permissions/permission_set.h"
21 #include "extensions/common/permissions/permissions_data.h" 22 #include "extensions/common/permissions/permissions_data.h"
22 #include "extensions/common/permissions/socket_permission.h" 23 #include "extensions/common/permissions/socket_permission.h"
23 #include "extensions/common/switches.h" 24 #include "extensions/common/switches.h"
24 #include "extensions/common/url_pattern_set.h" 25 #include "extensions/common/url_pattern_set.h"
25 #include "extensions/common/value_builder.h" 26 #include "extensions/common/value_builder.h"
26 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
27 #include "url/gurl.h" 28 #include "url/gurl.h"
28 29
29 using base::UTF16ToUTF8; 30 using base::UTF16ToUTF8;
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 286
286 base::CommandLine::ForCurrentProcess()->AppendSwitch( 287 base::CommandLine::ForCurrentProcess()->AppendSwitch(
287 switches::kExtensionsOnChromeURLs); 288 switches::kExtensionsOnChromeURLs);
288 // Enabling the switch should allow all extensions to access chrome urls. 289 // Enabling the switch should allow all extensions to access chrome urls.
289 CheckRestrictedUrls(extension.get(), false); 290 CheckRestrictedUrls(extension.get(), false);
290 } 291 }
291 292
292 TEST(PermissionsDataTest, GetPermissionMessages_ManyAPIPermissions) { 293 TEST(PermissionsDataTest, GetPermissionMessages_ManyAPIPermissions) {
293 scoped_refptr<Extension> extension; 294 scoped_refptr<Extension> extension;
294 extension = LoadManifest("permissions", "many-apis.json"); 295 extension = LoadManifest("permissions", "many-apis.json");
295 std::vector<base::string16> warnings =
296 extension->permissions_data()->GetPermissionMessageStrings();
297 // Warning for "tabs" is suppressed by "history" permission. 296 // Warning for "tabs" is suppressed by "history" permission.
298 ASSERT_EQ(5u, warnings.size()); 297 std::vector<std::string> expected_messages;
299 EXPECT_EQ("Read and change your data on api.flickr.com", 298 expected_messages.push_back("Read and change your data on api.flickr.com");
300 UTF16ToUTF8(warnings[0])); 299 expected_messages.push_back("Read and change your bookmarks");
301 EXPECT_EQ("Read and change your bookmarks", UTF16ToUTF8(warnings[1])); 300 expected_messages.push_back("Detect your physical location");
302 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); 301 expected_messages.push_back("Read and change your browsing history");
303 EXPECT_EQ("Read and change your browsing history", UTF16ToUTF8(warnings[3])); 302 expected_messages.push_back("Manage your apps, extensions, and themes");
304 EXPECT_EQ("Manage your apps, extensions, and themes", 303 EXPECT_TRUE(VerifyPermissionMessages(extension->permissions_data(),
305 UTF16ToUTF8(warnings[4])); 304 expected_messages, false));
306 } 305 }
307 306
308 TEST(PermissionsDataTest, GetPermissionMessages_ManyHostsPermissions) { 307 TEST(PermissionsDataTest, GetPermissionMessages_ManyHostsPermissions) {
309 scoped_refptr<Extension> extension; 308 scoped_refptr<Extension> extension;
310 extension = LoadManifest("permissions", "more-than-3-hosts.json"); 309 extension = LoadManifest("permissions", "more-than-3-hosts.json");
311 std::vector<base::string16> warnings = 310 std::vector<std::string> submessages;
312 extension->permissions_data()->GetPermissionMessageStrings(); 311 submessages.push_back("www.a.com");
313 std::vector<base::string16> warnings_details = 312 submessages.push_back("www.b.com");
314 extension->permissions_data()->GetPermissionMessageDetailsStrings(); 313 submessages.push_back("www.c.com");
315 ASSERT_EQ(1u, warnings.size()); 314 submessages.push_back("www.d.com");
316 ASSERT_EQ(1u, warnings_details.size()); 315 submessages.push_back("www.e.com");
317 EXPECT_EQ("Read and change your data on a number of websites", 316 EXPECT_TRUE(VerifyOnePermissionMessageWithSubmessages(
318 UTF16ToUTF8(warnings[0])); 317 extension->permissions_data(),
319 EXPECT_EQ("www.a.com\nwww.b.com\nwww.c.com\nwww.d.com\nwww.e.com", 318 "Read and change your data on a number of websites", submessages));
320 UTF16ToUTF8(warnings_details[0]));
321 } 319 }
322 320
323 TEST(PermissionsDataTest, GetPermissionMessages_LocationApiPermission) { 321 TEST(PermissionsDataTest, GetPermissionMessages_LocationApiPermission) {
324 scoped_refptr<Extension> extension; 322 scoped_refptr<Extension> extension;
325 extension = LoadManifest("permissions", 323 extension = LoadManifest("permissions",
326 "location-api.json", 324 "location-api.json",
327 Manifest::COMPONENT, 325 Manifest::COMPONENT,
328 Extension::NO_FLAGS); 326 Extension::NO_FLAGS);
329 std::vector<base::string16> warnings = 327 EXPECT_TRUE(VerifyOnePermissionMessage(extension->permissions_data(),
330 extension->permissions_data()->GetPermissionMessageStrings(); 328 "Detect your physical location"));
331 ASSERT_EQ(1u, warnings.size());
332 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0]));
333 } 329 }
334 330
335 TEST(PermissionsDataTest, GetPermissionMessages_ManyHosts) { 331 TEST(PermissionsDataTest, GetPermissionMessages_ManyHosts) {
336 scoped_refptr<Extension> extension; 332 scoped_refptr<Extension> extension;
337 extension = LoadManifest("permissions", "many-hosts.json"); 333 extension = LoadManifest("permissions", "many-hosts.json");
338 std::vector<base::string16> warnings = 334 EXPECT_TRUE(VerifyOnePermissionMessage(
339 extension->permissions_data()->GetPermissionMessageStrings(); 335 extension->permissions_data(),
340 ASSERT_EQ(1u, warnings.size()); 336 "Read and change your data on encrypted.google.com and www.google.com"));
341 EXPECT_EQ(
342 "Read and change your data on encrypted.google.com and www.google.com",
343 UTF16ToUTF8(warnings[0]));
344 } 337 }
345 338
346 TEST(PermissionsDataTest, GetPermissionMessages_Plugins) { 339 TEST(PermissionsDataTest, GetPermissionMessages_Plugins) {
347 scoped_refptr<Extension> extension; 340 scoped_refptr<Extension> extension;
348 extension = LoadManifest("permissions", "plugins.json"); 341 extension = LoadManifest("permissions", "plugins.json");
349 std::vector<base::string16> warnings =
350 extension->permissions_data()->GetPermissionMessageStrings();
351 // We don't parse the plugins key on Chrome OS, so it should not ask for any 342 // We don't parse the plugins key on Chrome OS, so it should not ask for any
352 // permissions. 343 // permissions.
353 #if defined(OS_CHROMEOS) 344 #if defined(OS_CHROMEOS)
354 ASSERT_EQ(0u, warnings.size()); 345 EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data()));
355 #else 346 #else
356 ASSERT_EQ(1u, warnings.size()); 347 EXPECT_TRUE(VerifyOnePermissionMessage(
357 EXPECT_EQ( 348 extension->permissions_data(),
358 "Read and change all your data on your computer and the websites you " 349 "Read and change all your data on your computer and the websites you "
359 "visit", 350 "visit"));
360 UTF16ToUTF8(warnings[0]));
361 #endif 351 #endif
362 } 352 }
363 353
364 TEST(PermissionsDataTest, ExternalFiles) { 354 TEST(PermissionsDataTest, ExternalFiles) {
365 GURL external_file("externalfile:abc"); 355 GURL external_file("externalfile:abc");
366 scoped_refptr<const Extension> extension; 356 scoped_refptr<const Extension> extension;
367 357
368 // A regular extension shouldn't get access to externalfile: scheme URLs 358 // A regular extension shouldn't get access to externalfile: scheme URLs
369 // even with <all_urls> specified. 359 // even with <all_urls> specified.
370 extension = GetExtensionWithHostPermission( 360 extension = GetExtensionWithHostPermission(
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 767
778 permissions_data->ClearTabSpecificPermissions(1); 768 permissions_data->ClearTabSpecificPermissions(1);
779 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1).get()); 769 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1).get());
780 770
781 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); 771 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0));
782 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); 772 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1));
783 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 773 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
784 } 774 }
785 775
786 } // namespace extensions 776 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698