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

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

Issue 1110723002: Split to SafeBrowsingDatabaseManager into Local* and Remote*. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Respond to review. Tweak comments and list initializer. Created 5 years, 7 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
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 // This test creates a fake safebrowsing service, where we can inject known- 5 // This test creates a fake safebrowsing service, where we can inject known-
6 // threat urls. It then uses a real browser to go to these urls, and sends 6 // threat urls. It then uses a real browser to go to these urls, and sends
7 // "goback" or "proceed" commands and verifies they work. 7 // "goback" or "proceed" commands and verifies they work.
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
16 #include "chrome/browser/interstitials/security_interstitial_page_test_utils.h" 16 #include "chrome/browser/interstitials/security_interstitial_page_test_utils.h"
17 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/browser/safe_browsing/database_manager.h" 18 #include "chrome/browser/safe_browsing/database_manager.h"
19 #include "chrome/browser/safe_browsing/local_database_manager.h"
19 #include "chrome/browser/safe_browsing/malware_details.h" 20 #include "chrome/browser/safe_browsing/malware_details.h"
20 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" 21 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
21 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 22 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
22 #include "chrome/browser/safe_browsing/safe_browsing_util.h" 23 #include "chrome/browser/safe_browsing/safe_browsing_util.h"
24 #include "chrome/browser/safe_browsing/test_database_manager.h"
23 #include "chrome/browser/safe_browsing/ui_manager.h" 25 #include "chrome/browser/safe_browsing/ui_manager.h"
24 #include "chrome/browser/ui/browser.h" 26 #include "chrome/browser/ui/browser.h"
25 #include "chrome/browser/ui/browser_tabstrip.h" 27 #include "chrome/browser/ui/browser_tabstrip.h"
26 #include "chrome/browser/ui/tabs/tab_strip_model.h" 28 #include "chrome/browser/ui/tabs/tab_strip_model.h"
27 #include "chrome/common/chrome_switches.h" 29 #include "chrome/common/chrome_switches.h"
28 #include "chrome/common/pref_names.h" 30 #include "chrome/common/pref_names.h"
29 #include "chrome/common/url_constants.h" 31 #include "chrome/common/url_constants.h"
30 #include "chrome/test/base/in_process_browser_test.h" 32 #include "chrome/test/base/in_process_browser_test.h"
31 #include "chrome/test/base/test_switches.h" 33 #include "chrome/test/base/test_switches.h"
32 #include "chrome/test/base/ui_test_utils.h" 34 #include "chrome/test/base/ui_test_utils.h"
(...skipping 15 matching lines...) Expand all
48 using content::WebContents; 50 using content::WebContents;
49 51
50 namespace { 52 namespace {
51 53
52 const char kEmptyPage[] = "files/empty.html"; 54 const char kEmptyPage[] = "files/empty.html";
53 const char kMalwarePage[] = "files/safe_browsing/malware.html"; 55 const char kMalwarePage[] = "files/safe_browsing/malware.html";
54 const char kMalwareIframe[] = "files/safe_browsing/malware_iframe.html"; 56 const char kMalwareIframe[] = "files/safe_browsing/malware_iframe.html";
55 57
56 // A SafeBrowsingDatabaseManager class that allows us to inject the malicious 58 // A SafeBrowsingDatabaseManager class that allows us to inject the malicious
57 // URLs. 59 // URLs.
58 class FakeSafeBrowsingDatabaseManager : public SafeBrowsingDatabaseManager { 60 class FakeSafeBrowsingDatabaseManager : public TestSafeBrowsingDatabaseManager {
59 public: 61 public:
60 explicit FakeSafeBrowsingDatabaseManager(SafeBrowsingService* service) 62 FakeSafeBrowsingDatabaseManager() {}
61 : SafeBrowsingDatabaseManager(service) { }
62 63
63 // Called on the IO thread to check if the given url is safe or not. If we 64 // Called on the IO thread to check if the given url is safe or not. If we
64 // can synchronously determine that the url is safe, CheckUrl returns true. 65 // can synchronously determine that the url is safe, CheckUrl returns true.
65 // Otherwise it returns false, and "client" is called asynchronously with the 66 // Otherwise it returns false, and "client" is called asynchronously with the
66 // result when it is ready. 67 // result when it is ready.
67 // Overrides SafeBrowsingDatabaseManager::CheckBrowseUrl. 68 // Overrides SafeBrowsingDatabaseManager::CheckBrowseUrl.
68 bool CheckBrowseUrl(const GURL& gurl, Client* client) override { 69 bool CheckBrowseUrl(const GURL& gurl, Client* client) override {
69 if (badurls[gurl.spec()] == SB_THREAT_TYPE_SAFE) 70 if (badurls[gurl.spec()] == SB_THREAT_TYPE_SAFE)
70 return true; 71 return true;
71 72
72 BrowserThread::PostTask( 73 BrowserThread::PostTask(
73 BrowserThread::IO, FROM_HERE, 74 BrowserThread::IO, FROM_HERE,
74 base::Bind(&FakeSafeBrowsingDatabaseManager::OnCheckBrowseURLDone, 75 base::Bind(&FakeSafeBrowsingDatabaseManager::OnCheckBrowseURLDone,
75 this, gurl, client)); 76 this, gurl, client));
76 return false; 77 return false;
77 } 78 }
78 79
79 void OnCheckBrowseURLDone(const GURL& gurl, Client* client) { 80 void OnCheckBrowseURLDone(const GURL& gurl, Client* client) {
80 std::vector<SBThreatType> expected_threats; 81 std::vector<SBThreatType> expected_threats;
82 // TODO(nparker): Remove ref to LocalSafeBrowsingDatabase by calling
83 // client->OnCheckBrowseUrlResult(..) directly.
81 expected_threats.push_back(SB_THREAT_TYPE_URL_MALWARE); 84 expected_threats.push_back(SB_THREAT_TYPE_URL_MALWARE);
82 expected_threats.push_back(SB_THREAT_TYPE_URL_PHISHING); 85 expected_threats.push_back(SB_THREAT_TYPE_URL_PHISHING);
83 expected_threats.push_back(SB_THREAT_TYPE_URL_UNWANTED); 86 expected_threats.push_back(SB_THREAT_TYPE_URL_UNWANTED);
84 SafeBrowsingDatabaseManager::SafeBrowsingCheck sb_check( 87 LocalSafeBrowsingDatabaseManager::SafeBrowsingCheck sb_check(
85 std::vector<GURL>(1, gurl), 88 std::vector<GURL>(1, gurl),
86 std::vector<SBFullHash>(), 89 std::vector<SBFullHash>(),
87 client, 90 client,
88 safe_browsing_util::MALWARE, 91 safe_browsing_util::MALWARE,
89 expected_threats); 92 expected_threats);
90 sb_check.url_results[0] = badurls[gurl.spec()]; 93 sb_check.url_results[0] = badurls[gurl.spec()];
91 client->OnSafeBrowsingResult(sb_check); 94 sb_check.OnSafeBrowsingResult();
92 } 95 }
93 96
94 void SetURLThreatType(const GURL& url, SBThreatType threat_type) { 97 void SetURLThreatType(const GURL& url, SBThreatType threat_type) {
95 badurls[url.spec()] = threat_type; 98 badurls[url.spec()] = threat_type;
96 } 99 }
97 100
101 // Called during startup, so must not check-fail.
102 bool CheckExtensionIDs(const std::set<std::string>& extension_ids,
103 Client* client) override {
104 return true;
105 }
106
98 private: 107 private:
99 ~FakeSafeBrowsingDatabaseManager() override {} 108 ~FakeSafeBrowsingDatabaseManager() override {}
100 109
101 base::hash_map<std::string, SBThreatType> badurls; 110 base::hash_map<std::string, SBThreatType> badurls;
102 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingDatabaseManager); 111 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingDatabaseManager);
103 }; 112 };
104 113
105 // A SafeBrowingUIManager class that allows intercepting malware details. 114 // A SafeBrowingUIManager class that allows intercepting malware details.
106 class FakeSafeBrowsingUIManager : public SafeBrowsingUIManager { 115 class FakeSafeBrowsingUIManager : public SafeBrowsingUIManager {
107 public: 116 public:
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 // Returned pointer has the same lifespan as the ui_manager_ refcounted 174 // Returned pointer has the same lifespan as the ui_manager_ refcounted
166 // object. 175 // object.
167 FakeSafeBrowsingUIManager* fake_ui_manager() { 176 FakeSafeBrowsingUIManager* fake_ui_manager() {
168 return fake_ui_manager_; 177 return fake_ui_manager_;
169 } 178 }
170 179
171 protected: 180 protected:
172 ~FakeSafeBrowsingService() override {} 181 ~FakeSafeBrowsingService() override {}
173 182
174 SafeBrowsingDatabaseManager* CreateDatabaseManager() override { 183 SafeBrowsingDatabaseManager* CreateDatabaseManager() override {
175 fake_database_manager_ = new FakeSafeBrowsingDatabaseManager(this); 184 fake_database_manager_ = new FakeSafeBrowsingDatabaseManager();
176 return fake_database_manager_; 185 return fake_database_manager_;
177 } 186 }
178 187
179 SafeBrowsingUIManager* CreateUIManager() override { 188 SafeBrowsingUIManager* CreateUIManager() override {
180 fake_ui_manager_ = new FakeSafeBrowsingUIManager(this); 189 fake_ui_manager_ = new FakeSafeBrowsingUIManager(this);
181 return fake_ui_manager_; 190 return fake_ui_manager_;
182 } 191 }
183 192
193 SafeBrowsingProtocolManagerDelegate* GetProtocolManagerDelegate() override {
194 // Our SafeBrowsingDatabaseManager doesn't implement this delegate.
195 return NULL;
196 }
197
184 private: 198 private:
185 FakeSafeBrowsingDatabaseManager* fake_database_manager_; 199 FakeSafeBrowsingDatabaseManager* fake_database_manager_;
186 FakeSafeBrowsingUIManager* fake_ui_manager_; 200 FakeSafeBrowsingUIManager* fake_ui_manager_;
187 201
188 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService); 202 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService);
189 }; 203 };
190 204
191 // Factory that creates FakeSafeBrowsingService instances. 205 // Factory that creates FakeSafeBrowsingService instances.
192 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { 206 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory {
193 public: 207 public:
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageIDNTest, 866 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageIDNTest,
853 SafeBrowsingBlockingPageDecodesIDN) { 867 SafeBrowsingBlockingPageDecodesIDN) {
854 EXPECT_TRUE(VerifyIDNDecoded()); 868 EXPECT_TRUE(VerifyIDNDecoded());
855 } 869 }
856 870
857 INSTANTIATE_TEST_CASE_P(SafeBrowsingBlockingPageIDNTestWithThreatType, 871 INSTANTIATE_TEST_CASE_P(SafeBrowsingBlockingPageIDNTestWithThreatType,
858 SafeBrowsingBlockingPageIDNTest, 872 SafeBrowsingBlockingPageIDNTest,
859 testing::Values(SB_THREAT_TYPE_URL_MALWARE, 873 testing::Values(SB_THREAT_TYPE_URL_MALWARE,
860 SB_THREAT_TYPE_URL_PHISHING, 874 SB_THREAT_TYPE_URL_PHISHING,
861 SB_THREAT_TYPE_URL_UNWANTED)); 875 SB_THREAT_TYPE_URL_UNWANTED));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698