OLD | NEW |
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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/json/json_file_value_serializer.h" | 6 #include "base/json/json_file_value_serializer.h" |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "chrome/common/chrome_paths.h" | 10 #include "chrome/common/chrome_paths.h" |
11 #include "chrome/common/chrome_switches.h" | 11 #include "chrome/common/chrome_switches.h" |
12 #include "chrome/common/extensions/extension_test_util.h" | 12 #include "chrome/common/extensions/extension_test_util.h" |
13 #include "chrome/common/extensions/features/feature_channel.h" | 13 #include "chrome/common/extensions/features/feature_channel.h" |
14 #include "chrome/common/extensions/permissions/chrome_permission_message_provide
r.h" | 14 #include "chrome/common/extensions/permissions/chrome_permission_message_provide
r.h" |
15 #include "extensions/common/error_utils.h" | 15 #include "extensions/common/error_utils.h" |
16 #include "extensions/common/extension.h" | 16 #include "extensions/common/extension.h" |
17 #include "extensions/common/extension_builder.h" | 17 #include "extensions/common/extension_builder.h" |
18 #include "extensions/common/permissions/permission_message_provider.h" | 18 #include "extensions/common/permissions/permission_message_provider.h" |
19 #include "extensions/common/permissions/permission_message_util.h" | 19 #include "extensions/common/permissions/permission_message_util.h" |
20 #include "extensions/common/permissions/permission_set.h" | 20 #include "extensions/common/permissions/permission_set.h" |
21 #include "extensions/common/permissions/permissions_data.h" | 21 #include "extensions/common/permissions/permissions_data.h" |
22 #include "extensions/common/permissions/permissions_info.h" | 22 #include "extensions/common/permissions/permissions_info.h" |
23 #include "extensions/common/permissions/socket_permission.h" | 23 #include "extensions/common/permissions/socket_permission.h" |
24 #include "extensions/common/value_builder.h" | 24 #include "extensions/common/value_builder.h" |
25 #include "grit/generated_resources.h" | 25 #include "grit/generated_resources.h" |
| 26 #include "grit/extensions_strings.h" |
26 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
27 #include "ui/base/l10n/l10n_util.h" | 28 #include "ui/base/l10n/l10n_util.h" |
28 | 29 |
29 using extension_test_util::LoadManifest; | 30 using extension_test_util::LoadManifest; |
30 | 31 |
31 namespace extensions { | 32 namespace extensions { |
32 | 33 |
33 namespace { | 34 namespace { |
34 | 35 |
35 static void AddPattern(URLPatternSet* extent, const std::string& pattern) { | 36 static void AddPattern(URLPatternSet* extent, const std::string& pattern) { |
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
903 new PermissionSet(api_permissions, ManifestPermissionSet(), | 904 new PermissionSet(api_permissions, ManifestPermissionSet(), |
904 URLPatternSet(), URLPatternSet())); | 905 URLPatternSet(), URLPatternSet())); |
905 PermissionMessages messages = | 906 PermissionMessages messages = |
906 PermissionMessageProvider::Get()->GetPermissionMessages( | 907 PermissionMessageProvider::Get()->GetPermissionMessages( |
907 permissions, Manifest::TYPE_EXTENSION); | 908 permissions, Manifest::TYPE_EXTENSION); |
908 EXPECT_EQ(1u, messages.size()); | 909 EXPECT_EQ(1u, messages.size()); |
909 EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); | 910 EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); |
910 } | 911 } |
911 } | 912 } |
912 | 913 |
| 914 TEST(PermissionsTest, AccessToDevicesMessages) { |
| 915 { |
| 916 APIPermissionSet api_permissions; |
| 917 api_permissions.insert(APIPermission::kUsb); |
| 918 scoped_refptr<PermissionSet> permissions( |
| 919 new PermissionSet(api_permissions, |
| 920 ManifestPermissionSet(), |
| 921 URLPatternSet(), |
| 922 URLPatternSet())); |
| 923 std::vector<base::string16> messages = |
| 924 PermissionMessageProvider::Get()->GetWarningMessages( |
| 925 permissions, Manifest::TYPE_EXTENSION); |
| 926 EXPECT_EQ(1u, messages.size()); |
| 927 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB), |
| 928 messages[0]); |
| 929 } |
| 930 { |
| 931 APIPermissionSet api_permissions; |
| 932 api_permissions.insert(APIPermission::kSerial); |
| 933 scoped_refptr<PermissionSet> permissions( |
| 934 new PermissionSet(api_permissions, |
| 935 ManifestPermissionSet(), |
| 936 URLPatternSet(), |
| 937 URLPatternSet())); |
| 938 std::vector<base::string16> messages = |
| 939 PermissionMessageProvider::Get()->GetWarningMessages( |
| 940 permissions, Manifest::TYPE_EXTENSION); |
| 941 EXPECT_EQ(1u, messages.size()); |
| 942 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL), |
| 943 messages[0]); |
| 944 } |
| 945 { |
| 946 APIPermissionSet api_permissions; |
| 947 api_permissions.insert(APIPermission::kUsb); |
| 948 api_permissions.insert(APIPermission::kSerial); |
| 949 scoped_refptr<PermissionSet> permissions( |
| 950 new PermissionSet(api_permissions, |
| 951 ManifestPermissionSet(), |
| 952 URLPatternSet(), |
| 953 URLPatternSet())); |
| 954 std::vector<base::string16> messages = |
| 955 PermissionMessageProvider::Get()->GetWarningMessages( |
| 956 permissions, Manifest::TYPE_EXTENSION); |
| 957 EXPECT_EQ(1u, messages.size()); |
| 958 EXPECT_EQ( |
| 959 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL), |
| 960 messages[0]); |
| 961 } |
| 962 { |
| 963 scoped_refptr<Extension> extension = |
| 964 LoadManifest("permissions", "access_to_devices_bluetooth.json"); |
| 965 const PermissionMessageProvider* provider = |
| 966 PermissionMessageProvider::Get(); |
| 967 PermissionSet* set = const_cast<PermissionSet*>( |
| 968 extension->permissions_data()->active_permissions().get()); |
| 969 std::vector<base::string16> warnings = |
| 970 provider->GetWarningMessages(set, extension->GetType()); |
| 971 EXPECT_EQ(1u, warnings.size()); |
| 972 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH), |
| 973 warnings[0]); |
| 974 |
| 975 // Test Bluetooth and Serial |
| 976 set->apis_.insert(APIPermission::kSerial); |
| 977 warnings = provider->GetWarningMessages(set, extension->GetType()); |
| 978 EXPECT_EQ(1u, warnings.size()); |
| 979 EXPECT_EQ(l10n_util::GetStringUTF16( |
| 980 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL), |
| 981 warnings[0]); |
| 982 set->apis_.erase(APIPermission::kSerial); |
| 983 |
| 984 // Test USB and Bluetooth |
| 985 set->apis_.insert(APIPermission::kUsb); |
| 986 warnings = provider->GetWarningMessages(set, extension->GetType()); |
| 987 EXPECT_EQ(1u, warnings.size()); |
| 988 EXPECT_EQ( |
| 989 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_BLUETOOTH), |
| 990 warnings[0]); |
| 991 |
| 992 // Test USB, Bluetooth and Serial |
| 993 set->apis_.insert(APIPermission::kSerial); |
| 994 warnings = provider->GetWarningMessages(set, extension->GetType()); |
| 995 EXPECT_EQ(1u, warnings.size()); |
| 996 EXPECT_EQ( |
| 997 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_DEVICES), |
| 998 warnings[0]); |
| 999 } |
| 1000 } |
| 1001 |
913 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { | 1002 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { |
914 APIPermissionSet write_api_permissions; | 1003 APIPermissionSet write_api_permissions; |
915 write_api_permissions.insert(APIPermission::kFileSystemWrite); | 1004 write_api_permissions.insert(APIPermission::kFileSystemWrite); |
916 scoped_refptr<PermissionSet> write_permissions( | 1005 scoped_refptr<PermissionSet> write_permissions( |
917 new PermissionSet(write_api_permissions, ManifestPermissionSet(), | 1006 new PermissionSet(write_api_permissions, ManifestPermissionSet(), |
918 URLPatternSet(), URLPatternSet())); | 1007 URLPatternSet(), URLPatternSet())); |
919 | 1008 |
920 APIPermissionSet directory_api_permissions; | 1009 APIPermissionSet directory_api_permissions; |
921 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); | 1010 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); |
922 scoped_refptr<PermissionSet> directory_permissions( | 1011 scoped_refptr<PermissionSet> directory_permissions( |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 | 1184 |
1096 TEST(PermissionsTest, GetWarningMessages_Serial) { | 1185 TEST(PermissionsTest, GetWarningMessages_Serial) { |
1097 scoped_refptr<Extension> extension = | 1186 scoped_refptr<Extension> extension = |
1098 LoadManifest("permissions", "serial.json"); | 1187 LoadManifest("permissions", "serial.json"); |
1099 | 1188 |
1100 EXPECT_TRUE(extension->is_platform_app()); | 1189 EXPECT_TRUE(extension->is_platform_app()); |
1101 EXPECT_TRUE( | 1190 EXPECT_TRUE( |
1102 extension->permissions_data()->HasAPIPermission(APIPermission::kSerial)); | 1191 extension->permissions_data()->HasAPIPermission(APIPermission::kSerial)); |
1103 std::vector<base::string16> warnings = | 1192 std::vector<base::string16> warnings = |
1104 extension->permissions_data()->GetPermissionMessageStrings(); | 1193 extension->permissions_data()->GetPermissionMessageStrings(); |
1105 EXPECT_TRUE( | 1194 EXPECT_TRUE(Contains(warnings, "Access your serial device(s)")); |
1106 Contains(warnings, "Use serial devices attached to your computer")); | |
1107 ASSERT_EQ(1u, warnings.size()); | 1195 ASSERT_EQ(1u, warnings.size()); |
1108 } | 1196 } |
1109 | 1197 |
1110 TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) { | 1198 TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) { |
1111 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); | 1199 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); |
1112 | 1200 |
1113 scoped_refptr<Extension> extension = | 1201 scoped_refptr<Extension> extension = |
1114 LoadManifest("permissions", "socket_any_host.json"); | 1202 LoadManifest("permissions", "socket_any_host.json"); |
1115 EXPECT_TRUE(extension->is_platform_app()); | 1203 EXPECT_TRUE(extension->is_platform_app()); |
1116 EXPECT_TRUE( | 1204 EXPECT_TRUE( |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1669 scoped_refptr<const PermissionSet> permissions_dwr( | 1757 scoped_refptr<const PermissionSet> permissions_dwr( |
1670 extension_dwr->permissions_data()->active_permissions()); | 1758 extension_dwr->permissions_data()->active_permissions()); |
1671 | 1759 |
1672 EXPECT_FALSE(PermissionMessageProvider::Get()-> | 1760 EXPECT_FALSE(PermissionMessageProvider::Get()-> |
1673 IsPrivilegeIncrease(permissions.get(), | 1761 IsPrivilegeIncrease(permissions.get(), |
1674 permissions_dwr.get(), | 1762 permissions_dwr.get(), |
1675 extension->GetType())); | 1763 extension->GetType())); |
1676 } | 1764 } |
1677 | 1765 |
1678 } // namespace extensions | 1766 } // namespace extensions |
OLD | NEW |