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/extensions_strings.h" |
25 #include "grit/generated_resources.h" | 26 #include "grit/generated_resources.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 |
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 new PermissionSet(api_permissions, ManifestPermissionSet(), | 905 new PermissionSet(api_permissions, ManifestPermissionSet(), |
905 URLPatternSet(), URLPatternSet())); | 906 URLPatternSet(), URLPatternSet())); |
906 PermissionMessages messages = | 907 PermissionMessages messages = |
907 PermissionMessageProvider::Get()->GetPermissionMessages( | 908 PermissionMessageProvider::Get()->GetPermissionMessages( |
908 permissions, Manifest::TYPE_EXTENSION); | 909 permissions, Manifest::TYPE_EXTENSION); |
909 EXPECT_EQ(1u, messages.size()); | 910 EXPECT_EQ(1u, messages.size()); |
910 EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); | 911 EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); |
911 } | 912 } |
912 } | 913 } |
913 | 914 |
| 915 TEST(PermissionsTest, AccessToDevicesMessages) { |
| 916 { |
| 917 APIPermissionSet api_permissions; |
| 918 api_permissions.insert(APIPermission::kUsb); |
| 919 scoped_refptr<PermissionSet> permissions( |
| 920 new PermissionSet(api_permissions, |
| 921 ManifestPermissionSet(), |
| 922 URLPatternSet(), |
| 923 URLPatternSet())); |
| 924 std::vector<base::string16> messages = |
| 925 PermissionMessageProvider::Get()->GetWarningMessages( |
| 926 permissions, Manifest::TYPE_EXTENSION); |
| 927 EXPECT_EQ(1u, messages.size()); |
| 928 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB), |
| 929 messages[0]); |
| 930 } |
| 931 { |
| 932 // Testing that multiple permissions will show the one message. |
| 933 APIPermissionSet api_permissions; |
| 934 api_permissions.insert(APIPermission::kUsb); |
| 935 api_permissions.insert(APIPermission::kUsb); |
| 936 scoped_refptr<PermissionSet> permissions( |
| 937 new PermissionSet(api_permissions, |
| 938 ManifestPermissionSet(), |
| 939 URLPatternSet(), |
| 940 URLPatternSet())); |
| 941 std::vector<base::string16> messages = |
| 942 PermissionMessageProvider::Get()->GetWarningMessages( |
| 943 permissions, Manifest::TYPE_EXTENSION); |
| 944 EXPECT_EQ(1u, messages.size()); |
| 945 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB), |
| 946 messages[0]); |
| 947 } |
| 948 { |
| 949 APIPermissionSet api_permissions; |
| 950 api_permissions.insert(APIPermission::kSerial); |
| 951 scoped_refptr<PermissionSet> permissions( |
| 952 new PermissionSet(api_permissions, |
| 953 ManifestPermissionSet(), |
| 954 URLPatternSet(), |
| 955 URLPatternSet())); |
| 956 std::vector<base::string16> messages = |
| 957 PermissionMessageProvider::Get()->GetWarningMessages( |
| 958 permissions, Manifest::TYPE_EXTENSION); |
| 959 EXPECT_EQ(1u, messages.size()); |
| 960 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL), |
| 961 messages[0]); |
| 962 } |
| 963 { |
| 964 APIPermissionSet api_permissions; |
| 965 api_permissions.insert(APIPermission::kUsb); |
| 966 api_permissions.insert(APIPermission::kSerial); |
| 967 scoped_refptr<PermissionSet> permissions( |
| 968 new PermissionSet(api_permissions, |
| 969 ManifestPermissionSet(), |
| 970 URLPatternSet(), |
| 971 URLPatternSet())); |
| 972 std::vector<base::string16> messages = |
| 973 PermissionMessageProvider::Get()->GetWarningMessages( |
| 974 permissions, Manifest::TYPE_EXTENSION); |
| 975 EXPECT_EQ(1u, messages.size()); |
| 976 EXPECT_EQ( |
| 977 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL), |
| 978 messages[0]); |
| 979 } |
| 980 { |
| 981 // Testing that the same permission(s) will show one message. |
| 982 APIPermissionSet api_permissions; |
| 983 api_permissions.insert(APIPermission::kUsb); |
| 984 api_permissions.insert(APIPermission::kSerial); |
| 985 api_permissions.insert(APIPermission::kUsb); |
| 986 scoped_refptr<PermissionSet> permissions( |
| 987 new PermissionSet(api_permissions, |
| 988 ManifestPermissionSet(), |
| 989 URLPatternSet(), |
| 990 URLPatternSet())); |
| 991 std::vector<base::string16> messages = |
| 992 PermissionMessageProvider::Get()->GetWarningMessages( |
| 993 permissions, Manifest::TYPE_EXTENSION); |
| 994 EXPECT_EQ(1u, messages.size()); |
| 995 EXPECT_EQ( |
| 996 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL), |
| 997 messages[0]); |
| 998 } |
| 999 { |
| 1000 scoped_refptr<Extension> extension = |
| 1001 LoadManifest("permissions", "access_to_devices_bluetooth.json"); |
| 1002 const PermissionMessageProvider* provider = |
| 1003 PermissionMessageProvider::Get(); |
| 1004 PermissionSet* set = const_cast<PermissionSet*>( |
| 1005 extension->permissions_data()->active_permissions().get()); |
| 1006 std::vector<base::string16> warnings = |
| 1007 provider->GetWarningMessages(set, extension->GetType()); |
| 1008 EXPECT_EQ(1u, warnings.size()); |
| 1009 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH), |
| 1010 warnings[0]); |
| 1011 |
| 1012 // Test Bluetooth and Serial |
| 1013 set->apis_.insert(APIPermission::kSerial); |
| 1014 warnings = provider->GetWarningMessages(set, extension->GetType()); |
| 1015 EXPECT_EQ(1u, warnings.size()); |
| 1016 EXPECT_EQ(l10n_util::GetStringUTF16( |
| 1017 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL), |
| 1018 warnings[0]); |
| 1019 set->apis_.erase(APIPermission::kSerial); |
| 1020 |
| 1021 // Test USB and Bluetooth |
| 1022 set->apis_.insert(APIPermission::kUsb); |
| 1023 warnings = provider->GetWarningMessages(set, extension->GetType()); |
| 1024 EXPECT_EQ(1u, warnings.size()); |
| 1025 EXPECT_EQ( |
| 1026 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_BLUETOOTH), |
| 1027 warnings[0]); |
| 1028 |
| 1029 // Test USB, Bluetooth and Serial |
| 1030 set->apis_.insert(APIPermission::kSerial); |
| 1031 warnings = provider->GetWarningMessages(set, extension->GetType()); |
| 1032 EXPECT_EQ(1u, warnings.size()); |
| 1033 EXPECT_EQ( |
| 1034 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_DEVICES), |
| 1035 warnings[0]); |
| 1036 } |
| 1037 } |
| 1038 |
914 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { | 1039 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { |
915 APIPermissionSet write_api_permissions; | 1040 APIPermissionSet write_api_permissions; |
916 write_api_permissions.insert(APIPermission::kFileSystemWrite); | 1041 write_api_permissions.insert(APIPermission::kFileSystemWrite); |
917 scoped_refptr<PermissionSet> write_permissions( | 1042 scoped_refptr<PermissionSet> write_permissions( |
918 new PermissionSet(write_api_permissions, ManifestPermissionSet(), | 1043 new PermissionSet(write_api_permissions, ManifestPermissionSet(), |
919 URLPatternSet(), URLPatternSet())); | 1044 URLPatternSet(), URLPatternSet())); |
920 | 1045 |
921 APIPermissionSet directory_api_permissions; | 1046 APIPermissionSet directory_api_permissions; |
922 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); | 1047 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); |
923 scoped_refptr<PermissionSet> directory_permissions( | 1048 scoped_refptr<PermissionSet> directory_permissions( |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1096 | 1221 |
1097 TEST(PermissionsTest, GetWarningMessages_Serial) { | 1222 TEST(PermissionsTest, GetWarningMessages_Serial) { |
1098 scoped_refptr<Extension> extension = | 1223 scoped_refptr<Extension> extension = |
1099 LoadManifest("permissions", "serial.json"); | 1224 LoadManifest("permissions", "serial.json"); |
1100 | 1225 |
1101 EXPECT_TRUE(extension->is_platform_app()); | 1226 EXPECT_TRUE(extension->is_platform_app()); |
1102 EXPECT_TRUE( | 1227 EXPECT_TRUE( |
1103 extension->permissions_data()->HasAPIPermission(APIPermission::kSerial)); | 1228 extension->permissions_data()->HasAPIPermission(APIPermission::kSerial)); |
1104 std::vector<base::string16> warnings = | 1229 std::vector<base::string16> warnings = |
1105 extension->permissions_data()->GetPermissionMessageStrings(); | 1230 extension->permissions_data()->GetPermissionMessageStrings(); |
1106 EXPECT_TRUE( | 1231 EXPECT_TRUE(Contains(warnings, "Access your serial devices")); |
1107 Contains(warnings, "Use serial devices attached to your computer")); | |
1108 ASSERT_EQ(1u, warnings.size()); | 1232 ASSERT_EQ(1u, warnings.size()); |
1109 } | 1233 } |
1110 | 1234 |
1111 TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) { | 1235 TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) { |
1112 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); | 1236 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); |
1113 | 1237 |
1114 scoped_refptr<Extension> extension = | 1238 scoped_refptr<Extension> extension = |
1115 LoadManifest("permissions", "socket_any_host.json"); | 1239 LoadManifest("permissions", "socket_any_host.json"); |
1116 EXPECT_TRUE(extension->is_platform_app()); | 1240 EXPECT_TRUE(extension->is_platform_app()); |
1117 EXPECT_TRUE( | 1241 EXPECT_TRUE( |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1670 scoped_refptr<const PermissionSet> permissions_dwr( | 1794 scoped_refptr<const PermissionSet> permissions_dwr( |
1671 extension_dwr->permissions_data()->active_permissions()); | 1795 extension_dwr->permissions_data()->active_permissions()); |
1672 | 1796 |
1673 EXPECT_FALSE(PermissionMessageProvider::Get()-> | 1797 EXPECT_FALSE(PermissionMessageProvider::Get()-> |
1674 IsPrivilegeIncrease(permissions.get(), | 1798 IsPrivilegeIncrease(permissions.get(), |
1675 permissions_dwr.get(), | 1799 permissions_dwr.get(), |
1676 extension->GetType())); | 1800 extension->GetType())); |
1677 } | 1801 } |
1678 | 1802 |
1679 } // namespace extensions | 1803 } // namespace extensions |
OLD | NEW |