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

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

Issue 42553002: Mostly integrate new malware IP blacklist with the csd client. When (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address more comments Created 7 years, 1 month 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 | Annotate | Revision Log
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 #include "base/files/file_path.h" 5 #include "base/files/file_path.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/synchronization/waitable_event.h" 10 #include "base/synchronization/waitable_event.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 } 79 }
80 80
81 // It's kind of insane that InvokeArgument doesn't work with callbacks, but it 81 // It's kind of insane that InvokeArgument doesn't work with callbacks, but it
82 // doesn't seem like it. 82 // doesn't seem like it.
83 ACTION_TEMPLATE(InvokeCallbackArgument, 83 ACTION_TEMPLATE(InvokeCallbackArgument,
84 HAS_1_TEMPLATE_PARAMS(int, k), 84 HAS_1_TEMPLATE_PARAMS(int, k),
85 AND_2_VALUE_PARAMS(p0, p1)) { 85 AND_2_VALUE_PARAMS(p0, p1)) {
86 ::std::tr1::get<k>(args).Run(p0, p1); 86 ::std::tr1::get<k>(args).Run(p0, p1);
87 } 87 }
88 88
89 ACTION_P(InvokeMalwareCallback, verdict) {
90 scoped_ptr<ClientMalwareRequest> request(::std::tr1::get<1>(args));
91 request->CopyFrom(*verdict);
92 ::std::tr1::get<2>(args).Run(true, request.Pass());
93 }
94
89 void EmptyUrlCheckCallback(bool processed) { 95 void EmptyUrlCheckCallback(bool processed) {
90 } 96 }
91 97
92 class MockClientSideDetectionService : public ClientSideDetectionService { 98 class MockClientSideDetectionService : public ClientSideDetectionService {
93 public: 99 public:
94 MockClientSideDetectionService() : ClientSideDetectionService(NULL) {} 100 MockClientSideDetectionService() : ClientSideDetectionService(NULL) {}
95 virtual ~MockClientSideDetectionService() {}; 101 virtual ~MockClientSideDetectionService() {};
96 102
97 MOCK_METHOD2(SendClientReportPhishingRequest, 103 MOCK_METHOD2(SendClientReportPhishingRequest,
98 void(ClientPhishingRequest*, 104 void(ClientPhishingRequest*,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 private: 138 private:
133 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingUIManager); 139 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingUIManager);
134 }; 140 };
135 141
136 class MockSafeBrowsingDatabaseManager : public SafeBrowsingDatabaseManager { 142 class MockSafeBrowsingDatabaseManager : public SafeBrowsingDatabaseManager {
137 public: 143 public:
138 explicit MockSafeBrowsingDatabaseManager(SafeBrowsingService* service) 144 explicit MockSafeBrowsingDatabaseManager(SafeBrowsingService* service)
139 : SafeBrowsingDatabaseManager(service) { } 145 : SafeBrowsingDatabaseManager(service) { }
140 146
141 MOCK_METHOD1(MatchCsdWhitelistUrl, bool(const GURL&)); 147 MOCK_METHOD1(MatchCsdWhitelistUrl, bool(const GURL&));
148 MOCK_METHOD1(MatchMalwareIP, bool(const std::string& ip_address));
142 149
143 protected: 150 protected:
144 virtual ~MockSafeBrowsingDatabaseManager() {} 151 virtual ~MockSafeBrowsingDatabaseManager() {}
145 152
146 private: 153 private:
147 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingDatabaseManager); 154 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingDatabaseManager);
148 }; 155 };
149 156
150 class MockTestingProfile : public TestingProfile { 157 class MockTestingProfile : public TestingProfile {
151 public: 158 public:
152 MockTestingProfile() {} 159 MockTestingProfile() {}
153 virtual ~MockTestingProfile() {} 160 virtual ~MockTestingProfile() {}
154 161
155 MOCK_CONST_METHOD0(IsOffTheRecord, bool()); 162 MOCK_CONST_METHOD0(IsOffTheRecord, bool());
156 }; 163 };
157 164
158 class MockBrowserFeatureExtractor : public BrowserFeatureExtractor { 165 class MockBrowserFeatureExtractor : public BrowserFeatureExtractor {
159 public: 166 public:
160 explicit MockBrowserFeatureExtractor( 167 explicit MockBrowserFeatureExtractor(
161 WebContents* tab, 168 WebContents* tab,
162 ClientSideDetectionService* service) 169 ClientSideDetectionHost* host)
163 : BrowserFeatureExtractor(tab, service) {} 170 : BrowserFeatureExtractor(tab, host) {}
164 virtual ~MockBrowserFeatureExtractor() {} 171 virtual ~MockBrowserFeatureExtractor() {}
165 172
166 MOCK_METHOD3(ExtractFeatures, 173 MOCK_METHOD3(ExtractFeatures,
167 void(const BrowseInfo* info, 174 void(const BrowseInfo*,
168 ClientPhishingRequest*, 175 ClientPhishingRequest*,
169 const BrowserFeatureExtractor::DoneCallback&)); 176 const BrowserFeatureExtractor::DoneCallback&));
170 177
171 MOCK_METHOD2(ExtractMalwareFeatures, 178 MOCK_METHOD3(ExtractMalwareFeatures,
172 void(const BrowseInfo* info, 179 void(BrowseInfo*,
173 ClientMalwareRequest*)); 180 ClientMalwareRequest*,
181 const BrowserFeatureExtractor::MalwareDoneCallback&));
174 }; 182 };
175 183
176 } // namespace 184 } // namespace
177 185
178 class ClientSideDetectionHostTest : public ChromeRenderViewHostTestHarness { 186 class ClientSideDetectionHostTest : public ChromeRenderViewHostTestHarness {
179 public: 187 public:
180 typedef SafeBrowsingUIManager::UnsafeResource UnsafeResource; 188 typedef SafeBrowsingUIManager::UnsafeResource UnsafeResource;
181 189
182 virtual void SetUp() { 190 virtual void SetUp() {
183 ChromeRenderViewHostTestHarness::SetUp(); 191 ChromeRenderViewHostTestHarness::SetUp();
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 // Crashes on Blink canary bots: http://crbug.com/299149 333 // Crashes on Blink canary bots: http://crbug.com/299149
326 TEST_F(ClientSideDetectionHostTest, 334 TEST_F(ClientSideDetectionHostTest,
327 DISABLED_OnPhishingDetectionDoneInvalidVerdict) { 335 DISABLED_OnPhishingDetectionDoneInvalidVerdict) {
328 #else 336 #else
329 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneInvalidVerdict) { 337 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneInvalidVerdict) {
330 #endif 338 #endif
331 // Case 0: renderer sends an invalid verdict string that we're unable to 339 // Case 0: renderer sends an invalid verdict string that we're unable to
332 // parse. 340 // parse.
333 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 341 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
334 web_contents(), 342 web_contents(),
335 csd_service_.get()); 343 csd_host_.get());
336 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 344 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
337 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); 345 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0);
338 OnPhishingDetectionDone("Invalid Protocol Buffer"); 346 OnPhishingDetectionDone("Invalid Protocol Buffer");
339 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); 347 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor));
340 } 348 }
341 349
342 #if defined(OS_WIN) 350 #if defined(OS_WIN)
343 // Fails on Blink canary bots: http://crbug.com/299149 351 // Fails on Blink canary bots: http://crbug.com/299149
344 TEST_F(ClientSideDetectionHostTest, 352 TEST_F(ClientSideDetectionHostTest,
345 DISABLED_OnPhishingDetectionDoneNotPhishing) { 353 DISABLED_OnPhishingDetectionDoneNotPhishing) {
346 #else 354 #else
347 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneNotPhishing) { 355 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneNotPhishing) {
348 #endif 356 #endif
349 // Case 1: client thinks the page is phishing. The server does not agree. 357 // Case 1: client thinks the page is phishing. The server does not agree.
350 // No interstitial is shown. 358 // No interstitial is shown.
351 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 359 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
352 web_contents(), 360 web_contents(),
353 csd_service_.get()); 361 csd_host_.get());
354 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 362 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
355 363
356 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; 364 ClientSideDetectionService::ClientReportPhishingRequestCallback cb;
357 ClientPhishingRequest verdict; 365 ClientPhishingRequest verdict;
358 verdict.set_url("http://phishingurl.com/"); 366 verdict.set_url("http://phishingurl.com/");
359 verdict.set_client_score(1.0f); 367 verdict.set_client_score(1.0f);
360 verdict.set_is_phishing(true); 368 verdict.set_is_phishing(true);
361 369
362 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)) 370 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _))
363 .WillOnce(DoAll(DeleteArg<1>(), 371 .WillOnce(DoAll(DeleteArg<1>(),
364 InvokeCallbackArgument<2>(true, &verdict))); 372 InvokeCallbackArgument<2>(true, &verdict)));
365 EXPECT_CALL(*csd_service_, 373 EXPECT_CALL(*csd_service_,
366 SendClientReportPhishingRequest( 374 SendClientReportPhishingRequest(
367 Pointee(PartiallyEqualVerdict(verdict)), _)) 375 Pointee(PartiallyEqualVerdict(verdict)), _))
368 .WillOnce(SaveArg<1>(&cb)); 376 .WillOnce(SaveArg<1>(&cb));
369 OnPhishingDetectionDone(verdict.SerializeAsString()); 377 OnPhishingDetectionDone(verdict.SerializeAsString());
370 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 378 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
371 ASSERT_FALSE(cb.is_null()); 379 ASSERT_FALSE(cb.is_null());
372 380
373 // Make sure DoDisplayBlockingPage is not going to be called. 381 // Make sure DoDisplayBlockingPage is not going to be called.
374 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0); 382 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0);
375 cb.Run(GURL(verdict.url()), false); 383 cb.Run(GURL(verdict.url()), false);
376 base::RunLoop().RunUntilIdle(); 384 base::RunLoop().RunUntilIdle();
377 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 385 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
378 } 386 }
379 387
380 #if defined(OS_WIN) 388 #if defined(OS_WIN)
381 // Fails on Blink canary bots: http://crbug.com/299149 389 // Fails on Blink canary bots: http://crbug.com/299149
382 TEST_F(ClientSideDetectionHostTest, DISABLED_OnPhishingDetectionDoneDisabled) { 390 TEST_F(ClientSideDetectionHostTest, DISABLED_OnPhishingDetectionDoneDisabled) {
383 #else 391 #else
384 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneDisabled) { 392 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneDisabled) {
385 #endif 393 #endif
386 // Case 2: client thinks the page is phishing and so does the server but 394 // Case 2: client thinks the page is phishing and so does the server but
387 // showing the interstitial is disabled => no interstitial is shown. 395 // showing the interstitial is disabled => no interstitial is shown.
388 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 396 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
389 web_contents(), 397 web_contents(),
390 csd_service_.get()); 398 csd_host_.get());
391 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 399 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
392 400
393 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; 401 ClientSideDetectionService::ClientReportPhishingRequestCallback cb;
394 ClientPhishingRequest verdict; 402 ClientPhishingRequest verdict;
395 verdict.set_url("http://phishingurl.com/"); 403 verdict.set_url("http://phishingurl.com/");
396 verdict.set_client_score(1.0f); 404 verdict.set_client_score(1.0f);
397 verdict.set_is_phishing(true); 405 verdict.set_is_phishing(true);
398 406
399 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)) 407 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _))
400 .WillOnce(DoAll(DeleteArg<1>(), 408 .WillOnce(DoAll(DeleteArg<1>(),
401 InvokeCallbackArgument<2>(true, &verdict))); 409 InvokeCallbackArgument<2>(true, &verdict)));
402 EXPECT_CALL(*csd_service_, 410 EXPECT_CALL(*csd_service_,
403 SendClientReportPhishingRequest( 411 SendClientReportPhishingRequest(
404 Pointee(PartiallyEqualVerdict(verdict)), _)) 412 Pointee(PartiallyEqualVerdict(verdict)), _))
405 .WillOnce(SaveArg<1>(&cb)); 413 .WillOnce(SaveArg<1>(&cb));
406 OnPhishingDetectionDone(verdict.SerializeAsString()); 414 OnPhishingDetectionDone(verdict.SerializeAsString());
407 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 415 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
408 ASSERT_FALSE(cb.is_null()); 416 ASSERT_FALSE(cb.is_null());
409 417
410 // Make sure DoDisplayBlockingPage is not going to be called. 418 // Make sure DoDisplayBlockingPage is not going to be called.
411 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0); 419 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0);
412 cb.Run(GURL(verdict.url()), false); 420 cb.Run(GURL(verdict.url()), false);
413 base::RunLoop().RunUntilIdle(); 421 base::RunLoop().RunUntilIdle();
414 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 422 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
415 } 423 }
416 424
417 #if defined(OS_WIN) 425 #if defined(OS_WIN)
418 // Fails on Blink canary bots: http://crbug.com/299149 426 // Fails on Blink canary bots: http://crbug.com/299149
419 TEST_F(ClientSideDetectionHostTest, 427 TEST_F(ClientSideDetectionHostTest,
420 DISABLED_OnPhishingDetectionDoneShowInterstitial) { 428 DISABLED_OnPhishingDetectionDoneShowInterstitial) {
421 #else 429 #else
422 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneShowInterstitial) { 430 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneShowInterstitial) {
423 #endif 431 #endif
424 // Case 3: client thinks the page is phishing and so does the server. 432 // Case 3: client thinks the page is phishing and so does the server.
425 // We show an interstitial. 433 // We show an interstitial.
426 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 434 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
427 web_contents(), 435 web_contents(),
428 csd_service_.get()); 436 csd_host_.get());
429 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 437 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
430 438
431 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; 439 ClientSideDetectionService::ClientReportPhishingRequestCallback cb;
432 GURL phishing_url("http://phishingurl.com/"); 440 GURL phishing_url("http://phishingurl.com/");
433 ClientPhishingRequest verdict; 441 ClientPhishingRequest verdict;
434 verdict.set_url(phishing_url.spec()); 442 verdict.set_url(phishing_url.spec());
435 verdict.set_client_score(1.0f); 443 verdict.set_client_score(1.0f);
436 verdict.set_is_phishing(true); 444 verdict.set_is_phishing(true);
437 445
438 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)) 446 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _))
439 .WillOnce(DoAll(DeleteArg<1>(), 447 .WillOnce(DoAll(DeleteArg<1>(),
440 InvokeCallbackArgument<2>(true, &verdict))); 448 InvokeCallbackArgument<2>(true, &verdict)));
441 EXPECT_CALL(*csd_service_, 449 EXPECT_CALL(*csd_service_,
442 SendClientReportPhishingRequest( 450 SendClientReportPhishingRequest(
443 Pointee(PartiallyEqualVerdict(verdict)), _)) 451 Pointee(PartiallyEqualVerdict(verdict)), _))
444 .WillOnce(SaveArg<1>(&cb)); 452 .WillOnce(SaveArg<1>(&cb));
445 OnPhishingDetectionDone(verdict.SerializeAsString()); 453 OnPhishingDetectionDone(verdict.SerializeAsString());
454 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
446 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 455 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
447 ASSERT_FALSE(cb.is_null()); 456 ASSERT_FALSE(cb.is_null());
448 457
449 UnsafeResource resource; 458 UnsafeResource resource;
450 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)) 459 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_))
451 .WillOnce(SaveArg<0>(&resource)); 460 .WillOnce(SaveArg<0>(&resource));
452 cb.Run(phishing_url, true); 461 cb.Run(phishing_url, true);
453 462
454 base::RunLoop().RunUntilIdle(); 463 base::RunLoop().RunUntilIdle();
455 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 464 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
(...skipping 21 matching lines...) Expand all
477 #else 486 #else
478 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneMultiplePings) { 487 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneMultiplePings) {
479 #endif 488 #endif
480 // Case 4 & 5: client thinks a page is phishing then navigates to 489 // Case 4 & 5: client thinks a page is phishing then navigates to
481 // another page which is also considered phishing by the client 490 // another page which is also considered phishing by the client
482 // before the server responds with a verdict. After a while the 491 // before the server responds with a verdict. After a while the
483 // server responds for both requests with a phishing verdict. Only 492 // server responds for both requests with a phishing verdict. Only
484 // a single interstitial is shown for the second URL. 493 // a single interstitial is shown for the second URL.
485 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 494 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
486 web_contents(), 495 web_contents(),
487 csd_service_.get()); 496 csd_host_.get());
488 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 497 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
489 498
490 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; 499 ClientSideDetectionService::ClientReportPhishingRequestCallback cb;
491 GURL phishing_url("http://phishingurl.com/"); 500 GURL phishing_url("http://phishingurl.com/");
492 ClientPhishingRequest verdict; 501 ClientPhishingRequest verdict;
493 verdict.set_url(phishing_url.spec()); 502 verdict.set_url(phishing_url.spec());
494 verdict.set_client_score(1.0f); 503 verdict.set_client_score(1.0f);
495 verdict.set_is_phishing(true); 504 verdict.set_is_phishing(true);
496 505
497 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)) 506 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _))
498 .WillOnce(DoAll(DeleteArg<1>(), 507 .WillOnce(DoAll(DeleteArg<1>(),
499 InvokeCallbackArgument<2>(true, &verdict))); 508 InvokeCallbackArgument<2>(true, &verdict)));
500 EXPECT_CALL(*csd_service_, 509 EXPECT_CALL(*csd_service_,
501 SendClientReportPhishingRequest( 510 SendClientReportPhishingRequest(
502 Pointee(PartiallyEqualVerdict(verdict)), _)) 511 Pointee(PartiallyEqualVerdict(verdict)), _))
503 .WillOnce(SaveArg<1>(&cb)); 512 .WillOnce(SaveArg<1>(&cb));
504 OnPhishingDetectionDone(verdict.SerializeAsString()); 513 OnPhishingDetectionDone(verdict.SerializeAsString());
514 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
505 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 515 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
506 ASSERT_FALSE(cb.is_null()); 516 ASSERT_FALSE(cb.is_null());
507 517
508 // Set this back to a normal browser feature extractor since we're using 518 // Set this back to a normal browser feature extractor since we're using
509 // NavigateAndCommit() and it's easier to use the real thing than setting up 519 // NavigateAndCommit() and it's easier to use the real thing than setting up
510 // mock expectations. 520 // mock expectations.
511 SetFeatureExtractor(new BrowserFeatureExtractor(web_contents(), 521 SetFeatureExtractor(new BrowserFeatureExtractor(web_contents(),
512 csd_service_.get())); 522 csd_host_.get()));
513 GURL other_phishing_url("http://other_phishing_url.com/bla"); 523 GURL other_phishing_url("http://other_phishing_url.com/bla");
514 ExpectPreClassificationChecks(other_phishing_url, &kFalse, &kFalse, &kFalse, 524 ExpectPreClassificationChecks(other_phishing_url, &kFalse, &kFalse, &kFalse,
515 &kFalse, &kFalse, &kFalse); 525 &kFalse, &kFalse, &kFalse);
516 // We navigate away. The callback cb should be revoked. 526 // We navigate away. The callback cb should be revoked.
517 NavigateAndCommit(other_phishing_url); 527 NavigateAndCommit(other_phishing_url);
518 // Wait for the pre-classification checks to finish for other_phishing_url. 528 // Wait for the pre-classification checks to finish for other_phishing_url.
519 WaitAndCheckPreClassificationChecks(); 529 WaitAndCheckPreClassificationChecks();
520 530
521 ClientSideDetectionService::ClientReportPhishingRequestCallback cb_other; 531 ClientSideDetectionService::ClientReportPhishingRequestCallback cb_other;
522 verdict.set_url(other_phishing_url.spec()); 532 verdict.set_url(other_phishing_url.spec());
523 verdict.set_client_score(0.8f); 533 verdict.set_client_score(0.8f);
524 EXPECT_CALL(*csd_service_, 534 EXPECT_CALL(*csd_service_,
525 SendClientReportPhishingRequest( 535 SendClientReportPhishingRequest(
526 Pointee(PartiallyEqualVerdict(verdict)), _)) 536 Pointee(PartiallyEqualVerdict(verdict)), _))
527 .WillOnce(DoAll(DeleteArg<0>(), 537 .WillOnce(DoAll(DeleteArg<0>(),
528 SaveArg<1>(&cb_other), 538 SaveArg<1>(&cb_other),
529 QuitUIMessageLoop())); 539 QuitUIMessageLoop()));
530 std::vector<GURL> redirect_chain; 540 std::vector<GURL> redirect_chain;
531 redirect_chain.push_back(other_phishing_url); 541 redirect_chain.push_back(other_phishing_url);
532 SetRedirectChain(redirect_chain); 542 SetRedirectChain(redirect_chain);
533 OnPhishingDetectionDone(verdict.SerializeAsString()); 543 OnPhishingDetectionDone(verdict.SerializeAsString());
534 base::MessageLoop::current()->Run(); 544 base::MessageLoop::current()->Run();
545 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
535 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 546 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
536 ASSERT_FALSE(cb_other.is_null()); 547 ASSERT_FALSE(cb_other.is_null());
537 548
538 // We expect that the interstitial is shown for the second phishing URL and 549 // We expect that the interstitial is shown for the second phishing URL and
539 // not for the first phishing URL. 550 // not for the first phishing URL.
540 UnsafeResource resource; 551 UnsafeResource resource;
541 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)) 552 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_))
542 .WillOnce(SaveArg<0>(&resource)); 553 .WillOnce(SaveArg<0>(&resource));
543 554
544 cb.Run(phishing_url, true); // Should have no effect. 555 cb.Run(phishing_url, true); // Should have no effect.
(...skipping 22 matching lines...) Expand all
567 // Fails on Blink canary bots: http://crbug.com/299149 578 // Fails on Blink canary bots: http://crbug.com/299149
568 TEST_F(ClientSideDetectionHostTest, 579 TEST_F(ClientSideDetectionHostTest,
569 DISABLED_OnPhishingDetectionDoneVerdictNotPhishing) { 580 DISABLED_OnPhishingDetectionDoneVerdictNotPhishing) {
570 #else 581 #else
571 TEST_F(ClientSideDetectionHostTest, 582 TEST_F(ClientSideDetectionHostTest,
572 OnPhishingDetectionDoneVerdictNotPhishing) { 583 OnPhishingDetectionDoneVerdictNotPhishing) {
573 #endif 584 #endif
574 // Case 6: renderer sends a verdict string that isn't phishing. 585 // Case 6: renderer sends a verdict string that isn't phishing.
575 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 586 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
576 web_contents(), 587 web_contents(),
577 csd_service_.get()); 588 csd_host_.get());
578 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 589 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
579 590
580 ClientPhishingRequest verdict; 591 ClientPhishingRequest verdict;
581 verdict.set_url("http://not-phishing.com/"); 592 verdict.set_url("http://not-phishing.com/");
582 verdict.set_client_score(0.1f); 593 verdict.set_client_score(0.1f);
583 verdict.set_is_phishing(false); 594 verdict.set_is_phishing(false);
584 595
585 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); 596 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0);
586 OnPhishingDetectionDone(verdict.SerializeAsString()); 597 OnPhishingDetectionDone(verdict.SerializeAsString());
587 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); 598 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor));
(...skipping 24 matching lines...) Expand all
612 623
613 EXPECT_CALL(*csd_service_, 624 EXPECT_CALL(*csd_service_,
614 SendClientReportPhishingRequest( 625 SendClientReportPhishingRequest(
615 Pointee(PartiallyEqualVerdict(verdict)), CallbackIsNull())) 626 Pointee(PartiallyEqualVerdict(verdict)), CallbackIsNull()))
616 .WillOnce(DoAll(DeleteArg<0>(), QuitUIMessageLoop())); 627 .WillOnce(DoAll(DeleteArg<0>(), QuitUIMessageLoop()));
617 std::vector<GURL> redirect_chain; 628 std::vector<GURL> redirect_chain;
618 redirect_chain.push_back(url); 629 redirect_chain.push_back(url);
619 SetRedirectChain(redirect_chain); 630 SetRedirectChain(redirect_chain);
620 OnPhishingDetectionDone(verdict.SerializeAsString()); 631 OnPhishingDetectionDone(verdict.SerializeAsString());
621 base::MessageLoop::current()->Run(); 632 base::MessageLoop::current()->Run();
622 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 633 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
623 } 634 }
624 635
625 #if defined(OS_WIN) 636 #if defined(OS_WIN)
626 // Crashes on Blink canary bots: http://crbug.com/299149 637 // Crashes on Blink canary bots: http://crbug.com/299149
627 TEST_F(ClientSideDetectionHostTest, DISABLED_UpdateIPUrlMap) { 638 TEST_F(ClientSideDetectionHostTest, DISABLED_UpdateIPUrlMap) {
628 #else 639 #else
629 TEST_F(ClientSideDetectionHostTest, UpdateIPUrlMap) { 640 TEST_F(ClientSideDetectionHostTest, UpdateIPUrlMap) {
630 #endif 641 #endif
631 BrowseInfo* browse_info = GetBrowseInfo(); 642 BrowseInfo* browse_info = GetBrowseInfo();
632 643
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 TEST_F(ClientSideDetectionHostTest, 696 TEST_F(ClientSideDetectionHostTest,
686 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) { 697 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) {
687 #else 698 #else
688 TEST_F(ClientSideDetectionHostTest, 699 TEST_F(ClientSideDetectionHostTest,
689 OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) { 700 OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) {
690 #endif 701 #endif
691 // Case 7: renderer sends a verdict string that isn't phishing and not matches 702 // Case 7: renderer sends a verdict string that isn't phishing and not matches
692 // malware bad IP list 703 // malware bad IP list
693 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 704 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
694 web_contents(), 705 web_contents(),
695 csd_service_.get()); 706 csd_host_.get());
696 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 707 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
697 708
698 ClientPhishingRequest verdict; 709 ClientPhishingRequest verdict;
699 verdict.set_url("http://not-phishing.com/"); 710 verdict.set_url("http://not-phishing.com/");
700 verdict.set_client_score(0.1f); 711 verdict.set_client_score(0.1f);
701 verdict.set_is_phishing(false); 712 verdict.set_is_phishing(false);
702 713
703 ClientMalwareRequest malware_verdict; 714 ClientMalwareRequest malware_verdict;
704 malware_verdict.set_url("http://not-phishing.com/"); 715 malware_verdict.set_url("http://not-phishing.com/");
705 716
706 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _)) 717 // That is a special case. If there were no IP matches or if feature
707 .WillOnce(SetArgumentPointee<1>(malware_verdict)); 718 // extraction failed the callback will delete the malware_verdict.
719 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _))
720 .WillOnce(InvokeMalwareCallback(&malware_verdict));
708 EXPECT_CALL(*csd_service_, 721 EXPECT_CALL(*csd_service_,
709 SendClientReportMalwareRequest(_, _)).Times(0); 722 SendClientReportMalwareRequest(_, _)).Times(0);
710 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); 723 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0);
711 724
712 OnPhishingDetectionDone(verdict.SerializeAsString()); 725 OnPhishingDetectionDone(verdict.SerializeAsString());
713 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); 726 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor));
714 } 727 }
715 728
716 #if defined(OS_WIN) 729 #if defined(OS_WIN)
717 // Crashes on Blink canary bots: http://crbug.com/299149 730 // Crashes on Blink canary bots: http://crbug.com/299149
718 TEST_F(ClientSideDetectionHostTest, 731 TEST_F(ClientSideDetectionHostTest,
719 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) { 732 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) {
720 #else 733 #else
721 TEST_F(ClientSideDetectionHostTest, 734 TEST_F(ClientSideDetectionHostTest,
722 OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) { 735 OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) {
723 #endif 736 #endif
724 // Case 8: renderer sends a verdict string that isn't phishing but matches 737 // Case 8: renderer sends a verdict string that isn't phishing but matches
725 // malware bad IP list 738 // malware bad IP list
726 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 739 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
727 web_contents(), 740 web_contents(),
728 csd_service_.get()); 741 csd_host_.get());
729 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 742 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
730 743
731 ClientPhishingRequest verdict; 744 ClientPhishingRequest verdict;
732 verdict.set_url("http://not-phishing.com/"); 745 verdict.set_url("http://not-phishing.com/");
733 verdict.set_client_score(0.1f); 746 verdict.set_client_score(0.1f);
734 verdict.set_is_phishing(false); 747 verdict.set_is_phishing(false);
735 748
736 ClientMalwareRequest malware_verdict; 749 ClientMalwareRequest malware_verdict;
737 malware_verdict.set_url("http://not-phishing.com/"); 750 malware_verdict.set_url("http://not-phishing.com/");
738 ClientMalwareRequest::Feature* feature = malware_verdict.add_feature_map(); 751 ClientMalwareRequest::Feature* feature = malware_verdict.add_feature_map();
739 feature->set_name("malwareip1.2.3.4"); 752 feature->set_name("malwareip1.2.3.4");
740 feature->set_value(1.0); 753 feature->set_value(1.0);
741 feature->add_metainfo("badip.com"); 754 feature->add_metainfo("badip.com");
742 755
743 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _)) 756 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _))
744 .WillOnce(SetArgumentPointee<1>(malware_verdict)); 757 .WillOnce(InvokeMalwareCallback(&malware_verdict));
745 EXPECT_CALL(*csd_service_, 758 EXPECT_CALL(*csd_service_,
746 SendClientReportMalwareRequest( 759 SendClientReportMalwareRequest(
747 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _)) 760 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _))
748 .WillOnce(DeleteArg<0>()); 761 .WillOnce(DeleteArg<0>());
749 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); 762 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0);
750 763
751 OnPhishingDetectionDone(verdict.SerializeAsString()); 764 OnPhishingDetectionDone(verdict.SerializeAsString());
752 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); 765 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor));
753 } 766 }
754 767
755 #if defined(OS_WIN) 768 #if defined(OS_WIN)
756 // Crashes on Blink canary bots: http://crbug.com/299149 769 // Crashes on Blink canary bots: http://crbug.com/299149
757 TEST_F(ClientSideDetectionHostTest, 770 TEST_F(ClientSideDetectionHostTest,
758 DISABLED_OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) { 771 DISABLED_OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) {
759 #else 772 #else
760 TEST_F(ClientSideDetectionHostTest, 773 TEST_F(ClientSideDetectionHostTest,
761 OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) { 774 OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) {
762 #endif 775 #endif
763 // Case 9: renderer sends a verdict string that is phishing and matches 776 // Case 9: renderer sends a verdict string that is phishing and matches
764 // malware bad IP list 777 // malware bad IP list
765 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 778 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
766 web_contents(), 779 web_contents(),
767 csd_service_.get()); 780 csd_host_.get());
768 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 781 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
769 782
770 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; 783 ClientSideDetectionService::ClientReportPhishingRequestCallback cb;
771 ClientPhishingRequest verdict; 784 ClientPhishingRequest verdict;
772 verdict.set_url("http://not-phishing.com/"); 785 verdict.set_url("http://not-phishing.com/");
773 verdict.set_client_score(0.1f); 786 verdict.set_client_score(0.1f);
774 verdict.set_is_phishing(true); 787 verdict.set_is_phishing(true);
775 788
776 ClientMalwareRequest malware_verdict; 789 ClientMalwareRequest malware_verdict;
777 malware_verdict.set_url("http://not-phishing.com/"); 790 malware_verdict.set_url("http://not-phishing.com/");
778 ClientMalwareRequest::Feature* feature = malware_verdict.add_feature_map(); 791 ClientMalwareRequest::Feature* feature = malware_verdict.add_feature_map();
779 feature->set_name("malwareip1.2.3.4"); 792 feature->set_name("malwareip1.2.3.4");
780 feature->set_value(1.0); 793 feature->set_value(1.0);
781 feature->add_metainfo("badip.com"); 794 feature->add_metainfo("badip.com");
782 795
783 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _)) 796 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _))
784 .WillOnce(SetArgumentPointee<1>(malware_verdict)); 797 .WillOnce(InvokeMalwareCallback(&malware_verdict));
785 EXPECT_CALL(*csd_service_, 798 EXPECT_CALL(*csd_service_,
786 SendClientReportMalwareRequest( 799 SendClientReportMalwareRequest(
787 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _)) 800 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _))
788 .WillOnce(DeleteArg<0>()); 801 .WillOnce(DeleteArg<0>());
789 802
790 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)) 803 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _))
791 .WillOnce(DoAll(DeleteArg<1>(), 804 .WillOnce(DoAll(DeleteArg<1>(),
792 InvokeCallbackArgument<2>(true, &verdict))); 805 InvokeCallbackArgument<2>(true, &verdict)));
793 806
794 EXPECT_CALL(*csd_service_, 807 EXPECT_CALL(*csd_service_,
795 SendClientReportPhishingRequest( 808 SendClientReportPhishingRequest(
796 Pointee(PartiallyEqualVerdict(verdict)), _)) 809 Pointee(PartiallyEqualVerdict(verdict)), _))
797 .WillOnce(SaveArg<1>(&cb)); 810 .WillOnce(SaveArg<1>(&cb));
798 OnPhishingDetectionDone(verdict.SerializeAsString()); 811 OnPhishingDetectionDone(verdict.SerializeAsString());
799 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); 812 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor));
813 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
800 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 814 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
801 ASSERT_FALSE(cb.is_null()); 815 ASSERT_FALSE(cb.is_null());
802 } 816 }
803 817
804 #if defined(OS_WIN) 818 #if defined(OS_WIN)
805 // Crashes on Blink canary bots: http://crbug.com/299149 819 // Crashes on Blink canary bots: http://crbug.com/299149
806 TEST_F(ClientSideDetectionHostTest, 820 TEST_F(ClientSideDetectionHostTest,
807 DISABLED_OnPhishingDetectionDoneShowMalwareInterstitial) { 821 DISABLED_OnPhishingDetectionDoneShowMalwareInterstitial) {
808 #else 822 #else
809 TEST_F(ClientSideDetectionHostTest, 823 TEST_F(ClientSideDetectionHostTest,
810 OnPhishingDetectionDoneShowMalwareInterstitial) { 824 OnPhishingDetectionDoneShowMalwareInterstitial) {
811 #endif 825 #endif
812 // Case 10: client thinks the page match malware IP and so does the server. 826 // Case 10: client thinks the page match malware IP and so does the server.
813 // We show an sub-resource malware interstitial. 827 // We show an sub-resource malware interstitial.
814 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor( 828 MockBrowserFeatureExtractor* mock_extractor = new MockBrowserFeatureExtractor(
815 web_contents(), 829 web_contents(),
816 csd_service_.get()); 830 csd_host_.get());
817 SetFeatureExtractor(mock_extractor); // The host class takes ownership. 831 SetFeatureExtractor(mock_extractor); // The host class takes ownership.
818 832
819 ClientPhishingRequest verdict; 833 ClientPhishingRequest verdict;
820 verdict.set_url("http://not-phishing.com/"); 834 verdict.set_url("http://not-phishing.com/");
821 verdict.set_client_score(0.1f); 835 verdict.set_client_score(0.1f);
822 verdict.set_is_phishing(false); 836 verdict.set_is_phishing(false);
823 837
824 ClientSideDetectionService::ClientReportMalwareRequestCallback cb; 838 ClientSideDetectionService::ClientReportMalwareRequestCallback cb;
825 GURL malware_landing_url("http://malware.com/"); 839 GURL malware_landing_url("http://malware.com/");
826 GURL malware_ip_url("http://badip.com"); 840 GURL malware_ip_url("http://badip.com");
827 ClientMalwareRequest malware_verdict; 841 ClientMalwareRequest malware_verdict;
828 malware_verdict.set_url("http://malware.com/"); 842 malware_verdict.set_url("http://malware.com/");
829 ClientMalwareRequest::Feature* feature = malware_verdict.add_feature_map(); 843 ClientMalwareRequest::Feature* feature = malware_verdict.add_feature_map();
830 feature->set_name("malwareip1.2.3.4"); 844 feature->set_name("malwareip1.2.3.4");
831 feature->set_value(1.0); 845 feature->set_value(1.0);
832 feature->add_metainfo("http://badip.com"); 846 feature->add_metainfo("http://badip.com");
833 847
834 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _)) 848 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _))
835 .WillOnce(SetArgumentPointee<1>(malware_verdict)); 849 .WillOnce(InvokeMalwareCallback(&malware_verdict));
836 EXPECT_CALL(*csd_service_, 850 EXPECT_CALL(*csd_service_,
837 SendClientReportMalwareRequest( 851 SendClientReportMalwareRequest(
838 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _)) 852 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _))
839 .WillOnce(DoAll(DeleteArg<0>(), 853 .WillOnce(DoAll(DeleteArg<0>(), SaveArg<1>(&cb)));
840 SaveArg<1>(&cb)));
841 OnPhishingDetectionDone(verdict.SerializeAsString()); 854 OnPhishingDetectionDone(verdict.SerializeAsString());
855 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
842 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 856 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get()));
843 ASSERT_FALSE(cb.is_null()); 857 ASSERT_FALSE(cb.is_null());
844 858
845 UnsafeResource resource; 859 UnsafeResource resource;
846 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)) 860 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_))
847 .WillOnce(SaveArg<0>(&resource)); 861 .WillOnce(SaveArg<0>(&resource));
848 cb.Run(malware_landing_url, malware_ip_url, true); 862 cb.Run(malware_landing_url, malware_ip_url, true);
849 863
850 base::RunLoop().RunUntilIdle(); 864 base::RunLoop().RunUntilIdle();
851 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 865 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 1052
1039 UnsafeResource resource; 1053 UnsafeResource resource;
1040 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)) 1054 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_))
1041 .WillOnce(SaveArg<0>(&resource)); 1055 .WillOnce(SaveArg<0>(&resource));
1042 1056
1043 NavigateAndCommit(url); 1057 NavigateAndCommit(url);
1044 // Wait for CheckCsdWhitelist and CheckCache() to be called. 1058 // Wait for CheckCsdWhitelist and CheckCache() to be called.
1045 base::RunLoop().RunUntilIdle(); 1059 base::RunLoop().RunUntilIdle();
1046 // Now we check that all expected functions were indeed called on the two 1060 // Now we check that all expected functions were indeed called on the two
1047 // service objects. 1061 // service objects.
1048 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); 1062 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get()));
1049 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); 1063 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get()));
1050 EXPECT_EQ(url, resource.url); 1064 EXPECT_EQ(url, resource.url);
1051 EXPECT_EQ(url, resource.original_url); 1065 EXPECT_EQ(url, resource.original_url);
1052 resource.callback.Reset(); 1066 resource.callback.Reset();
1053 msg = process()->sink().GetFirstMessageMatching( 1067 msg = process()->sink().GetFirstMessageMatching(
1054 SafeBrowsingMsg_StartPhishingDetection::ID); 1068 SafeBrowsingMsg_StartPhishingDetection::ID);
1055 ASSERT_FALSE(msg); 1069 ASSERT_FALSE(msg);
1056 } 1070 }
1057
1058 } // namespace safe_browsing 1071 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698