| OLD | NEW |
| 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" |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 "239.255.255.250", 1900)); | 153 "239.255.255.250", 1900)); |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { | 156 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { |
| 157 scoped_refptr<Extension> extension; | 157 scoped_refptr<Extension> extension; |
| 158 extension = LoadManifest("permissions", "many-apis.json"); | 158 extension = LoadManifest("permissions", "many-apis.json"); |
| 159 std::vector<base::string16> warnings = | 159 std::vector<base::string16> warnings = |
| 160 PermissionsData::GetPermissionMessageStrings(extension.get()); | 160 PermissionsData::GetPermissionMessageStrings(extension.get()); |
| 161 // Warning for "tabs" is suppressed by "history" permission. | 161 // Warning for "tabs" is suppressed by "history" permission. |
| 162 ASSERT_EQ(5u, warnings.size()); | 162 ASSERT_EQ(5u, warnings.size()); |
| 163 EXPECT_EQ("Access your data on api.flickr.com", | 163 EXPECT_EQ("Read and modify your data on api.flickr.com", |
| 164 UTF16ToUTF8(warnings[0])); | 164 UTF16ToUTF8(warnings[0])); |
| 165 EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); | 165 EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); |
| 166 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); | 166 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); |
| 167 EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); | 167 EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); |
| 168 EXPECT_EQ("Manage your apps, extensions, and themes", | 168 EXPECT_EQ("Manage your apps, extensions, and themes", |
| 169 UTF16ToUTF8(warnings[4])); | 169 UTF16ToUTF8(warnings[4])); |
| 170 } | 170 } |
| 171 | 171 |
| 172 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHostsPermissions) { | 172 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHostsPermissions) { |
| 173 scoped_refptr<Extension> extension; | 173 scoped_refptr<Extension> extension; |
| 174 extension = LoadManifest("permissions", "more-than-3-hosts.json"); | 174 extension = LoadManifest("permissions", "more-than-3-hosts.json"); |
| 175 std::vector<base::string16> warnings = | 175 std::vector<base::string16> warnings = |
| 176 PermissionsData::GetPermissionMessageStrings(extension.get()); | 176 PermissionsData::GetPermissionMessageStrings(extension.get()); |
| 177 std::vector<base::string16> warnings_details = | 177 std::vector<base::string16> warnings_details = |
| 178 PermissionsData::GetPermissionMessageDetailsStrings(extension.get()); | 178 PermissionsData::GetPermissionMessageDetailsStrings(extension.get()); |
| 179 ASSERT_EQ(1u, warnings.size()); | 179 ASSERT_EQ(1u, warnings.size()); |
| 180 ASSERT_EQ(1u, warnings_details.size()); | 180 ASSERT_EQ(1u, warnings_details.size()); |
| 181 EXPECT_EQ("Access your data on 5 websites", UTF16ToUTF8(warnings[0])); | 181 EXPECT_EQ("Read and modify your data on 5 websites", |
| 182 UTF16ToUTF8(warnings[0])); |
| 182 EXPECT_EQ("- www.a.com\n- www.b.com\n- www.c.com\n- www.d.com\n- www.e.com", | 183 EXPECT_EQ("- www.a.com\n- www.b.com\n- www.c.com\n- www.d.com\n- www.e.com", |
| 183 UTF16ToUTF8(warnings_details[0])); | 184 UTF16ToUTF8(warnings_details[0])); |
| 184 } | 185 } |
| 185 | 186 |
| 186 TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { | 187 TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { |
| 187 scoped_refptr<Extension> extension; | 188 scoped_refptr<Extension> extension; |
| 188 extension = LoadManifest("permissions", | 189 extension = LoadManifest("permissions", |
| 189 "location-api.json", | 190 "location-api.json", |
| 190 Manifest::COMPONENT, | 191 Manifest::COMPONENT, |
| 191 Extension::NO_FLAGS); | 192 Extension::NO_FLAGS); |
| 192 std::vector<base::string16> warnings = | 193 std::vector<base::string16> warnings = |
| 193 PermissionsData::GetPermissionMessageStrings(extension.get()); | 194 PermissionsData::GetPermissionMessageStrings(extension.get()); |
| 194 ASSERT_EQ(1u, warnings.size()); | 195 ASSERT_EQ(1u, warnings.size()); |
| 195 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); | 196 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); |
| 196 } | 197 } |
| 197 | 198 |
| 198 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { | 199 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { |
| 199 scoped_refptr<Extension> extension; | 200 scoped_refptr<Extension> extension; |
| 200 extension = LoadManifest("permissions", "many-hosts.json"); | 201 extension = LoadManifest("permissions", "many-hosts.json"); |
| 201 std::vector<base::string16> warnings = | 202 std::vector<base::string16> warnings = |
| 202 PermissionsData::GetPermissionMessageStrings(extension.get()); | 203 PermissionsData::GetPermissionMessageStrings(extension.get()); |
| 203 ASSERT_EQ(1u, warnings.size()); | 204 ASSERT_EQ(1u, warnings.size()); |
| 204 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", | 205 EXPECT_EQ( |
| 205 UTF16ToUTF8(warnings[0])); | 206 "Read and modify your data on encrypted.google.com and www.google.com", |
| 207 UTF16ToUTF8(warnings[0])); |
| 206 } | 208 } |
| 207 | 209 |
| 208 TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { | 210 TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { |
| 209 scoped_refptr<Extension> extension; | 211 scoped_refptr<Extension> extension; |
| 210 extension = LoadManifest("permissions", "plugins.json"); | 212 extension = LoadManifest("permissions", "plugins.json"); |
| 211 std::vector<base::string16> warnings = | 213 std::vector<base::string16> warnings = |
| 212 PermissionsData::GetPermissionMessageStrings(extension.get()); | 214 PermissionsData::GetPermissionMessageStrings(extension.get()); |
| 213 // We don't parse the plugins key on Chrome OS, so it should not ask for any | 215 // We don't parse the plugins key on Chrome OS, so it should not ask for any |
| 214 // permissions. | 216 // permissions. |
| 215 #if defined(OS_CHROMEOS) | 217 #if defined(OS_CHROMEOS) |
| 216 ASSERT_EQ(0u, warnings.size()); | 218 ASSERT_EQ(0u, warnings.size()); |
| 217 #else | 219 #else |
| 218 ASSERT_EQ(1u, warnings.size()); | 220 ASSERT_EQ(1u, warnings.size()); |
| 219 EXPECT_EQ("Access all data on your computer and the websites you visit", | 221 EXPECT_EQ( |
| 220 UTF16ToUTF8(warnings[0])); | 222 "Read and modify all your data on your computer and the websites you " |
| 223 "visit", |
| 224 UTF16ToUTF8(warnings[0])); |
| 221 #endif | 225 #endif |
| 222 } | 226 } |
| 223 | 227 |
| 224 // Base class for testing the CanExecuteScriptOnPage and CanCaptureVisiblePage | 228 // Base class for testing the CanExecuteScriptOnPage and CanCaptureVisiblePage |
| 225 // methods of Extension for extensions with various permissions. | 229 // methods of Extension for extensions with various permissions. |
| 226 class ExtensionScriptAndCaptureVisibleTest : public testing::Test { | 230 class ExtensionScriptAndCaptureVisibleTest : public testing::Test { |
| 227 protected: | 231 protected: |
| 228 ExtensionScriptAndCaptureVisibleTest() | 232 ExtensionScriptAndCaptureVisibleTest() |
| 229 : http_url("http://www.google.com"), | 233 : http_url("http://www.google.com"), |
| 230 http_url_with_path("http://www.google.com/index.html"), | 234 http_url_with_path("http://www.google.com/index.html"), |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 PermissionsData::ClearTabSpecificPermissions(extension.get(), 1); | 636 PermissionsData::ClearTabSpecificPermissions(extension.get(), 1); |
| 633 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1) | 637 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1) |
| 634 .get()); | 638 .get()); |
| 635 | 639 |
| 636 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); | 640 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
| 637 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); | 641 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
| 638 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); | 642 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
| 639 } | 643 } |
| 640 | 644 |
| 641 } // namespace extensions | 645 } // namespace extensions |
| OLD | NEW |