| 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/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/common/chrome_paths.h" | 9 #include "chrome/common/chrome_paths.h" |
| 10 #include "chrome/common/chrome_switches.h" | 10 #include "chrome/common/chrome_switches.h" |
| (...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 } | 795 } |
| 796 } | 796 } |
| 797 | 797 |
| 798 TEST(PermissionsTest, FileSystemPermissionMessages) { | 798 TEST(PermissionsTest, FileSystemPermissionMessages) { |
| 799 APIPermissionSet api_permissions; | 799 APIPermissionSet api_permissions; |
| 800 api_permissions.insert(APIPermission::kFileSystemWrite); | 800 api_permissions.insert(APIPermission::kFileSystemWrite); |
| 801 api_permissions.insert(APIPermission::kFileSystemDirectory); | 801 api_permissions.insert(APIPermission::kFileSystemDirectory); |
| 802 scoped_refptr<PermissionSet> permissions( | 802 scoped_refptr<PermissionSet> permissions( |
| 803 new PermissionSet(api_permissions, ManifestPermissionSet(), | 803 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 804 URLPatternSet(), URLPatternSet())); | 804 URLPatternSet(), URLPatternSet())); |
| 805 PermissionMessages messages = | 805 PermissionMessageIDs ids = |
| 806 PermissionMessageProvider::Get()->GetPermissionMessages( | 806 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 807 permissions.get(), Manifest::TYPE_PLATFORM_APP); | 807 permissions.get(), Manifest::TYPE_PLATFORM_APP); |
| 808 ASSERT_EQ(1u, messages.size()); | 808 ASSERT_EQ(1u, ids.size()); |
| 809 std::sort(messages.begin(), messages.end()); | 809 EXPECT_EQ(PermissionMessage::kFileSystemDirectory, ids[0]); |
| 810 std::set<PermissionMessage::ID> ids; | |
| 811 for (PermissionMessages::const_iterator it = messages.begin(); | |
| 812 it != messages.end(); ++it) { | |
| 813 ids.insert(it->id()); | |
| 814 } | |
| 815 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory)); | |
| 816 } | 810 } |
| 817 | 811 |
| 818 // The file system permissions have a special-case hack to show a warning for | 812 // The file system permissions have a special-case hack to show a warning for |
| 819 // write and directory at the same time. | 813 // write and directory at the same time. |
| 820 // TODO(sammc): Remove this. See http://crbug.com/284849. | 814 // TODO(sammc): Remove this. See http://crbug.com/284849. |
| 821 TEST(PermissionsTest, FileSystemImplicitPermissions) { | 815 TEST(PermissionsTest, FileSystemImplicitPermissions) { |
| 822 APIPermissionSet apis; | 816 APIPermissionSet apis; |
| 823 apis.insert(APIPermission::kFileSystemWrite); | 817 apis.insert(APIPermission::kFileSystemWrite); |
| 824 apis.AddImpliedPermissions(); | 818 apis.AddImpliedPermissions(); |
| 825 | 819 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 848 } | 842 } |
| 849 | 843 |
| 850 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) { | 844 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) { |
| 851 APIPermissionSet api_permissions; | 845 APIPermissionSet api_permissions; |
| 852 api_permissions.insert(APIPermission::kFileSystemWrite); | 846 api_permissions.insert(APIPermission::kFileSystemWrite); |
| 853 api_permissions.insert(APIPermission::kFileSystemDirectory); | 847 api_permissions.insert(APIPermission::kFileSystemDirectory); |
| 854 api_permissions.insert(APIPermission::kFileSystemWriteDirectory); | 848 api_permissions.insert(APIPermission::kFileSystemWriteDirectory); |
| 855 scoped_refptr<PermissionSet> permissions( | 849 scoped_refptr<PermissionSet> permissions( |
| 856 new PermissionSet(api_permissions, ManifestPermissionSet(), | 850 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 857 URLPatternSet(), URLPatternSet())); | 851 URLPatternSet(), URLPatternSet())); |
| 858 PermissionMessages messages = | 852 PermissionMessageIDs ids = |
| 859 PermissionMessageProvider::Get()->GetPermissionMessages( | 853 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 860 permissions.get(), Manifest::TYPE_PLATFORM_APP); | 854 permissions.get(), Manifest::TYPE_PLATFORM_APP); |
| 861 ASSERT_EQ(1u, messages.size()); | 855 ASSERT_EQ(1u, ids.size()); |
| 862 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id()); | 856 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, ids[0]); |
| 863 } | 857 } |
| 864 | 858 |
| 865 TEST(PermissionsTest, SuppressedPermissionMessages) { | 859 TEST(PermissionsTest, SuppressedPermissionMessages) { |
| 866 { | 860 { |
| 867 // Tabs warning suppresses favicon warning. | 861 // Tabs warning suppresses favicon warning. |
| 868 APIPermissionSet api_permissions; | 862 APIPermissionSet api_permissions; |
| 869 api_permissions.insert(APIPermission::kTab); | 863 api_permissions.insert(APIPermission::kTab); |
| 870 URLPatternSet hosts; | 864 URLPatternSet hosts; |
| 871 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, | 865 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, |
| 872 "chrome://favicon/")); | 866 "chrome://favicon/")); |
| 873 scoped_refptr<PermissionSet> permissions( | 867 scoped_refptr<PermissionSet> permissions( |
| 874 new PermissionSet(api_permissions, ManifestPermissionSet(), | 868 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 875 hosts, URLPatternSet())); | 869 hosts, URLPatternSet())); |
| 876 PermissionMessages messages = | 870 PermissionMessageIDs ids = |
| 877 PermissionMessageProvider::Get()->GetPermissionMessages( | 871 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 878 permissions.get(), Manifest::TYPE_EXTENSION); | 872 permissions.get(), Manifest::TYPE_EXTENSION); |
| 879 EXPECT_EQ(1u, messages.size()); | 873 EXPECT_EQ(1u, ids.size()); |
| 880 EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); | 874 EXPECT_EQ(PermissionMessage::kTabs, ids[0]); |
| 881 } | 875 } |
| 882 { | 876 { |
| 883 // History warning suppresses favicon warning. | 877 // History warning suppresses favicon warning. |
| 884 APIPermissionSet api_permissions; | 878 APIPermissionSet api_permissions; |
| 885 api_permissions.insert(APIPermission::kHistory); | 879 api_permissions.insert(APIPermission::kHistory); |
| 886 URLPatternSet hosts; | 880 URLPatternSet hosts; |
| 887 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, | 881 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, |
| 888 "chrome://favicon/")); | 882 "chrome://favicon/")); |
| 889 scoped_refptr<PermissionSet> permissions( | 883 scoped_refptr<PermissionSet> permissions( |
| 890 new PermissionSet(api_permissions, ManifestPermissionSet(), | 884 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 891 hosts, URLPatternSet())); | 885 hosts, URLPatternSet())); |
| 892 PermissionMessages messages = | 886 PermissionMessageIDs ids = |
| 893 PermissionMessageProvider::Get()->GetPermissionMessages( | 887 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 894 permissions.get(), Manifest::TYPE_EXTENSION); | 888 permissions.get(), Manifest::TYPE_EXTENSION); |
| 895 EXPECT_EQ(1u, messages.size()); | 889 EXPECT_EQ(1u, ids.size()); |
| 896 EXPECT_EQ(PermissionMessage::kBrowsingHistory, messages[0].id()); | 890 EXPECT_EQ(PermissionMessage::kBrowsingHistory, ids[0]); |
| 897 } | 891 } |
| 898 { | 892 { |
| 899 // All sites warning suppresses tabs warning. | 893 // All sites warning suppresses tabs warning. |
| 900 APIPermissionSet api_permissions; | 894 APIPermissionSet api_permissions; |
| 901 URLPatternSet hosts; | 895 URLPatternSet hosts; |
| 902 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); | 896 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); |
| 903 api_permissions.insert(APIPermission::kTab); | 897 api_permissions.insert(APIPermission::kTab); |
| 904 scoped_refptr<PermissionSet> permissions(new PermissionSet( | 898 scoped_refptr<PermissionSet> permissions(new PermissionSet( |
| 905 api_permissions, ManifestPermissionSet(), hosts, URLPatternSet())); | 899 api_permissions, ManifestPermissionSet(), hosts, URLPatternSet())); |
| 906 PermissionMessages messages = | 900 PermissionMessageIDs ids = |
| 907 PermissionMessageProvider::Get()->GetPermissionMessages( | 901 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 908 permissions.get(), Manifest::TYPE_EXTENSION); | 902 permissions.get(), Manifest::TYPE_EXTENSION); |
| 909 EXPECT_EQ(1u, messages.size()); | 903 EXPECT_EQ(1u, ids.size()); |
| 910 EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id()); | 904 EXPECT_EQ(PermissionMessage::kHostsAll, ids[0]); |
| 911 } | 905 } |
| 912 { | 906 { |
| 913 // All sites warning suppresses topSites warning. | 907 // All sites warning suppresses topSites warning. |
| 914 APIPermissionSet api_permissions; | 908 APIPermissionSet api_permissions; |
| 915 URLPatternSet hosts; | 909 URLPatternSet hosts; |
| 916 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); | 910 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); |
| 917 api_permissions.insert(APIPermission::kTopSites); | 911 api_permissions.insert(APIPermission::kTopSites); |
| 918 scoped_refptr<PermissionSet> permissions(new PermissionSet( | 912 scoped_refptr<PermissionSet> permissions(new PermissionSet( |
| 919 api_permissions, ManifestPermissionSet(), hosts, URLPatternSet())); | 913 api_permissions, ManifestPermissionSet(), hosts, URLPatternSet())); |
| 920 PermissionMessages messages = | 914 PermissionMessageIDs ids = |
| 921 PermissionMessageProvider::Get()->GetPermissionMessages( | 915 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 922 permissions.get(), Manifest::TYPE_EXTENSION); | 916 permissions.get(), Manifest::TYPE_EXTENSION); |
| 923 EXPECT_EQ(1u, messages.size()); | 917 EXPECT_EQ(1u, ids.size()); |
| 924 EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id()); | 918 EXPECT_EQ(PermissionMessage::kHostsAll, ids[0]); |
| 925 } | 919 } |
| 926 { | 920 { |
| 927 // All sites warning suppresses declarativeWebRequest warning. | 921 // All sites warning suppresses declarativeWebRequest warning. |
| 928 APIPermissionSet api_permissions; | 922 APIPermissionSet api_permissions; |
| 929 URLPatternSet hosts; | 923 URLPatternSet hosts; |
| 930 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); | 924 hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); |
| 931 api_permissions.insert(APIPermission::kDeclarativeWebRequest); | 925 api_permissions.insert(APIPermission::kDeclarativeWebRequest); |
| 932 scoped_refptr<PermissionSet> permissions(new PermissionSet( | 926 scoped_refptr<PermissionSet> permissions(new PermissionSet( |
| 933 api_permissions, ManifestPermissionSet(), hosts, URLPatternSet())); | 927 api_permissions, ManifestPermissionSet(), hosts, URLPatternSet())); |
| 934 PermissionMessages messages = | 928 PermissionMessageIDs ids = |
| 935 PermissionMessageProvider::Get()->GetPermissionMessages( | 929 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 936 permissions.get(), Manifest::TYPE_EXTENSION); | 930 permissions.get(), Manifest::TYPE_EXTENSION); |
| 937 EXPECT_EQ(1u, messages.size()); | 931 EXPECT_EQ(1u, ids.size()); |
| 938 EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id()); | 932 EXPECT_EQ(PermissionMessage::kHostsAll, ids[0]); |
| 939 } | 933 } |
| 940 { | 934 { |
| 941 // BrowsingHistory warning suppresses all history read/write warnings. | 935 // BrowsingHistory warning suppresses all history read/write warnings. |
| 942 APIPermissionSet api_permissions; | 936 APIPermissionSet api_permissions; |
| 943 api_permissions.insert(APIPermission::kHistory); | 937 api_permissions.insert(APIPermission::kHistory); |
| 944 api_permissions.insert(APIPermission::kTab); | 938 api_permissions.insert(APIPermission::kTab); |
| 945 api_permissions.insert(APIPermission::kTopSites); | 939 api_permissions.insert(APIPermission::kTopSites); |
| 946 api_permissions.insert(APIPermission::kProcesses); | 940 api_permissions.insert(APIPermission::kProcesses); |
| 947 api_permissions.insert(APIPermission::kWebNavigation); | 941 api_permissions.insert(APIPermission::kWebNavigation); |
| 948 scoped_refptr<PermissionSet> permissions( | 942 scoped_refptr<PermissionSet> permissions( |
| 949 new PermissionSet(api_permissions, ManifestPermissionSet(), | 943 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 950 URLPatternSet(), URLPatternSet())); | 944 URLPatternSet(), URLPatternSet())); |
| 951 PermissionMessages messages = | 945 PermissionMessageIDs ids = |
| 952 PermissionMessageProvider::Get()->GetPermissionMessages( | 946 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 953 permissions.get(), Manifest::TYPE_EXTENSION); | 947 permissions.get(), Manifest::TYPE_EXTENSION); |
| 954 EXPECT_EQ(1u, messages.size()); | 948 EXPECT_EQ(1u, ids.size()); |
| 955 EXPECT_EQ(PermissionMessage::kBrowsingHistory, messages[0].id()); | 949 EXPECT_EQ(PermissionMessage::kBrowsingHistory, ids[0]); |
| 956 } | 950 } |
| 957 { | 951 { |
| 958 // Tabs warning suppresses all read-only history warnings. | 952 // Tabs warning suppresses all read-only history warnings. |
| 959 APIPermissionSet api_permissions; | 953 APIPermissionSet api_permissions; |
| 960 api_permissions.insert(APIPermission::kTab); | 954 api_permissions.insert(APIPermission::kTab); |
| 961 api_permissions.insert(APIPermission::kTopSites); | 955 api_permissions.insert(APIPermission::kTopSites); |
| 962 api_permissions.insert(APIPermission::kProcesses); | 956 api_permissions.insert(APIPermission::kProcesses); |
| 963 api_permissions.insert(APIPermission::kWebNavigation); | 957 api_permissions.insert(APIPermission::kWebNavigation); |
| 964 scoped_refptr<PermissionSet> permissions( | 958 scoped_refptr<PermissionSet> permissions( |
| 965 new PermissionSet(api_permissions, ManifestPermissionSet(), | 959 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 966 URLPatternSet(), URLPatternSet())); | 960 URLPatternSet(), URLPatternSet())); |
| 967 PermissionMessages messages = | 961 PermissionMessageIDs ids = |
| 968 PermissionMessageProvider::Get()->GetPermissionMessages( | 962 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 969 permissions.get(), Manifest::TYPE_EXTENSION); | 963 permissions.get(), Manifest::TYPE_EXTENSION); |
| 970 EXPECT_EQ(1u, messages.size()); | 964 EXPECT_EQ(1u, ids.size()); |
| 971 EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); | 965 EXPECT_EQ(PermissionMessage::kTabs, ids[0]); |
| 972 } | 966 } |
| 973 } | 967 } |
| 974 | 968 |
| 975 TEST(PermissionsTest, AccessToDevicesMessages) { | 969 TEST(PermissionsTest, AccessToDevicesMessages) { |
| 976 { | 970 { |
| 977 APIPermissionSet api_permissions; | 971 APIPermissionSet api_permissions; |
| 978 api_permissions.insert(APIPermission::kSerial); | 972 api_permissions.insert(APIPermission::kSerial); |
| 979 scoped_refptr<PermissionSet> permissions( | 973 scoped_refptr<PermissionSet> permissions( |
| 980 new PermissionSet(api_permissions, | 974 new PermissionSet(api_permissions, |
| 981 ManifestPermissionSet(), | 975 ManifestPermissionSet(), |
| 982 URLPatternSet(), | 976 URLPatternSet(), |
| 983 URLPatternSet())); | 977 URLPatternSet())); |
| 984 std::vector<base::string16> messages = | 978 std::vector<base::string16> messages = |
| 985 PermissionMessageProvider::Get()->GetWarningMessages( | 979 PermissionMessageProvider::Get()->GetLegacyWarningMessages( |
| 986 permissions.get(), Manifest::TYPE_EXTENSION); | 980 permissions.get(), Manifest::TYPE_EXTENSION); |
| 987 EXPECT_EQ(1u, messages.size()); | 981 EXPECT_EQ(1u, messages.size()); |
| 988 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL), | 982 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL), |
| 989 messages[0]); | 983 messages[0]); |
| 990 } | 984 } |
| 991 { | 985 { |
| 992 // Testing that multiple permissions will show the one message. | 986 // Testing that multiple permissions will show the one message. |
| 993 APIPermissionSet api_permissions; | 987 APIPermissionSet api_permissions; |
| 994 api_permissions.insert(APIPermission::kSerial); | 988 api_permissions.insert(APIPermission::kSerial); |
| 995 api_permissions.insert(APIPermission::kSerial); | 989 api_permissions.insert(APIPermission::kSerial); |
| 996 scoped_refptr<PermissionSet> permissions( | 990 scoped_refptr<PermissionSet> permissions( |
| 997 new PermissionSet(api_permissions, | 991 new PermissionSet(api_permissions, |
| 998 ManifestPermissionSet(), | 992 ManifestPermissionSet(), |
| 999 URLPatternSet(), | 993 URLPatternSet(), |
| 1000 URLPatternSet())); | 994 URLPatternSet())); |
| 1001 std::vector<base::string16> messages = | 995 std::vector<base::string16> messages = |
| 1002 PermissionMessageProvider::Get()->GetWarningMessages( | 996 PermissionMessageProvider::Get()->GetLegacyWarningMessages( |
| 1003 permissions.get(), Manifest::TYPE_EXTENSION); | 997 permissions.get(), Manifest::TYPE_EXTENSION); |
| 1004 EXPECT_EQ(1u, messages.size()); | 998 EXPECT_EQ(1u, messages.size()); |
| 1005 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL), | 999 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_SERIAL), |
| 1006 messages[0]); | 1000 messages[0]); |
| 1007 } | 1001 } |
| 1008 { | 1002 { |
| 1009 scoped_refptr<Extension> extension = | 1003 scoped_refptr<Extension> extension = |
| 1010 LoadManifest("permissions", "access_to_devices_bluetooth.json"); | 1004 LoadManifest("permissions", "access_to_devices_bluetooth.json"); |
| 1011 const PermissionMessageProvider* provider = | 1005 const PermissionMessageProvider* provider = |
| 1012 PermissionMessageProvider::Get(); | 1006 PermissionMessageProvider::Get(); |
| 1013 PermissionSet* set = const_cast<PermissionSet*>( | 1007 PermissionSet* set = const_cast<PermissionSet*>( |
| 1014 extension->permissions_data()->active_permissions().get()); | 1008 extension->permissions_data()->active_permissions().get()); |
| 1015 std::vector<base::string16> warnings = | 1009 std::vector<base::string16> warnings = |
| 1016 provider->GetWarningMessages(set, extension->GetType()); | 1010 provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1017 EXPECT_EQ(1u, warnings.size()); | 1011 EXPECT_EQ(1u, warnings.size()); |
| 1018 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH), | 1012 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH), |
| 1019 warnings[0]); | 1013 warnings[0]); |
| 1020 | 1014 |
| 1021 // Test Bluetooth and Serial | 1015 // Test Bluetooth and Serial |
| 1022 set->apis_.insert(APIPermission::kSerial); | 1016 set->apis_.insert(APIPermission::kSerial); |
| 1023 warnings = provider->GetWarningMessages(set, extension->GetType()); | 1017 warnings = provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1024 EXPECT_EQ(1u, warnings.size()); | 1018 EXPECT_EQ(1u, warnings.size()); |
| 1025 EXPECT_EQ(l10n_util::GetStringUTF16( | 1019 EXPECT_EQ(l10n_util::GetStringUTF16( |
| 1026 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL), | 1020 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL), |
| 1027 warnings[0]); | 1021 warnings[0]); |
| 1028 set->apis_.erase(APIPermission::kSerial); | 1022 set->apis_.erase(APIPermission::kSerial); |
| 1029 } | 1023 } |
| 1030 } | 1024 } |
| 1031 | 1025 |
| 1032 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { | 1026 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { |
| 1033 APIPermissionSet write_api_permissions; | 1027 APIPermissionSet write_api_permissions; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 } | 1100 } |
| 1107 | 1101 |
| 1108 TEST(PermissionsTest, GetWarningMessages_AudioVideo) { | 1102 TEST(PermissionsTest, GetWarningMessages_AudioVideo) { |
| 1109 // Both audio and video present. | 1103 // Both audio and video present. |
| 1110 scoped_refptr<Extension> extension = | 1104 scoped_refptr<Extension> extension = |
| 1111 LoadManifest("permissions", "audio-video.json"); | 1105 LoadManifest("permissions", "audio-video.json"); |
| 1112 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); | 1106 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); |
| 1113 PermissionSet* set = const_cast<PermissionSet*>( | 1107 PermissionSet* set = const_cast<PermissionSet*>( |
| 1114 extension->permissions_data()->active_permissions().get()); | 1108 extension->permissions_data()->active_permissions().get()); |
| 1115 std::vector<base::string16> warnings = | 1109 std::vector<base::string16> warnings = |
| 1116 provider->GetWarningMessages(set, extension->GetType()); | 1110 provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1117 EXPECT_FALSE(Contains(warnings, "Use your microphone")); | 1111 EXPECT_FALSE(Contains(warnings, "Use your microphone")); |
| 1118 EXPECT_FALSE(Contains(warnings, "Use your camera")); | 1112 EXPECT_FALSE(Contains(warnings, "Use your camera")); |
| 1119 EXPECT_TRUE(Contains(warnings, "Use your microphone and camera")); | 1113 EXPECT_TRUE(Contains(warnings, "Use your microphone and camera")); |
| 1120 size_t combined_index = IndexOf(warnings, "Use your microphone and camera"); | 1114 size_t combined_index = IndexOf(warnings, "Use your microphone and camera"); |
| 1121 size_t combined_size = warnings.size(); | 1115 size_t combined_size = warnings.size(); |
| 1122 | 1116 |
| 1123 // Just audio present. | 1117 // Just audio present. |
| 1124 set->apis_.erase(APIPermission::kVideoCapture); | 1118 set->apis_.erase(APIPermission::kVideoCapture); |
| 1125 warnings = provider->GetWarningMessages(set, extension->GetType()); | 1119 warnings = provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1126 EXPECT_EQ(combined_size, warnings.size()); | 1120 EXPECT_EQ(combined_size, warnings.size()); |
| 1127 EXPECT_EQ(combined_index, IndexOf(warnings, "Use your microphone")); | 1121 EXPECT_EQ(combined_index, IndexOf(warnings, "Use your microphone")); |
| 1128 EXPECT_FALSE(Contains(warnings, "Use your camera")); | 1122 EXPECT_FALSE(Contains(warnings, "Use your camera")); |
| 1129 EXPECT_FALSE(Contains(warnings, "Use your microphone and camera")); | 1123 EXPECT_FALSE(Contains(warnings, "Use your microphone and camera")); |
| 1130 | 1124 |
| 1131 // Just video present. | 1125 // Just video present. |
| 1132 set->apis_.erase(APIPermission::kAudioCapture); | 1126 set->apis_.erase(APIPermission::kAudioCapture); |
| 1133 set->apis_.insert(APIPermission::kVideoCapture); | 1127 set->apis_.insert(APIPermission::kVideoCapture); |
| 1134 warnings = provider->GetWarningMessages(set, extension->GetType()); | 1128 warnings = provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1135 EXPECT_EQ(combined_size, warnings.size()); | 1129 EXPECT_EQ(combined_size, warnings.size()); |
| 1136 EXPECT_FALSE(Contains(warnings, "Use your microphone")); | 1130 EXPECT_FALSE(Contains(warnings, "Use your microphone")); |
| 1137 EXPECT_FALSE(Contains(warnings, "Use your microphone and camera")); | 1131 EXPECT_FALSE(Contains(warnings, "Use your microphone and camera")); |
| 1138 EXPECT_TRUE(Contains(warnings, "Use your camera")); | 1132 EXPECT_TRUE(Contains(warnings, "Use your camera")); |
| 1139 } | 1133 } |
| 1140 | 1134 |
| 1141 TEST(PermissionsTest, GetWarningMessages_CombinedSessions) { | 1135 TEST(PermissionsTest, GetWarningMessages_CombinedSessions) { |
| 1142 { | 1136 { |
| 1143 APIPermissionSet api_permissions; | 1137 APIPermissionSet api_permissions; |
| 1144 api_permissions.insert(APIPermission::kTab); | 1138 api_permissions.insert(APIPermission::kTab); |
| 1145 api_permissions.insert(APIPermission::kTopSites); | 1139 api_permissions.insert(APIPermission::kTopSites); |
| 1146 api_permissions.insert(APIPermission::kProcesses); | 1140 api_permissions.insert(APIPermission::kProcesses); |
| 1147 api_permissions.insert(APIPermission::kWebNavigation); | 1141 api_permissions.insert(APIPermission::kWebNavigation); |
| 1148 api_permissions.insert(APIPermission::kSessions); | 1142 api_permissions.insert(APIPermission::kSessions); |
| 1149 scoped_refptr<PermissionSet> permissions( | 1143 scoped_refptr<PermissionSet> permissions( |
| 1150 new PermissionSet(api_permissions, ManifestPermissionSet(), | 1144 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 1151 URLPatternSet(), URLPatternSet())); | 1145 URLPatternSet(), URLPatternSet())); |
| 1152 std::vector<base::string16> messages = | 1146 std::vector<base::string16> messages = |
| 1153 PermissionMessageProvider::Get()->GetWarningMessages( | 1147 PermissionMessageProvider::Get()->GetLegacyWarningMessages( |
| 1154 permissions.get(), Manifest::TYPE_EXTENSION); | 1148 permissions.get(), Manifest::TYPE_EXTENSION); |
| 1155 EXPECT_EQ(1u, messages.size()); | 1149 EXPECT_EQ(1u, messages.size()); |
| 1156 EXPECT_EQ(l10n_util::GetStringUTF16( | 1150 EXPECT_EQ(l10n_util::GetStringUTF16( |
| 1157 IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS), | 1151 IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS), |
| 1158 messages[0]); | 1152 messages[0]); |
| 1159 } | 1153 } |
| 1160 { | 1154 { |
| 1161 APIPermissionSet api_permissions; | 1155 APIPermissionSet api_permissions; |
| 1162 api_permissions.insert(APIPermission::kHistory); | 1156 api_permissions.insert(APIPermission::kHistory); |
| 1163 api_permissions.insert(APIPermission::kTab); | 1157 api_permissions.insert(APIPermission::kTab); |
| 1164 api_permissions.insert(APIPermission::kTopSites); | 1158 api_permissions.insert(APIPermission::kTopSites); |
| 1165 api_permissions.insert(APIPermission::kProcesses); | 1159 api_permissions.insert(APIPermission::kProcesses); |
| 1166 api_permissions.insert(APIPermission::kWebNavigation); | 1160 api_permissions.insert(APIPermission::kWebNavigation); |
| 1167 api_permissions.insert(APIPermission::kSessions); | 1161 api_permissions.insert(APIPermission::kSessions); |
| 1168 scoped_refptr<PermissionSet> permissions( | 1162 scoped_refptr<PermissionSet> permissions( |
| 1169 new PermissionSet(api_permissions, ManifestPermissionSet(), | 1163 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 1170 URLPatternSet(), URLPatternSet())); | 1164 URLPatternSet(), URLPatternSet())); |
| 1171 std::vector<base::string16> messages = | 1165 std::vector<base::string16> messages = |
| 1172 PermissionMessageProvider::Get()->GetWarningMessages( | 1166 PermissionMessageProvider::Get()->GetLegacyWarningMessages( |
| 1173 permissions.get(), Manifest::TYPE_EXTENSION); | 1167 permissions.get(), Manifest::TYPE_EXTENSION); |
| 1174 EXPECT_EQ(1u, messages.size()); | 1168 EXPECT_EQ(1u, messages.size()); |
| 1175 EXPECT_EQ(l10n_util::GetStringUTF16( | 1169 EXPECT_EQ(l10n_util::GetStringUTF16( |
| 1176 IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS), | 1170 IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS), |
| 1177 messages[0]); | 1171 messages[0]); |
| 1178 } | 1172 } |
| 1179 } | 1173 } |
| 1180 | 1174 |
| 1181 TEST(PermissionsTest, GetWarningMessages_DeclarativeWebRequest) { | 1175 TEST(PermissionsTest, GetWarningMessages_DeclarativeWebRequest) { |
| 1182 // Test that if the declarativeWebRequest permission is present | 1176 // Test that if the declarativeWebRequest permission is present |
| 1183 // in combination with all hosts permission, then only the warning | 1177 // in combination with all hosts permission, then only the warning |
| 1184 // for host permissions is shown, because that covers the use of | 1178 // for host permissions is shown, because that covers the use of |
| 1185 // declarativeWebRequest. | 1179 // declarativeWebRequest. |
| 1186 | 1180 |
| 1187 // Until Declarative Web Request is in stable, let's make sure it is enabled | 1181 // Until Declarative Web Request is in stable, let's make sure it is enabled |
| 1188 // on the current channel. | 1182 // on the current channel. |
| 1189 ScopedCurrentChannel sc(chrome::VersionInfo::CHANNEL_CANARY); | 1183 ScopedCurrentChannel sc(chrome::VersionInfo::CHANNEL_CANARY); |
| 1190 | 1184 |
| 1191 // First verify that declarativeWebRequest produces a message when host | 1185 // First verify that declarativeWebRequest produces a message when host |
| 1192 // permissions do not cover all hosts. | 1186 // permissions do not cover all hosts. |
| 1193 scoped_refptr<Extension> extension = | 1187 scoped_refptr<Extension> extension = |
| 1194 LoadManifest("permissions", "web_request_not_all_host_permissions.json"); | 1188 LoadManifest("permissions", "web_request_not_all_host_permissions.json"); |
| 1195 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); | 1189 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); |
| 1196 const PermissionSet* set = | 1190 const PermissionSet* set = |
| 1197 extension->permissions_data()->active_permissions().get(); | 1191 extension->permissions_data()->active_permissions().get(); |
| 1198 std::vector<base::string16> warnings = | 1192 std::vector<base::string16> warnings = |
| 1199 provider->GetWarningMessages(set, extension->GetType()); | 1193 provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1200 EXPECT_TRUE(Contains(warnings, "Block parts of web pages")); | 1194 EXPECT_TRUE(Contains(warnings, "Block parts of web pages")); |
| 1201 EXPECT_FALSE(Contains( | 1195 EXPECT_FALSE(Contains( |
| 1202 warnings, "Read and change all your data on the websites you visit")); | 1196 warnings, "Read and change all your data on the websites you visit")); |
| 1203 | 1197 |
| 1204 // Now verify that declarativeWebRequest does not produce a message when host | 1198 // Now verify that declarativeWebRequest does not produce a message when host |
| 1205 // permissions do cover all hosts. | 1199 // permissions do cover all hosts. |
| 1206 extension = | 1200 extension = |
| 1207 LoadManifest("permissions", "web_request_all_host_permissions.json"); | 1201 LoadManifest("permissions", "web_request_all_host_permissions.json"); |
| 1208 set = extension->permissions_data()->active_permissions().get(); | 1202 set = extension->permissions_data()->active_permissions().get(); |
| 1209 warnings = provider->GetWarningMessages(set, extension->GetType()); | 1203 warnings = provider->GetLegacyWarningMessages(set, extension->GetType()); |
| 1210 EXPECT_FALSE(Contains(warnings, "Block parts of web pages")); | 1204 EXPECT_FALSE(Contains(warnings, "Block parts of web pages")); |
| 1211 EXPECT_TRUE(Contains( | 1205 EXPECT_TRUE(Contains( |
| 1212 warnings, "Read and change all your data on the websites you visit")); | 1206 warnings, "Read and change all your data on the websites you visit")); |
| 1213 } | 1207 } |
| 1214 | 1208 |
| 1215 TEST(PermissionsTest, GetWarningMessages_Serial) { | 1209 TEST(PermissionsTest, GetWarningMessages_Serial) { |
| 1216 scoped_refptr<Extension> extension = | 1210 scoped_refptr<Extension> extension = |
| 1217 LoadManifest("permissions", "serial.json"); | 1211 LoadManifest("permissions", "serial.json"); |
| 1218 | 1212 |
| 1219 EXPECT_TRUE(extension->is_platform_app()); | 1213 EXPECT_TRUE(extension->is_platform_app()); |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1765 URLPatternSet allowed_hosts; | 1759 URLPatternSet allowed_hosts; |
| 1766 allowed_hosts.AddPattern( | 1760 allowed_hosts.AddPattern( |
| 1767 URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/")); | 1761 URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/")); |
| 1768 allowed_hosts.AddPattern( | 1762 allowed_hosts.AddPattern( |
| 1769 URLPattern(URLPattern::SCHEME_ALL, "chrome://favicon/")); | 1763 URLPattern(URLPattern::SCHEME_ALL, "chrome://favicon/")); |
| 1770 allowed_hosts.AddPattern( | 1764 allowed_hosts.AddPattern( |
| 1771 URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/")); | 1765 URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/")); |
| 1772 scoped_refptr<PermissionSet> permissions( | 1766 scoped_refptr<PermissionSet> permissions( |
| 1773 new PermissionSet(APIPermissionSet(), ManifestPermissionSet(), | 1767 new PermissionSet(APIPermissionSet(), ManifestPermissionSet(), |
| 1774 allowed_hosts, URLPatternSet())); | 1768 allowed_hosts, URLPatternSet())); |
| 1775 PermissionMessageProvider::Get()->GetPermissionMessages( | 1769 PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs( |
| 1776 permissions.get(), Manifest::TYPE_EXTENSION); | 1770 permissions.get(), Manifest::TYPE_EXTENSION); |
| 1777 } | 1771 } |
| 1778 | 1772 |
| 1779 TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) { | 1773 TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) { |
| 1780 scoped_refptr<Extension> extension( | 1774 scoped_refptr<Extension> extension( |
| 1781 LoadManifest("permissions", "permissions_all_urls.json")); | 1775 LoadManifest("permissions", "permissions_all_urls.json")); |
| 1782 scoped_refptr<const PermissionSet> permissions( | 1776 scoped_refptr<const PermissionSet> permissions( |
| 1783 extension->permissions_data()->active_permissions()); | 1777 extension->permissions_data()->active_permissions()); |
| 1784 | 1778 |
| 1785 scoped_refptr<Extension> extension_dwr( | 1779 scoped_refptr<Extension> extension_dwr( |
| 1786 LoadManifest("permissions", "web_request_all_host_permissions.json")); | 1780 LoadManifest("permissions", "web_request_all_host_permissions.json")); |
| 1787 scoped_refptr<const PermissionSet> permissions_dwr( | 1781 scoped_refptr<const PermissionSet> permissions_dwr( |
| 1788 extension_dwr->permissions_data()->active_permissions()); | 1782 extension_dwr->permissions_data()->active_permissions()); |
| 1789 | 1783 |
| 1790 EXPECT_FALSE(PermissionMessageProvider::Get()-> | 1784 EXPECT_FALSE(PermissionMessageProvider::Get()-> |
| 1791 IsPrivilegeIncrease(permissions.get(), | 1785 IsPrivilegeIncrease(permissions.get(), |
| 1792 permissions_dwr.get(), | 1786 permissions_dwr.get(), |
| 1793 extension->GetType())); | 1787 extension->GetType())); |
| 1794 } | 1788 } |
| 1795 | 1789 |
| 1796 } // namespace extensions | 1790 } // namespace extensions |
| OLD | NEW |