OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/safe_browsing/unverified_download_field_trial.h" | 5 #include "chrome/browser/safe_browsing/unverified_download_field_trial.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "chrome/common/chrome_switches.h" | 10 #include "chrome/common/chrome_switches.h" |
11 #include "chrome/common/safe_browsing/download_protection_util.h" | 11 #include "chrome/common/safe_browsing/download_protection_util.h" |
| 12 #include "chrome/common/safe_browsing/file_type_policies.h" |
12 #include "components/variations/variations_associated_data.h" | 13 #include "components/variations/variations_associated_data.h" |
13 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
15 | 16 |
16 namespace safe_browsing { | 17 namespace safe_browsing { |
17 | 18 |
18 namespace { | 19 namespace { |
19 | 20 |
20 const base::FilePath::CharType kSafeFilename[] = FILE_PATH_LITERAL("foo.txt"); | 21 const base::FilePath::CharType kSafeFilename[] = FILE_PATH_LITERAL("foo.txt"); |
21 const base::FilePath::CharType kHandledFilename[] = | 22 const base::FilePath::CharType kHandledFilename[] = |
(...skipping 24 matching lines...) Expand all Loading... |
46 variations::testing::ClearAllVariationIDs(); | 47 variations::testing::ClearAllVariationIDs(); |
47 variations::testing::ClearAllVariationParams(); | 48 variations::testing::ClearAllVariationParams(); |
48 } | 49 } |
49 | 50 |
50 private: | 51 private: |
51 base::FieldTrialList field_trial_list_; | 52 base::FieldTrialList field_trial_list_; |
52 }; | 53 }; |
53 | 54 |
54 } // namespace | 55 } // namespace |
55 | 56 |
| 57 class UnverifiedDownloadFieldTrialTest : public testing::Test { |
| 58 protected: |
| 59 ~UnverifiedDownloadFieldTrialTest() override {} |
| 60 |
| 61 // This manages the lifetime of FileTypePolicies::GlobalInstance() |
| 62 FileTypePoliciesManager file_type_policies_manager_; |
| 63 }; |
| 64 |
56 // Verify some test assumptions. Namely, that kSafeFilename is not a supported | 65 // Verify some test assumptions. Namely, that kSafeFilename is not a supported |
57 // binary file and that kHandledFilename is. | 66 // binary file and that kHandledFilename is. |
58 TEST(UnverifiedDownloadFieldTrialTest, Assumptions) { | 67 TEST_F(UnverifiedDownloadFieldTrialTest, Assumptions) { |
59 EXPECT_TRUE(download_protection_util::IsSupportedBinaryFile( | 68 FileTypePolicies* policies = FileTypePolicies::GlobalInstance(); |
60 base::FilePath(kHandledFilename))); | 69 EXPECT_TRUE(policies->IsCheckedBinaryFile(base::FilePath(kHandledFilename))); |
61 EXPECT_FALSE(download_protection_util::IsSupportedBinaryFile( | 70 EXPECT_FALSE(policies->IsCheckedBinaryFile(base::FilePath(kSafeFilename))); |
62 base::FilePath(kSafeFilename))); | |
63 } | 71 } |
64 | 72 |
65 // Verify that disallow-unchecked-dangerous-downloads command line switch causes | 73 // Verify that disallow-unchecked-dangerous-downloads command line switch causes |
66 // all dangerous file types to be blocked, and that safe files types are still | 74 // all dangerous file types to be blocked, and that safe files types are still |
67 // allowed. | 75 // allowed. |
68 TEST(UnverifiedDownloadFieldTrialTest, CommandLine_DisallowDangerous) { | 76 TEST_F(UnverifiedDownloadFieldTrialTest, CommandLine_DisallowDangerous) { |
69 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 77 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
70 switches::kDisallowUncheckedDangerousDownloads); | 78 switches::kDisallowUncheckedDangerousDownloads); |
71 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 79 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
72 base::FilePath(kSafeFilename))); | 80 base::FilePath(kSafeFilename))); |
73 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 81 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
74 base::FilePath(kHandledFilename))); | 82 base::FilePath(kHandledFilename))); |
75 } | 83 } |
76 | 84 |
77 // Verify that a wildcard blacklist matches all file types. | 85 // Verify that a wildcard blacklist matches all file types. |
78 TEST(UnverifiedDownloadFieldTrialTest, WildCardBlacklist) { | 86 TEST_F(UnverifiedDownloadFieldTrialTest, WildCardBlacklist) { |
79 FieldTrialParameters parameters; | 87 FieldTrialParameters parameters; |
80 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = "*"; | 88 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = "*"; |
81 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; | 89 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; |
82 ScopedFieldTrialState field_trial( | 90 ScopedFieldTrialState field_trial( |
83 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 91 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
84 | 92 |
85 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 93 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
86 base::FilePath(kSafeFilename))); | 94 base::FilePath(kSafeFilename))); |
87 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 95 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
88 base::FilePath(kHandledFilename))); | 96 base::FilePath(kHandledFilename))); |
89 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 97 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
90 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); | 98 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); |
91 } | 99 } |
92 | 100 |
93 // Verify that allow-unchecked-dangerous-downloads command line option takes | 101 // Verify that allow-unchecked-dangerous-downloads command line option takes |
94 // precedence over a Finch trial specified blacklist. | 102 // precedence over a Finch trial specified blacklist. |
95 TEST(UnverifiedDownloadFieldTrialTest, BlacklistVsCommandline) { | 103 TEST_F(UnverifiedDownloadFieldTrialTest, BlacklistVsCommandline) { |
96 FieldTrialParameters parameters; | 104 FieldTrialParameters parameters; |
97 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = "*"; | 105 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = "*"; |
98 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; | 106 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; |
99 ScopedFieldTrialState field_trial( | 107 ScopedFieldTrialState field_trial( |
100 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 108 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
101 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 109 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
102 switches::kAllowUncheckedDangerousDownloads); | 110 switches::kAllowUncheckedDangerousDownloads); |
103 | 111 |
104 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 112 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
105 base::FilePath(kSafeFilename))); | 113 base::FilePath(kSafeFilename))); |
106 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 114 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
107 base::FilePath(kHandledFilename))); | 115 base::FilePath(kHandledFilename))); |
108 } | 116 } |
109 | 117 |
110 // Verify that disallow-unchecked-dangerous-downloads command line option takes | 118 // Verify that disallow-unchecked-dangerous-downloads command line option takes |
111 // precedence over a Finch trial specified whitelist. | 119 // precedence over a Finch trial specified whitelist. |
112 TEST(UnverifiedDownloadFieldTrialTest, WhitelistVsCommandline) { | 120 TEST_F(UnverifiedDownloadFieldTrialTest, WhitelistVsCommandline) { |
113 FieldTrialParameters parameters; | 121 FieldTrialParameters parameters; |
114 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".foo"; | 122 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".foo"; |
115 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".exe"; | 123 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".exe"; |
116 ScopedFieldTrialState field_trial( | 124 ScopedFieldTrialState field_trial( |
117 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 125 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
118 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 126 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
119 switches::kDisallowUncheckedDangerousDownloads); | 127 switches::kDisallowUncheckedDangerousDownloads); |
120 | 128 |
121 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 129 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
122 base::FilePath(FILE_PATH_LITERAL("foo.foo")))); | 130 base::FilePath(FILE_PATH_LITERAL("foo.foo")))); |
123 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 131 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
124 base::FilePath(FILE_PATH_LITERAL("foo.exe")))); | 132 base::FilePath(FILE_PATH_LITERAL("foo.exe")))); |
125 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 133 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
126 base::FilePath(FILE_PATH_LITERAL("foo.txt")))); | 134 base::FilePath(FILE_PATH_LITERAL("foo.txt")))); |
127 } | 135 } |
128 | 136 |
129 // Verify that wildcards only work if they are specified by themselves. | 137 // Verify that wildcards only work if they are specified by themselves. |
130 TEST(UnverifiedDownloadFieldTrialTest, WildcardOnlyByItself) { | 138 TEST_F(UnverifiedDownloadFieldTrialTest, WildcardOnlyByItself) { |
131 FieldTrialParameters parameters; | 139 FieldTrialParameters parameters; |
132 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".foo,*"; | 140 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".foo,*"; |
133 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; | 141 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; |
134 ScopedFieldTrialState field_trial( | 142 ScopedFieldTrialState field_trial( |
135 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 143 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
136 | 144 |
137 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 145 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
138 base::FilePath(FILE_PATH_LITERAL("foo.foo")))); | 146 base::FilePath(FILE_PATH_LITERAL("foo.foo")))); |
139 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 147 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
140 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); | 148 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); |
141 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 149 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
142 base::FilePath(FILE_PATH_LITERAL("foo.txt")))); | 150 base::FilePath(FILE_PATH_LITERAL("foo.txt")))); |
143 } | 151 } |
144 | 152 |
145 // Verify that the blacklist takes precedence over whitelist. | 153 // Verify that the blacklist takes precedence over whitelist. |
146 TEST(UnverifiedDownloadFieldTrialTest, WhitelistVsBlacklist) { | 154 TEST_F(UnverifiedDownloadFieldTrialTest, WhitelistVsBlacklist) { |
147 FieldTrialParameters parameters; | 155 FieldTrialParameters parameters; |
148 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; | 156 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; |
149 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; | 157 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; |
150 ScopedFieldTrialState field_trial( | 158 ScopedFieldTrialState field_trial( |
151 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 159 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
152 | 160 |
153 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 161 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
154 base::FilePath(kSafeFilename))); | 162 base::FilePath(kSafeFilename))); |
155 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 163 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
156 base::FilePath(kHandledFilename))); | 164 base::FilePath(kHandledFilename))); |
157 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 165 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
158 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); | 166 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); |
159 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 167 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
160 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); | 168 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); |
161 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 169 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
162 base::FilePath(FILE_PATH_LITERAL("foo.def")))); | 170 base::FilePath(FILE_PATH_LITERAL("foo.def")))); |
163 } | 171 } |
164 | 172 |
165 // Verify that nothing terrible happens if no parameters are specified. | 173 // Verify that nothing terrible happens if no parameters are specified. |
166 TEST(UnverifiedDownloadFieldTrialTest, MissingParameters) { | 174 TEST_F(UnverifiedDownloadFieldTrialTest, MissingParameters) { |
167 ScopedFieldTrialState field_trial( | 175 ScopedFieldTrialState field_trial( |
168 kUnverifiedDownloadFieldTrialDisableByParameter); | 176 kUnverifiedDownloadFieldTrialDisableByParameter); |
169 | 177 |
170 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 178 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
171 base::FilePath(kSafeFilename))); | 179 base::FilePath(kSafeFilename))); |
172 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 180 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
173 base::FilePath(kHandledFilename))); | 181 base::FilePath(kHandledFilename))); |
174 } | 182 } |
175 | 183 |
176 // Verify that nothing terrible happens if the parameters set for a field trial | 184 // Verify that nothing terrible happens if the parameters set for a field trial |
177 // are malformed. | 185 // are malformed. |
178 TEST(UnverifiedDownloadFieldTrialTest, MalformedParameters) { | 186 TEST_F(UnverifiedDownloadFieldTrialTest, MalformedParameters) { |
179 FieldTrialParameters parameters; | 187 FieldTrialParameters parameters; |
180 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = "abcasdfa#??# ~def"; | 188 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = "abcasdfa#??# ~def"; |
181 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = | 189 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = |
182 "Robert'); DROP TABLE FinchTrials;--"; | 190 "Robert'); DROP TABLE FinchTrials;--"; |
183 ScopedFieldTrialState field_trial( | 191 ScopedFieldTrialState field_trial( |
184 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 192 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
185 | 193 |
186 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 194 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
187 base::FilePath(kSafeFilename))); | 195 base::FilePath(kSafeFilename))); |
188 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 196 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
189 base::FilePath(kHandledFilename))); | 197 base::FilePath(kHandledFilename))); |
190 } | 198 } |
191 | 199 |
192 // Verify that nothing terrible happens if the parameters set for a field trial | 200 // Verify that nothing terrible happens if the parameters set for a field trial |
193 // are empty. | 201 // are empty. |
194 TEST(UnverifiedDownloadFieldTrialTest, DisableByParam_Empty) { | 202 TEST_F(UnverifiedDownloadFieldTrialTest, DisableByParam_Empty) { |
195 FieldTrialParameters parameters; | 203 FieldTrialParameters parameters; |
196 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ""; | 204 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ""; |
197 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ""; | 205 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ""; |
198 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = ""; | 206 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = ""; |
199 ScopedFieldTrialState field_trial( | 207 ScopedFieldTrialState field_trial( |
200 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 208 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
201 | 209 |
202 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 210 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
203 base::FilePath(kSafeFilename))); | 211 base::FilePath(kSafeFilename))); |
204 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 212 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
205 base::FilePath(kHandledFilename))); | 213 base::FilePath(kHandledFilename))); |
206 } | 214 } |
207 | 215 |
208 // Verified that file types specified via white/blacklists are case insensitive. | 216 // Verified that file types specified via white/blacklists are case insensitive. |
209 TEST(UnverifiedDownloadFieldTrialTest, CaseInsensitive) { | 217 TEST_F(UnverifiedDownloadFieldTrialTest, CaseInsensitive) { |
210 FieldTrialParameters parameters; | 218 FieldTrialParameters parameters; |
211 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".ABC,.xyz"; | 219 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".ABC,.xyz"; |
212 ScopedFieldTrialState field_trial( | 220 ScopedFieldTrialState field_trial( |
213 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 221 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
214 | 222 |
215 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 223 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
216 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); | 224 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); |
217 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 225 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
218 base::FilePath(FILE_PATH_LITERAL("FOO.ABC")))); | 226 base::FilePath(FILE_PATH_LITERAL("FOO.ABC")))); |
219 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 227 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
220 base::FilePath(FILE_PATH_LITERAL("FOO.XYZ")))); | 228 base::FilePath(FILE_PATH_LITERAL("FOO.XYZ")))); |
221 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 229 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
222 base::FilePath(FILE_PATH_LITERAL("FOO.txt")))); | 230 base::FilePath(FILE_PATH_LITERAL("FOO.txt")))); |
223 } | 231 } |
224 | 232 |
225 // Verify functionality when all parameters are specified. | 233 // Verify functionality when all parameters are specified. |
226 TEST(UnverifiedDownloadFieldTrialTest, WhitelistVsBlacklistVsSBTypes) { | 234 TEST_F(UnverifiedDownloadFieldTrialTest, WhitelistVsBlacklistVsSBTypes) { |
227 FieldTrialParameters parameters; | 235 FieldTrialParameters parameters; |
228 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; | 236 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; |
229 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; | 237 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz"; |
230 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = "*"; | 238 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = "*"; |
231 ScopedFieldTrialState field_trial( | 239 ScopedFieldTrialState field_trial( |
232 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 240 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
233 | 241 |
234 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 242 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
235 base::FilePath(kSafeFilename))); | 243 base::FilePath(kSafeFilename))); |
236 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 244 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
237 base::FilePath(kHandledFilename))); | 245 base::FilePath(kHandledFilename))); |
238 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 246 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
239 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); | 247 base::FilePath(FILE_PATH_LITERAL("foo.xyz")))); |
240 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 248 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
241 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); | 249 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); |
242 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 250 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
243 base::FilePath(FILE_PATH_LITERAL("foo.def")))); | 251 base::FilePath(FILE_PATH_LITERAL("foo.def")))); |
244 } | 252 } |
245 | 253 |
246 // Verify that block_sb_types parameter being empty is equivalent to it not | 254 // Verify that block_sb_types parameter being empty is equivalent to it not |
247 // being specified. | 255 // being specified. |
248 TEST(UnverifiedDownloadFieldTrialTest, DisableSBTypesEmpty) { | 256 TEST_F(UnverifiedDownloadFieldTrialTest, DisableSBTypesEmpty) { |
249 FieldTrialParameters parameters; | 257 FieldTrialParameters parameters; |
250 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = ""; | 258 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = ""; |
251 ScopedFieldTrialState field_trial( | 259 ScopedFieldTrialState field_trial( |
252 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 260 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
253 | 261 |
254 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 262 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
255 base::FilePath(kSafeFilename))); | 263 base::FilePath(kSafeFilename))); |
256 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 264 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
257 base::FilePath(kHandledFilename))); | 265 base::FilePath(kHandledFilename))); |
258 } | 266 } |
259 | 267 |
260 // Verify that a whitelist is able to override the SafeBrowsing file type list. | 268 // Verify that a whitelist is able to override the SafeBrowsing file type list. |
261 TEST(UnverifiedDownloadFieldTrialTest, ListsOverrideSBTypes) { | 269 TEST_F(UnverifiedDownloadFieldTrialTest, ListsOverrideSBTypes) { |
262 FieldTrialParameters parameters; | 270 FieldTrialParameters parameters; |
263 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; | 271 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; |
264 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".exe"; | 272 parameters[kUnverifiedDownloadFieldTrialWhitelistParam] = ".exe"; |
265 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = "*"; | 273 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = "*"; |
266 ScopedFieldTrialState field_trial( | 274 ScopedFieldTrialState field_trial( |
267 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); | 275 kUnverifiedDownloadFieldTrialDisableByParameter, parameters); |
268 | 276 |
269 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 277 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
270 base::FilePath(kSafeFilename))); | 278 base::FilePath(kSafeFilename))); |
271 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 279 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
272 base::FilePath(kHandledFilename))); | 280 base::FilePath(kHandledFilename))); |
273 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 281 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
274 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); | 282 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); |
275 } | 283 } |
276 | 284 |
277 // Verify that the field trial is only sensitive to the prefix of the group | 285 // Verify that the field trial is only sensitive to the prefix of the group |
278 // name. | 286 // name. |
279 TEST(UnverifiedDownloadFieldTrialTest, FieldTrialGroupPrefix) { | 287 TEST_F(UnverifiedDownloadFieldTrialTest, FieldTrialGroupPrefix) { |
280 FieldTrialParameters parameters; | 288 FieldTrialParameters parameters; |
281 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; | 289 parameters[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def"; |
282 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = "*"; | 290 parameters[kUnverifiedDownloadFieldTrialBlockSBTypesParam] = "*"; |
283 ScopedFieldTrialState field_trial( | 291 ScopedFieldTrialState field_trial( |
284 std::string(kUnverifiedDownloadFieldTrialDisableByParameter) + "FooBar", | 292 std::string(kUnverifiedDownloadFieldTrialDisableByParameter) + "FooBar", |
285 parameters); | 293 parameters); |
286 | 294 |
287 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( | 295 EXPECT_TRUE(IsUnverifiedDownloadAllowedByFieldTrial( |
288 base::FilePath(kSafeFilename))); | 296 base::FilePath(kSafeFilename))); |
289 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 297 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
290 base::FilePath(kHandledFilename))); | 298 base::FilePath(kHandledFilename))); |
291 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( | 299 EXPECT_FALSE(IsUnverifiedDownloadAllowedByFieldTrial( |
292 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); | 300 base::FilePath(FILE_PATH_LITERAL("foo.abc")))); |
293 } | 301 } |
294 | 302 |
295 } // namespace safe_browsing | 303 } // namespace safe_browsing |
OLD | NEW |