Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: chrome/browser/safe_browsing/unverified_download_field_trial_unittest.cc

Issue 1409003002: [SafeBrowsing] Block dangerous unchecked downloads based on a Finch trial. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/safe_browsing/unverified_download_field_trial.h"
6
7 #include "base/command_line.h"
8 #include "base/files/file_path.h"
9 #include "base/metrics/field_trial.h"
10 #include "chrome/common/chrome_switches.h"
11 #include "chrome/common/safe_browsing/download_protection_util.h"
12 #include "components/variations/variations_associated_data.h"
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace safe_browsing {
17
18 namespace {
19
20 const base::FilePath::CharType kSafeFilename[] = FILE_PATH_LITERAL("foo.txt");
21 const base::FilePath::CharType kHandledFilename[] =
22 FILE_PATH_LITERAL("foo.exe");
23
24 } // namespace
25
26 TEST(UnverifiedDownloadFieldTrialTest, Assumptions) {
27 EXPECT_TRUE(safe_browsing::download_protection_util::IsSupportedBinaryFile(
28 base::FilePath(kHandledFilename)));
mattm 2015/10/21 00:26:05 also verify the kSafeFilename is not a supported b
asanka 2015/10/22 21:55:12 Done.
29 }
30
31 TEST(UnverifiedDownloadFieldTrialTest, AllowAll) {
32 base::CommandLine::ForCurrentProcess()->AppendSwitch(
33 switches::kAllowUncheckedDangerousDownloads);
34 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
35 base::FilePath(kSafeFilename)));
36 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
37 base::FilePath(kHandledFilename)));
38 }
39
40 TEST(UnverifiedDownloadFieldTrialTest, DisallowDangerous) {
41 base::CommandLine::ForCurrentProcess()->AppendSwitch(
42 switches::kDisallowUncheckedDangerousDownloads);
43 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
44 base::FilePath(kSafeFilename)));
45 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
46 base::FilePath(kHandledFilename)));
47 }
48
49 TEST(UnverifiedDownloadFieldTrialTest, DisableAll) {
50 base::FieldTrialList field_trial_list(nullptr);
51 base::FieldTrialList::CreateFieldTrial(
52 kUnverifiedDownloadFieldTrialName,
53 kUnverifiedDownloadFieldTrialDisableAll);
54 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
55 base::FilePath(kSafeFilename)));
56 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
57 base::FilePath(kHandledFilename)));
58 }
59
60 TEST(UnverifiedDownloadFieldTrialTest, DisableByParam) {
61 base::FieldTrialList field_trial_list(nullptr);
62 std::map<std::string, std::string> param_map;
63 param_map[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def";
64 param_map[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz";
65 variations::AssociateVariationParams(
66 kUnverifiedDownloadFieldTrialName,
67 kUnverifiedDownloadFieldTrialDisableByParameter, param_map);
68 base::FieldTrialList::CreateFieldTrial(
69 kUnverifiedDownloadFieldTrialName,
70 kUnverifiedDownloadFieldTrialDisableByParameter);
71
72 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
73 base::FilePath(kSafeFilename)));
74 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
75 base::FilePath(kHandledFilename)));
76 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
77 base::FilePath(FILE_PATH_LITERAL("foo.xyz"))));
78 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
79 base::FilePath(FILE_PATH_LITERAL("foo.abc"))));
80 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
81 base::FilePath(FILE_PATH_LITERAL("foo.def"))));
82 }
83
84 TEST(UnverifiedDownloadFieldTrialTest, DisableSBTypesAndByParameter) {
85 base::FieldTrialList field_trial_list(nullptr);
86 std::map<std::string, std::string> param_map;
87 param_map[kUnverifiedDownloadFieldTrialBlacklistParam] = ".abc,.def";
88 param_map[kUnverifiedDownloadFieldTrialWhitelistParam] = ".xyz";
mattm 2015/10/21 00:26:05 Also test that you can override a SB type by white
asanka 2015/10/22 21:55:12 Done and good point.
89 variations::AssociateVariationParams(
90 kUnverifiedDownloadFieldTrialName,
91 kUnverifiedDownloadFieldTrialDisableSBTypesAndByParameter, param_map);
92 base::FieldTrialList::CreateFieldTrial(
93 kUnverifiedDownloadFieldTrialName,
94 kUnverifiedDownloadFieldTrialDisableSBTypesAndByParameter);
95
96 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
97 base::FilePath(kSafeFilename)));
98 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
99 base::FilePath(kHandledFilename)));
100 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
101 base::FilePath(FILE_PATH_LITERAL("foo.xyz"))));
102 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
103 base::FilePath(FILE_PATH_LITERAL("foo.abc"))));
104 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
105 base::FilePath(FILE_PATH_LITERAL("foo.def"))));
106 }
107
108 TEST(UnverifiedDownloadFieldTrialTest, DisableBySBTypes) {
109 base::FieldTrialList field_trial_list(nullptr);
110 base::FieldTrialList::CreateFieldTrial(
111 kUnverifiedDownloadFieldTrialName,
112 kUnverifiedDownloadFieldTrialDisableSBTypes);
113 EXPECT_TRUE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
114 base::FilePath(kSafeFilename)));
115 EXPECT_FALSE(safe_browsing::IsUnverifiedDownloadAllowedByFieldTrial(
116 base::FilePath(kHandledFilename)));
117 }
118
119 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698