| 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 |