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