OLD | NEW |
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 | 5 // This test creates a fake safebrowsing service, where we can inject |
6 // malware and phishing urls. It then uses a real browser to go to | 6 // malware and phishing urls. It then uses a real browser to go to |
7 // these urls, and sends "goback" or "proceed" commands and verifies | 7 // these urls, and sends "goback" or "proceed" commands and verifies |
8 // they work. | 8 // they work. |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 class FakeSafeBrowsingDatabaseManager : public SafeBrowsingDatabaseManager { | 54 class FakeSafeBrowsingDatabaseManager : public SafeBrowsingDatabaseManager { |
55 public: | 55 public: |
56 explicit FakeSafeBrowsingDatabaseManager(SafeBrowsingService* service) | 56 explicit FakeSafeBrowsingDatabaseManager(SafeBrowsingService* service) |
57 : SafeBrowsingDatabaseManager(service) { } | 57 : SafeBrowsingDatabaseManager(service) { } |
58 | 58 |
59 // Called on the IO thread to check if the given url is safe or not. If we | 59 // Called on the IO thread to check if the given url is safe or not. If we |
60 // can synchronously determine that the url is safe, CheckUrl returns true. | 60 // can synchronously determine that the url is safe, CheckUrl returns true. |
61 // Otherwise it returns false, and "client" is called asynchronously with the | 61 // Otherwise it returns false, and "client" is called asynchronously with the |
62 // result when it is ready. | 62 // result when it is ready. |
63 // Overrides SafeBrowsingDatabaseManager::CheckBrowseUrl. | 63 // Overrides SafeBrowsingDatabaseManager::CheckBrowseUrl. |
64 virtual bool CheckBrowseUrl(const GURL& gurl, Client* client) OVERRIDE { | 64 virtual bool CheckBrowseUrl(const GURL& gurl, Client* client) override { |
65 if (badurls[gurl.spec()] == SB_THREAT_TYPE_SAFE) | 65 if (badurls[gurl.spec()] == SB_THREAT_TYPE_SAFE) |
66 return true; | 66 return true; |
67 | 67 |
68 BrowserThread::PostTask( | 68 BrowserThread::PostTask( |
69 BrowserThread::IO, FROM_HERE, | 69 BrowserThread::IO, FROM_HERE, |
70 base::Bind(&FakeSafeBrowsingDatabaseManager::OnCheckBrowseURLDone, | 70 base::Bind(&FakeSafeBrowsingDatabaseManager::OnCheckBrowseURLDone, |
71 this, gurl, client)); | 71 this, gurl, client)); |
72 return false; | 72 return false; |
73 } | 73 } |
74 | 74 |
(...skipping 23 matching lines...) Expand all Loading... |
98 }; | 98 }; |
99 | 99 |
100 // A SafeBrowingUIManager class that allows intercepting malware details. | 100 // A SafeBrowingUIManager class that allows intercepting malware details. |
101 class FakeSafeBrowsingUIManager : public SafeBrowsingUIManager { | 101 class FakeSafeBrowsingUIManager : public SafeBrowsingUIManager { |
102 public: | 102 public: |
103 explicit FakeSafeBrowsingUIManager(SafeBrowsingService* service) : | 103 explicit FakeSafeBrowsingUIManager(SafeBrowsingService* service) : |
104 SafeBrowsingUIManager(service) { } | 104 SafeBrowsingUIManager(service) { } |
105 | 105 |
106 // Overrides SafeBrowsingUIManager | 106 // Overrides SafeBrowsingUIManager |
107 virtual void SendSerializedMalwareDetails( | 107 virtual void SendSerializedMalwareDetails( |
108 const std::string& serialized) OVERRIDE { | 108 const std::string& serialized) override { |
109 // Notify the UI thread that we got a report. | 109 // Notify the UI thread that we got a report. |
110 BrowserThread::PostTask( | 110 BrowserThread::PostTask( |
111 BrowserThread::UI, | 111 BrowserThread::UI, |
112 FROM_HERE, | 112 FROM_HERE, |
113 base::Bind(&FakeSafeBrowsingUIManager::OnMalwareDetailsDone, | 113 base::Bind(&FakeSafeBrowsingUIManager::OnMalwareDetailsDone, |
114 this, | 114 this, |
115 serialized)); | 115 serialized)); |
116 } | 116 } |
117 | 117 |
118 void OnMalwareDetailsDone(const std::string& serialized) { | 118 void OnMalwareDetailsDone(const std::string& serialized) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 } | 160 } |
161 // Returned pointer has the same lifespan as the ui_manager_ refcounted | 161 // Returned pointer has the same lifespan as the ui_manager_ refcounted |
162 // object. | 162 // object. |
163 FakeSafeBrowsingUIManager* fake_ui_manager() { | 163 FakeSafeBrowsingUIManager* fake_ui_manager() { |
164 return fake_ui_manager_; | 164 return fake_ui_manager_; |
165 } | 165 } |
166 | 166 |
167 protected: | 167 protected: |
168 virtual ~FakeSafeBrowsingService() { } | 168 virtual ~FakeSafeBrowsingService() { } |
169 | 169 |
170 virtual SafeBrowsingDatabaseManager* CreateDatabaseManager() OVERRIDE { | 170 virtual SafeBrowsingDatabaseManager* CreateDatabaseManager() override { |
171 fake_database_manager_ = new FakeSafeBrowsingDatabaseManager(this); | 171 fake_database_manager_ = new FakeSafeBrowsingDatabaseManager(this); |
172 return fake_database_manager_; | 172 return fake_database_manager_; |
173 } | 173 } |
174 | 174 |
175 virtual SafeBrowsingUIManager* CreateUIManager() OVERRIDE { | 175 virtual SafeBrowsingUIManager* CreateUIManager() override { |
176 fake_ui_manager_ = new FakeSafeBrowsingUIManager(this); | 176 fake_ui_manager_ = new FakeSafeBrowsingUIManager(this); |
177 return fake_ui_manager_; | 177 return fake_ui_manager_; |
178 } | 178 } |
179 | 179 |
180 private: | 180 private: |
181 FakeSafeBrowsingDatabaseManager* fake_database_manager_; | 181 FakeSafeBrowsingDatabaseManager* fake_database_manager_; |
182 FakeSafeBrowsingUIManager* fake_ui_manager_; | 182 FakeSafeBrowsingUIManager* fake_ui_manager_; |
183 | 183 |
184 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService); | 184 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingService); |
185 }; | 185 }; |
186 | 186 |
187 // Factory that creates FakeSafeBrowsingService instances. | 187 // Factory that creates FakeSafeBrowsingService instances. |
188 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { | 188 class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { |
189 public: | 189 public: |
190 TestSafeBrowsingServiceFactory() : | 190 TestSafeBrowsingServiceFactory() : |
191 most_recent_service_(NULL) { } | 191 most_recent_service_(NULL) { } |
192 virtual ~TestSafeBrowsingServiceFactory() { } | 192 virtual ~TestSafeBrowsingServiceFactory() { } |
193 | 193 |
194 virtual SafeBrowsingService* CreateSafeBrowsingService() OVERRIDE { | 194 virtual SafeBrowsingService* CreateSafeBrowsingService() override { |
195 most_recent_service_ = new FakeSafeBrowsingService(); | 195 most_recent_service_ = new FakeSafeBrowsingService(); |
196 return most_recent_service_; | 196 return most_recent_service_; |
197 } | 197 } |
198 | 198 |
199 FakeSafeBrowsingService* most_recent_service() const { | 199 FakeSafeBrowsingService* most_recent_service() const { |
200 return most_recent_service_; | 200 return most_recent_service_; |
201 } | 201 } |
202 | 202 |
203 private: | 203 private: |
204 FakeSafeBrowsingService* most_recent_service_; | 204 FakeSafeBrowsingService* most_recent_service_; |
205 }; | 205 }; |
206 | 206 |
207 // A MalwareDetails class lets us intercept calls from the renderer. | 207 // A MalwareDetails class lets us intercept calls from the renderer. |
208 class FakeMalwareDetails : public MalwareDetails { | 208 class FakeMalwareDetails : public MalwareDetails { |
209 public: | 209 public: |
210 FakeMalwareDetails( | 210 FakeMalwareDetails( |
211 SafeBrowsingUIManager* delegate, | 211 SafeBrowsingUIManager* delegate, |
212 WebContents* web_contents, | 212 WebContents* web_contents, |
213 const SafeBrowsingUIManager::UnsafeResource& unsafe_resource) | 213 const SafeBrowsingUIManager::UnsafeResource& unsafe_resource) |
214 : MalwareDetails(delegate, web_contents, unsafe_resource), | 214 : MalwareDetails(delegate, web_contents, unsafe_resource), |
215 got_dom_(false), | 215 got_dom_(false), |
216 waiting_(false) { } | 216 waiting_(false) { } |
217 | 217 |
218 virtual void AddDOMDetails( | 218 virtual void AddDOMDetails( |
219 const std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node>& params) | 219 const std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node>& params) |
220 OVERRIDE { | 220 override { |
221 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 221 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
222 MalwareDetails::AddDOMDetails(params); | 222 MalwareDetails::AddDOMDetails(params); |
223 | 223 |
224 // Notify the UI thread that we got the dom details. | 224 // Notify the UI thread that we got the dom details. |
225 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 225 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
226 base::Bind(&FakeMalwareDetails::OnDOMDetailsDone, | 226 base::Bind(&FakeMalwareDetails::OnDOMDetailsDone, |
227 this)); | 227 this)); |
228 } | 228 } |
229 | 229 |
230 void WaitForDOM() { | 230 void WaitForDOM() { |
(...skipping 24 matching lines...) Expand all Loading... |
255 }; | 255 }; |
256 | 256 |
257 class TestMalwareDetailsFactory : public MalwareDetailsFactory { | 257 class TestMalwareDetailsFactory : public MalwareDetailsFactory { |
258 public: | 258 public: |
259 TestMalwareDetailsFactory() : details_() { } | 259 TestMalwareDetailsFactory() : details_() { } |
260 virtual ~TestMalwareDetailsFactory() { } | 260 virtual ~TestMalwareDetailsFactory() { } |
261 | 261 |
262 virtual MalwareDetails* CreateMalwareDetails( | 262 virtual MalwareDetails* CreateMalwareDetails( |
263 SafeBrowsingUIManager* delegate, | 263 SafeBrowsingUIManager* delegate, |
264 WebContents* web_contents, | 264 WebContents* web_contents, |
265 const SafeBrowsingUIManager::UnsafeResource& unsafe_resource) OVERRIDE { | 265 const SafeBrowsingUIManager::UnsafeResource& unsafe_resource) override { |
266 details_ = new FakeMalwareDetails(delegate, web_contents, | 266 details_ = new FakeMalwareDetails(delegate, web_contents, |
267 unsafe_resource); | 267 unsafe_resource); |
268 return details_; | 268 return details_; |
269 } | 269 } |
270 | 270 |
271 FakeMalwareDetails* get_details() { | 271 FakeMalwareDetails* get_details() { |
272 return details_; | 272 return details_; |
273 } | 273 } |
274 | 274 |
275 private: | 275 private: |
(...skipping 20 matching lines...) Expand all Loading... |
296 base::MessageLoopForUI::current()->Quit(); | 296 base::MessageLoopForUI::current()->Quit(); |
297 wait_for_delete_ = false; | 297 wait_for_delete_ = false; |
298 } | 298 } |
299 | 299 |
300 void WaitForDelete() { | 300 void WaitForDelete() { |
301 wait_for_delete_ = true; | 301 wait_for_delete_ = true; |
302 content::RunMessageLoop(); | 302 content::RunMessageLoop(); |
303 } | 303 } |
304 | 304 |
305 // InterstitialPageDelegate methods: | 305 // InterstitialPageDelegate methods: |
306 virtual void CommandReceived(const std::string& command) OVERRIDE { | 306 virtual void CommandReceived(const std::string& command) override { |
307 SafeBrowsingBlockingPage::CommandReceived(command); | 307 SafeBrowsingBlockingPage::CommandReceived(command); |
308 } | 308 } |
309 virtual void OnProceed() OVERRIDE { | 309 virtual void OnProceed() override { |
310 SafeBrowsingBlockingPage::OnProceed(); | 310 SafeBrowsingBlockingPage::OnProceed(); |
311 } | 311 } |
312 virtual void OnDontProceed() OVERRIDE { | 312 virtual void OnDontProceed() override { |
313 SafeBrowsingBlockingPage::OnDontProceed(); | 313 SafeBrowsingBlockingPage::OnDontProceed(); |
314 } | 314 } |
315 | 315 |
316 private: | 316 private: |
317 bool wait_for_delete_; | 317 bool wait_for_delete_; |
318 }; | 318 }; |
319 | 319 |
320 class TestSafeBrowsingBlockingPageFactory | 320 class TestSafeBrowsingBlockingPageFactory |
321 : public SafeBrowsingBlockingPageFactory { | 321 : public SafeBrowsingBlockingPageFactory { |
322 public: | 322 public: |
323 TestSafeBrowsingBlockingPageFactory() { } | 323 TestSafeBrowsingBlockingPageFactory() { } |
324 virtual ~TestSafeBrowsingBlockingPageFactory() { } | 324 virtual ~TestSafeBrowsingBlockingPageFactory() { } |
325 | 325 |
326 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( | 326 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( |
327 SafeBrowsingUIManager* delegate, | 327 SafeBrowsingUIManager* delegate, |
328 WebContents* web_contents, | 328 WebContents* web_contents, |
329 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) | 329 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) |
330 OVERRIDE { | 330 override { |
331 return new TestSafeBrowsingBlockingPage(delegate, web_contents, | 331 return new TestSafeBrowsingBlockingPage(delegate, web_contents, |
332 unsafe_resources); | 332 unsafe_resources); |
333 } | 333 } |
334 }; | 334 }; |
335 | 335 |
336 } // namespace | 336 } // namespace |
337 | 337 |
338 // Tests the safe browsing blocking page in a browser. | 338 // Tests the safe browsing blocking page in a browser. |
339 class SafeBrowsingBlockingPageBrowserTest | 339 class SafeBrowsingBlockingPageBrowserTest |
340 : public InProcessBrowserTest, | 340 : public InProcessBrowserTest, |
341 public testing::WithParamInterface<int> { | 341 public testing::WithParamInterface<int> { |
342 public: | 342 public: |
343 enum Visibility { | 343 enum Visibility { |
344 VISIBILITY_ERROR = -1, | 344 VISIBILITY_ERROR = -1, |
345 HIDDEN = 0, | 345 HIDDEN = 0, |
346 VISIBLE = 1 | 346 VISIBLE = 1 |
347 }; | 347 }; |
348 | 348 |
349 SafeBrowsingBlockingPageBrowserTest() { | 349 SafeBrowsingBlockingPageBrowserTest() { |
350 } | 350 } |
351 | 351 |
352 virtual void SetUp() OVERRIDE { | 352 virtual void SetUp() override { |
353 SafeBrowsingService::RegisterFactory(&factory_); | 353 SafeBrowsingService::RegisterFactory(&factory_); |
354 SafeBrowsingBlockingPage::RegisterFactory(&blocking_page_factory_); | 354 SafeBrowsingBlockingPage::RegisterFactory(&blocking_page_factory_); |
355 MalwareDetails::RegisterFactory(&details_factory_); | 355 MalwareDetails::RegisterFactory(&details_factory_); |
356 InProcessBrowserTest::SetUp(); | 356 InProcessBrowserTest::SetUp(); |
357 } | 357 } |
358 | 358 |
359 virtual void TearDown() OVERRIDE { | 359 virtual void TearDown() override { |
360 InProcessBrowserTest::TearDown(); | 360 InProcessBrowserTest::TearDown(); |
361 SafeBrowsingBlockingPage::RegisterFactory(NULL); | 361 SafeBrowsingBlockingPage::RegisterFactory(NULL); |
362 SafeBrowsingService::RegisterFactory(NULL); | 362 SafeBrowsingService::RegisterFactory(NULL); |
363 MalwareDetails::RegisterFactory(NULL); | 363 MalwareDetails::RegisterFactory(NULL); |
364 } | 364 } |
365 | 365 |
366 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 366 virtual void SetUpInProcessBrowserTestFixture() override { |
367 ASSERT_TRUE(test_server()->Start()); | 367 ASSERT_TRUE(test_server()->Start()); |
368 } | 368 } |
369 | 369 |
370 void SetURLThreatType(const GURL& url, SBThreatType threat_type) { | 370 void SetURLThreatType(const GURL& url, SBThreatType threat_type) { |
371 FakeSafeBrowsingService* service = | 371 FakeSafeBrowsingService* service = |
372 static_cast<FakeSafeBrowsingService*>( | 372 static_cast<FakeSafeBrowsingService*>( |
373 g_browser_process->safe_browsing_service()); | 373 g_browser_process->safe_browsing_service()); |
374 | 374 |
375 ASSERT_TRUE(service); | 375 ASSERT_TRUE(service); |
376 service->fake_database_manager()->SetURLThreatType(url, threat_type); | 376 service->fake_database_manager()->SetURLThreatType(url, threat_type); |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageBrowserTest, PhishingLearnMore) { | 842 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageBrowserTest, PhishingLearnMore) { |
843 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING); | 843 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING); |
844 EXPECT_TRUE(ClickAndWaitForDetach("help-link")); | 844 EXPECT_TRUE(ClickAndWaitForDetach("help-link")); |
845 AssertNoInterstitial(false); // Assert the interstitial is gone | 845 AssertNoInterstitial(false); // Assert the interstitial is gone |
846 | 846 |
847 // We are in the help page. | 847 // We are in the help page. |
848 EXPECT_EQ( | 848 EXPECT_EQ( |
849 "/transparencyreport/safebrowsing/", | 849 "/transparencyreport/safebrowsing/", |
850 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); | 850 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); |
851 } | 851 } |
OLD | NEW |