| 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 #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 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 } | 322 } |
| 323 | 323 |
| 324 protected: | 324 protected: |
| 325 scoped_ptr<ClientSideDetectionHost> csd_host_; | 325 scoped_ptr<ClientSideDetectionHost> csd_host_; |
| 326 scoped_ptr<StrictMock<MockClientSideDetectionService> > csd_service_; | 326 scoped_ptr<StrictMock<MockClientSideDetectionService> > csd_service_; |
| 327 scoped_refptr<StrictMock<MockSafeBrowsingUIManager> > ui_manager_; | 327 scoped_refptr<StrictMock<MockSafeBrowsingUIManager> > ui_manager_; |
| 328 scoped_refptr<StrictMock<MockSafeBrowsingDatabaseManager> > database_manager_; | 328 scoped_refptr<StrictMock<MockSafeBrowsingDatabaseManager> > database_manager_; |
| 329 MockTestingProfile* mock_profile_; // We don't own this object | 329 MockTestingProfile* mock_profile_; // We don't own this object |
| 330 }; | 330 }; |
| 331 | 331 |
| 332 #if defined(OS_WIN) | |
| 333 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 334 TEST_F(ClientSideDetectionHostTest, | |
| 335 DISABLED_OnPhishingDetectionDoneInvalidVerdict) { | |
| 336 #else | |
| 337 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneInvalidVerdict) { | 332 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneInvalidVerdict) { |
| 338 #endif | |
| 339 // Case 0: renderer sends an invalid verdict string that we're unable to | 333 // Case 0: renderer sends an invalid verdict string that we're unable to |
| 340 // parse. | 334 // parse. |
| 341 MockBrowserFeatureExtractor* mock_extractor = | 335 MockBrowserFeatureExtractor* mock_extractor = |
| 342 new StrictMock<MockBrowserFeatureExtractor>( | 336 new StrictMock<MockBrowserFeatureExtractor>( |
| 343 web_contents(), | 337 web_contents(), |
| 344 csd_host_.get()); | 338 csd_host_.get()); |
| 345 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 339 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 346 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); | 340 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); |
| 347 OnPhishingDetectionDone("Invalid Protocol Buffer"); | 341 OnPhishingDetectionDone("Invalid Protocol Buffer"); |
| 348 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); | 342 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); |
| 349 } | 343 } |
| 350 | 344 |
| 351 #if defined(OS_WIN) | |
| 352 // Fails on Blink canary bots: http://crbug.com/299149 | |
| 353 TEST_F(ClientSideDetectionHostTest, | |
| 354 DISABLED_OnPhishingDetectionDoneNotPhishing) { | |
| 355 #else | |
| 356 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneNotPhishing) { | 345 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneNotPhishing) { |
| 357 #endif | |
| 358 // Case 1: client thinks the page is phishing. The server does not agree. | 346 // Case 1: client thinks the page is phishing. The server does not agree. |
| 359 // No interstitial is shown. | 347 // No interstitial is shown. |
| 360 MockBrowserFeatureExtractor* mock_extractor = | 348 MockBrowserFeatureExtractor* mock_extractor = |
| 361 new StrictMock<MockBrowserFeatureExtractor>( | 349 new StrictMock<MockBrowserFeatureExtractor>( |
| 362 web_contents(), | 350 web_contents(), |
| 363 csd_host_.get()); | 351 csd_host_.get()); |
| 364 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 352 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 365 | 353 |
| 366 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; | 354 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; |
| 367 ClientPhishingRequest verdict; | 355 ClientPhishingRequest verdict; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 384 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); | 372 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); |
| 385 ASSERT_FALSE(cb.is_null()); | 373 ASSERT_FALSE(cb.is_null()); |
| 386 | 374 |
| 387 // Make sure DoDisplayBlockingPage is not going to be called. | 375 // Make sure DoDisplayBlockingPage is not going to be called. |
| 388 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0); | 376 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0); |
| 389 cb.Run(GURL(verdict.url()), false); | 377 cb.Run(GURL(verdict.url()), false); |
| 390 base::RunLoop().RunUntilIdle(); | 378 base::RunLoop().RunUntilIdle(); |
| 391 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); | 379 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); |
| 392 } | 380 } |
| 393 | 381 |
| 394 #if defined(OS_WIN) | |
| 395 // Fails on Blink canary bots: http://crbug.com/299149 | |
| 396 TEST_F(ClientSideDetectionHostTest, DISABLED_OnPhishingDetectionDoneDisabled) { | |
| 397 #else | |
| 398 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneDisabled) { | 382 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneDisabled) { |
| 399 #endif | |
| 400 // Case 2: client thinks the page is phishing and so does the server but | 383 // Case 2: client thinks the page is phishing and so does the server but |
| 401 // showing the interstitial is disabled => no interstitial is shown. | 384 // showing the interstitial is disabled => no interstitial is shown. |
| 402 MockBrowserFeatureExtractor* mock_extractor = | 385 MockBrowserFeatureExtractor* mock_extractor = |
| 403 new StrictMock<MockBrowserFeatureExtractor>( | 386 new StrictMock<MockBrowserFeatureExtractor>( |
| 404 web_contents(), | 387 web_contents(), |
| 405 csd_host_.get()); | 388 csd_host_.get()); |
| 406 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 389 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 407 | 390 |
| 408 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; | 391 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; |
| 409 ClientPhishingRequest verdict; | 392 ClientPhishingRequest verdict; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 430 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); | 413 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); |
| 431 ASSERT_FALSE(cb.is_null()); | 414 ASSERT_FALSE(cb.is_null()); |
| 432 | 415 |
| 433 // Make sure DoDisplayBlockingPage is not going to be called. | 416 // Make sure DoDisplayBlockingPage is not going to be called. |
| 434 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0); | 417 EXPECT_CALL(*ui_manager_.get(), DoDisplayBlockingPage(_)).Times(0); |
| 435 cb.Run(GURL(verdict.url()), false); | 418 cb.Run(GURL(verdict.url()), false); |
| 436 base::RunLoop().RunUntilIdle(); | 419 base::RunLoop().RunUntilIdle(); |
| 437 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); | 420 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); |
| 438 } | 421 } |
| 439 | 422 |
| 440 #if defined(OS_WIN) | |
| 441 // Fails on Blink canary bots: http://crbug.com/299149 | |
| 442 TEST_F(ClientSideDetectionHostTest, | |
| 443 DISABLED_OnPhishingDetectionDoneShowInterstitial) { | |
| 444 #else | |
| 445 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneShowInterstitial) { | 423 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneShowInterstitial) { |
| 446 #endif | |
| 447 // Case 3: client thinks the page is phishing and so does the server. | 424 // Case 3: client thinks the page is phishing and so does the server. |
| 448 // We show an interstitial. | 425 // We show an interstitial. |
| 449 MockBrowserFeatureExtractor* mock_extractor = | 426 MockBrowserFeatureExtractor* mock_extractor = |
| 450 new StrictMock<MockBrowserFeatureExtractor>( | 427 new StrictMock<MockBrowserFeatureExtractor>( |
| 451 web_contents(), | 428 web_contents(), |
| 452 csd_host_.get()); | 429 csd_host_.get()); |
| 453 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 430 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 454 | 431 |
| 455 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; | 432 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; |
| 456 GURL phishing_url("http://phishingurl.com/"); | 433 GURL phishing_url("http://phishingurl.com/"); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 resource.render_view_id); | 470 resource.render_view_id); |
| 494 | 471 |
| 495 // Make sure the client object will be deleted. | 472 // Make sure the client object will be deleted. |
| 496 BrowserThread::PostTask( | 473 BrowserThread::PostTask( |
| 497 BrowserThread::IO, | 474 BrowserThread::IO, |
| 498 FROM_HERE, | 475 FROM_HERE, |
| 499 base::Bind(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete, | 476 base::Bind(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete, |
| 500 ui_manager_, resource.callback)); | 477 ui_manager_, resource.callback)); |
| 501 } | 478 } |
| 502 | 479 |
| 503 #if defined(OS_WIN) | |
| 504 // Fails on Blink canary bots: http://crbug.com/299149 | |
| 505 TEST_F(ClientSideDetectionHostTest, | |
| 506 DISABLED_OnPhishingDetectionDoneMultiplePings) { | |
| 507 #else | |
| 508 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneMultiplePings) { | 480 TEST_F(ClientSideDetectionHostTest, OnPhishingDetectionDoneMultiplePings) { |
| 509 #endif | |
| 510 // Case 4 & 5: client thinks a page is phishing then navigates to | 481 // Case 4 & 5: client thinks a page is phishing then navigates to |
| 511 // another page which is also considered phishing by the client | 482 // another page which is also considered phishing by the client |
| 512 // before the server responds with a verdict. After a while the | 483 // before the server responds with a verdict. After a while the |
| 513 // server responds for both requests with a phishing verdict. Only | 484 // server responds for both requests with a phishing verdict. Only |
| 514 // a single interstitial is shown for the second URL. | 485 // a single interstitial is shown for the second URL. |
| 515 MockBrowserFeatureExtractor* mock_extractor = | 486 MockBrowserFeatureExtractor* mock_extractor = |
| 516 new StrictMock<MockBrowserFeatureExtractor>( | 487 new StrictMock<MockBrowserFeatureExtractor>( |
| 517 web_contents(), | 488 web_contents(), |
| 518 csd_host_.get()); | 489 csd_host_.get()); |
| 519 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 490 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 resource.render_view_id); | 565 resource.render_view_id); |
| 595 | 566 |
| 596 // Make sure the client object will be deleted. | 567 // Make sure the client object will be deleted. |
| 597 BrowserThread::PostTask( | 568 BrowserThread::PostTask( |
| 598 BrowserThread::IO, | 569 BrowserThread::IO, |
| 599 FROM_HERE, | 570 FROM_HERE, |
| 600 base::Bind(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete, | 571 base::Bind(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete, |
| 601 ui_manager_, resource.callback)); | 572 ui_manager_, resource.callback)); |
| 602 } | 573 } |
| 603 | 574 |
| 604 #if defined(OS_WIN) | |
| 605 // Fails on Blink canary bots: http://crbug.com/299149 | |
| 606 TEST_F(ClientSideDetectionHostTest, | |
| 607 DISABLED_OnPhishingDetectionDoneVerdictNotPhishing) { | |
| 608 #else | |
| 609 TEST_F(ClientSideDetectionHostTest, | 575 TEST_F(ClientSideDetectionHostTest, |
| 610 OnPhishingDetectionDoneVerdictNotPhishing) { | 576 OnPhishingDetectionDoneVerdictNotPhishing) { |
| 611 #endif | |
| 612 // Case 6: renderer sends a verdict string that isn't phishing. | 577 // Case 6: renderer sends a verdict string that isn't phishing. |
| 613 MockBrowserFeatureExtractor* mock_extractor = | 578 MockBrowserFeatureExtractor* mock_extractor = |
| 614 new StrictMock<MockBrowserFeatureExtractor>( | 579 new StrictMock<MockBrowserFeatureExtractor>( |
| 615 web_contents(), | 580 web_contents(), |
| 616 csd_host_.get()); | 581 csd_host_.get()); |
| 617 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 582 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 618 | 583 |
| 619 ClientPhishingRequest verdict; | 584 ClientPhishingRequest verdict; |
| 620 verdict.set_url("http://not-phishing.com/"); | 585 verdict.set_url("http://not-phishing.com/"); |
| 621 verdict.set_client_score(0.1f); | 586 verdict.set_client_score(0.1f); |
| 622 verdict.set_is_phishing(false); | 587 verdict.set_is_phishing(false); |
| 623 | 588 |
| 624 ClientMalwareRequest malware_verdict; | 589 ClientMalwareRequest malware_verdict; |
| 625 malware_verdict.set_url(verdict.url()); | 590 malware_verdict.set_url(verdict.url()); |
| 626 | 591 |
| 627 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); | 592 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); |
| 628 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _)) | 593 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _)) |
| 629 .WillOnce(InvokeMalwareCallback(&malware_verdict)); | 594 .WillOnce(InvokeMalwareCallback(&malware_verdict)); |
| 630 OnPhishingDetectionDone(verdict.SerializeAsString()); | 595 OnPhishingDetectionDone(verdict.SerializeAsString()); |
| 631 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); | 596 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); |
| 632 } | 597 } |
| 633 | 598 |
| 634 #if defined(OS_WIN) | |
| 635 // Fails on Blink canary bots: http://crbug.com/299149 | |
| 636 TEST_F(ClientSideDetectionHostTest, | |
| 637 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingButSBMatch) { | |
| 638 #else | |
| 639 TEST_F(ClientSideDetectionHostTest, | 599 TEST_F(ClientSideDetectionHostTest, |
| 640 OnPhishingDetectionDoneVerdictNotPhishingButSBMatch) { | 600 OnPhishingDetectionDoneVerdictNotPhishingButSBMatch) { |
| 641 #endif | |
| 642 // Case 7: renderer sends a verdict string that isn't phishing but the URL | 601 // Case 7: renderer sends a verdict string that isn't phishing but the URL |
| 643 // was on the regular phishing or malware lists. | 602 // was on the regular phishing or malware lists. |
| 644 GURL url("http://not-phishing.com/"); | 603 GURL url("http://not-phishing.com/"); |
| 645 ClientPhishingRequest verdict; | 604 ClientPhishingRequest verdict; |
| 646 verdict.set_url(url.spec()); | 605 verdict.set_url(url.spec()); |
| 647 verdict.set_client_score(0.1f); | 606 verdict.set_client_score(0.1f); |
| 648 verdict.set_is_phishing(false); | 607 verdict.set_is_phishing(false); |
| 649 | 608 |
| 650 // First we have to navigate to the URL to set the unique page ID. | 609 // First we have to navigate to the URL to set the unique page ID. |
| 651 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, | 610 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, |
| 652 &kFalse, &kFalse); | 611 &kFalse, &kFalse); |
| 653 NavigateAndCommit(url); | 612 NavigateAndCommit(url); |
| 654 WaitAndCheckPreClassificationChecks(); | 613 WaitAndCheckPreClassificationChecks(); |
| 655 SetUnsafeResourceToCurrent(); | 614 SetUnsafeResourceToCurrent(); |
| 656 | 615 |
| 657 EXPECT_CALL(*csd_service_, | 616 EXPECT_CALL(*csd_service_, |
| 658 SendClientReportPhishingRequest( | 617 SendClientReportPhishingRequest( |
| 659 Pointee(PartiallyEqualVerdict(verdict)), CallbackIsNull())) | 618 Pointee(PartiallyEqualVerdict(verdict)), CallbackIsNull())) |
| 660 .WillOnce(DoAll(DeleteArg<0>(), QuitUIMessageLoop())); | 619 .WillOnce(DoAll(DeleteArg<0>(), QuitUIMessageLoop())); |
| 661 std::vector<GURL> redirect_chain; | 620 std::vector<GURL> redirect_chain; |
| 662 redirect_chain.push_back(url); | 621 redirect_chain.push_back(url); |
| 663 SetRedirectChain(redirect_chain); | 622 SetRedirectChain(redirect_chain); |
| 664 OnPhishingDetectionDone(verdict.SerializeAsString()); | 623 OnPhishingDetectionDone(verdict.SerializeAsString()); |
| 665 base::MessageLoop::current()->Run(); | 624 base::MessageLoop::current()->Run(); |
| 666 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); | 625 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); |
| 667 } | 626 } |
| 668 | 627 |
| 669 #if defined(OS_WIN) | |
| 670 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 671 TEST_F(ClientSideDetectionHostTest, DISABLED_UpdateIPUrlMap) { | |
| 672 #else | |
| 673 TEST_F(ClientSideDetectionHostTest, UpdateIPUrlMap) { | 628 TEST_F(ClientSideDetectionHostTest, UpdateIPUrlMap) { |
| 674 #endif | |
| 675 BrowseInfo* browse_info = GetBrowseInfo(); | 629 BrowseInfo* browse_info = GetBrowseInfo(); |
| 676 | 630 |
| 677 // Empty IP or host are skipped | 631 // Empty IP or host are skipped |
| 678 UpdateIPUrlMap("250.10.10.10", std::string()); | 632 UpdateIPUrlMap("250.10.10.10", std::string()); |
| 679 ASSERT_EQ(0U, browse_info->ips.size()); | 633 ASSERT_EQ(0U, browse_info->ips.size()); |
| 680 UpdateIPUrlMap(std::string(), "http://google.com/a"); | 634 UpdateIPUrlMap(std::string(), "http://google.com/a"); |
| 681 ASSERT_EQ(0U, browse_info->ips.size()); | 635 ASSERT_EQ(0U, browse_info->ips.size()); |
| 682 UpdateIPUrlMap(std::string(), std::string()); | 636 UpdateIPUrlMap(std::string(), std::string()); |
| 683 ASSERT_EQ(0U, browse_info->ips.size()); | 637 ASSERT_EQ(0U, browse_info->ips.size()); |
| 684 | 638 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 | 671 |
| 718 // Add url to existing IPs succeed | 672 // Add url to existing IPs succeed |
| 719 UpdateIPUrlMap("100.100.100.256", "more.com/"); | 673 UpdateIPUrlMap("100.100.100.256", "more.com/"); |
| 720 ASSERT_EQ(2U, browse_info->ips["100.100.100.256"].size()); | 674 ASSERT_EQ(2U, browse_info->ips["100.100.100.256"].size()); |
| 721 expected_urls.clear(); | 675 expected_urls.clear(); |
| 722 expected_urls.insert("test.com/"); | 676 expected_urls.insert("test.com/"); |
| 723 expected_urls.insert("more.com/"); | 677 expected_urls.insert("more.com/"); |
| 724 EXPECT_EQ(expected_urls, browse_info->ips["100.100.100.256"]); | 678 EXPECT_EQ(expected_urls, browse_info->ips["100.100.100.256"]); |
| 725 } | 679 } |
| 726 | 680 |
| 727 #if defined(OS_WIN) | |
| 728 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 729 TEST_F(ClientSideDetectionHostTest, | |
| 730 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) { | |
| 731 #else | |
| 732 TEST_F(ClientSideDetectionHostTest, | 681 TEST_F(ClientSideDetectionHostTest, |
| 733 OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) { | 682 OnPhishingDetectionDoneVerdictNotPhishingNotMalwareIP) { |
| 734 #endif | |
| 735 // Case 7: renderer sends a verdict string that isn't phishing and not matches | 683 // Case 7: renderer sends a verdict string that isn't phishing and not matches |
| 736 // malware bad IP list | 684 // malware bad IP list |
| 737 MockBrowserFeatureExtractor* mock_extractor = | 685 MockBrowserFeatureExtractor* mock_extractor = |
| 738 new StrictMock<MockBrowserFeatureExtractor>( | 686 new StrictMock<MockBrowserFeatureExtractor>( |
| 739 web_contents(), | 687 web_contents(), |
| 740 csd_host_.get()); | 688 csd_host_.get()); |
| 741 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 689 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 742 | 690 |
| 743 ClientPhishingRequest verdict; | 691 ClientPhishingRequest verdict; |
| 744 verdict.set_url("http://not-phishing.com/"); | 692 verdict.set_url("http://not-phishing.com/"); |
| 745 verdict.set_client_score(0.1f); | 693 verdict.set_client_score(0.1f); |
| 746 verdict.set_is_phishing(false); | 694 verdict.set_is_phishing(false); |
| 747 | 695 |
| 748 ClientMalwareRequest malware_verdict; | 696 ClientMalwareRequest malware_verdict; |
| 749 malware_verdict.set_url(verdict.url()); | 697 malware_verdict.set_url(verdict.url()); |
| 750 | 698 |
| 751 // That is a special case. If there were no IP matches or if feature | 699 // That is a special case. If there were no IP matches or if feature |
| 752 // extraction failed the callback will delete the malware_verdict. | 700 // extraction failed the callback will delete the malware_verdict. |
| 753 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _)) | 701 EXPECT_CALL(*mock_extractor, ExtractMalwareFeatures(_, _, _)) |
| 754 .WillOnce(InvokeMalwareCallback(&malware_verdict)); | 702 .WillOnce(InvokeMalwareCallback(&malware_verdict)); |
| 755 EXPECT_CALL(*csd_service_, | 703 EXPECT_CALL(*csd_service_, |
| 756 SendClientReportMalwareRequest(_, _)).Times(0); | 704 SendClientReportMalwareRequest(_, _)).Times(0); |
| 757 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); | 705 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); |
| 758 | 706 |
| 759 OnPhishingDetectionDone(verdict.SerializeAsString()); | 707 OnPhishingDetectionDone(verdict.SerializeAsString()); |
| 760 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); | 708 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); |
| 761 } | 709 } |
| 762 | 710 |
| 763 #if defined(OS_WIN) | |
| 764 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 765 TEST_F(ClientSideDetectionHostTest, | |
| 766 DISABLED_OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) { | |
| 767 #else | |
| 768 TEST_F(ClientSideDetectionHostTest, | 711 TEST_F(ClientSideDetectionHostTest, |
| 769 OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) { | 712 OnPhishingDetectionDoneVerdictNotPhishingButMalwareIP) { |
| 770 #endif | |
| 771 // Case 8: renderer sends a verdict string that isn't phishing but matches | 713 // Case 8: renderer sends a verdict string that isn't phishing but matches |
| 772 // malware bad IP list | 714 // malware bad IP list |
| 773 MockBrowserFeatureExtractor* mock_extractor = | 715 MockBrowserFeatureExtractor* mock_extractor = |
| 774 new StrictMock<MockBrowserFeatureExtractor>( | 716 new StrictMock<MockBrowserFeatureExtractor>( |
| 775 web_contents(), | 717 web_contents(), |
| 776 csd_host_.get()); | 718 csd_host_.get()); |
| 777 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 719 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 778 | 720 |
| 779 ClientPhishingRequest verdict; | 721 ClientPhishingRequest verdict; |
| 780 verdict.set_url("http://not-phishing.com/"); | 722 verdict.set_url("http://not-phishing.com/"); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 793 EXPECT_CALL(*csd_service_, | 735 EXPECT_CALL(*csd_service_, |
| 794 SendClientReportMalwareRequest( | 736 SendClientReportMalwareRequest( |
| 795 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _)) | 737 Pointee(PartiallyEqualMalwareVerdict(malware_verdict)), _)) |
| 796 .WillOnce(DeleteArg<0>()); | 738 .WillOnce(DeleteArg<0>()); |
| 797 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); | 739 EXPECT_CALL(*mock_extractor, ExtractFeatures(_, _, _)).Times(0); |
| 798 | 740 |
| 799 OnPhishingDetectionDone(verdict.SerializeAsString()); | 741 OnPhishingDetectionDone(verdict.SerializeAsString()); |
| 800 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); | 742 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); |
| 801 } | 743 } |
| 802 | 744 |
| 803 #if defined(OS_WIN) | |
| 804 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 805 TEST_F(ClientSideDetectionHostTest, | |
| 806 DISABLED_OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) { | |
| 807 #else | |
| 808 TEST_F(ClientSideDetectionHostTest, | 745 TEST_F(ClientSideDetectionHostTest, |
| 809 OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) { | 746 OnPhishingDetectionDoneVerdictPhishingAndMalwareIP) { |
| 810 #endif | |
| 811 // Case 9: renderer sends a verdict string that is phishing and matches | 747 // Case 9: renderer sends a verdict string that is phishing and matches |
| 812 // malware bad IP list | 748 // malware bad IP list |
| 813 MockBrowserFeatureExtractor* mock_extractor = | 749 MockBrowserFeatureExtractor* mock_extractor = |
| 814 new StrictMock<MockBrowserFeatureExtractor>( | 750 new StrictMock<MockBrowserFeatureExtractor>( |
| 815 web_contents(), | 751 web_contents(), |
| 816 csd_host_.get()); | 752 csd_host_.get()); |
| 817 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 753 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 818 | 754 |
| 819 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; | 755 ClientSideDetectionService::ClientReportPhishingRequestCallback cb; |
| 820 ClientPhishingRequest verdict; | 756 ClientPhishingRequest verdict; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 844 SendClientReportPhishingRequest( | 780 SendClientReportPhishingRequest( |
| 845 Pointee(PartiallyEqualVerdict(verdict)), _)) | 781 Pointee(PartiallyEqualVerdict(verdict)), _)) |
| 846 .WillOnce(SaveArg<1>(&cb)); | 782 .WillOnce(SaveArg<1>(&cb)); |
| 847 OnPhishingDetectionDone(verdict.SerializeAsString()); | 783 OnPhishingDetectionDone(verdict.SerializeAsString()); |
| 848 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); | 784 EXPECT_TRUE(Mock::VerifyAndClear(mock_extractor)); |
| 849 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); | 785 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); |
| 850 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); | 786 EXPECT_TRUE(Mock::VerifyAndClear(csd_service_.get())); |
| 851 ASSERT_FALSE(cb.is_null()); | 787 ASSERT_FALSE(cb.is_null()); |
| 852 } | 788 } |
| 853 | 789 |
| 854 #if defined(OS_WIN) | |
| 855 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 856 TEST_F(ClientSideDetectionHostTest, | |
| 857 DISABLED_OnPhishingDetectionDoneShowMalwareInterstitial) { | |
| 858 #else | |
| 859 TEST_F(ClientSideDetectionHostTest, | 790 TEST_F(ClientSideDetectionHostTest, |
| 860 OnPhishingDetectionDoneShowMalwareInterstitial) { | 791 OnPhishingDetectionDoneShowMalwareInterstitial) { |
| 861 #endif | |
| 862 // Case 10: client thinks the page match malware IP and so does the server. | 792 // Case 10: client thinks the page match malware IP and so does the server. |
| 863 // We show an sub-resource malware interstitial. | 793 // We show an sub-resource malware interstitial. |
| 864 MockBrowserFeatureExtractor* mock_extractor = | 794 MockBrowserFeatureExtractor* mock_extractor = |
| 865 new StrictMock<MockBrowserFeatureExtractor>( | 795 new StrictMock<MockBrowserFeatureExtractor>( |
| 866 web_contents(), | 796 web_contents(), |
| 867 csd_host_.get()); | 797 csd_host_.get()); |
| 868 SetFeatureExtractor(mock_extractor); // The host class takes ownership. | 798 SetFeatureExtractor(mock_extractor); // The host class takes ownership. |
| 869 | 799 |
| 870 ClientPhishingRequest verdict; | 800 ClientPhishingRequest verdict; |
| 871 verdict.set_url("http://not-phishing.com/"); | 801 verdict.set_url("http://not-phishing.com/"); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 resource.render_view_id); | 840 resource.render_view_id); |
| 911 | 841 |
| 912 // Make sure the client object will be deleted. | 842 // Make sure the client object will be deleted. |
| 913 BrowserThread::PostTask( | 843 BrowserThread::PostTask( |
| 914 BrowserThread::IO, | 844 BrowserThread::IO, |
| 915 FROM_HERE, | 845 FROM_HERE, |
| 916 base::Bind(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete, | 846 base::Bind(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete, |
| 917 ui_manager_, resource.callback)); | 847 ui_manager_, resource.callback)); |
| 918 } | 848 } |
| 919 | 849 |
| 920 #if defined(OS_WIN) | |
| 921 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 922 TEST_F(ClientSideDetectionHostTest, | |
| 923 DISABLED_NavigationCancelsShouldClassifyUrl) { | |
| 924 #else | |
| 925 TEST_F(ClientSideDetectionHostTest, NavigationCancelsShouldClassifyUrl) { | 850 TEST_F(ClientSideDetectionHostTest, NavigationCancelsShouldClassifyUrl) { |
| 926 #endif | |
| 927 // Test that canceling pending should classify requests works as expected. | 851 // Test that canceling pending should classify requests works as expected. |
| 928 | 852 |
| 929 GURL first_url("http://first.phishy.url.com"); | 853 GURL first_url("http://first.phishy.url.com"); |
| 930 GURL second_url("http://second.url.com/"); | 854 GURL second_url("http://second.url.com/"); |
| 931 // The first few checks are done synchronously so check that they have been | 855 // The first few checks are done synchronously so check that they have been |
| 932 // done for the first URL, while the second URL has all the checks done. We | 856 // done for the first URL, while the second URL has all the checks done. We |
| 933 // need to manually set up the IsPrivateIPAddress mock since if the same mock | 857 // need to manually set up the IsPrivateIPAddress mock since if the same mock |
| 934 // expectation is specified twice, gmock will only use the last instance of | 858 // expectation is specified twice, gmock will only use the last instance of |
| 935 // it, meaning the first will never be matched. | 859 // it, meaning the first will never be matched. |
| 936 EXPECT_CALL(*csd_service_, IsPrivateIPAddress(_)) | 860 EXPECT_CALL(*csd_service_, IsPrivateIPAddress(_)) |
| 937 .WillOnce(Return(false)) | 861 .WillOnce(Return(false)) |
| 938 .WillOnce(Return(false)); | 862 .WillOnce(Return(false)); |
| 939 ExpectPreClassificationChecks(first_url, NULL, &kFalse, &kFalse, NULL, | 863 ExpectPreClassificationChecks(first_url, NULL, &kFalse, &kFalse, NULL, |
| 940 NULL, NULL); | 864 NULL, NULL); |
| 941 ExpectPreClassificationChecks(second_url, NULL, &kFalse, &kFalse, &kFalse, | 865 ExpectPreClassificationChecks(second_url, NULL, &kFalse, &kFalse, &kFalse, |
| 942 &kFalse, &kFalse); | 866 &kFalse, &kFalse); |
| 943 | 867 |
| 944 NavigateAndCommit(first_url); | 868 NavigateAndCommit(first_url); |
| 945 // Don't flush the message loop, as we want to navigate to a different | 869 // Don't flush the message loop, as we want to navigate to a different |
| 946 // url before the final pre-classification checks are run. | 870 // url before the final pre-classification checks are run. |
| 947 NavigateAndCommit(second_url); | 871 NavigateAndCommit(second_url); |
| 948 WaitAndCheckPreClassificationChecks(); | 872 WaitAndCheckPreClassificationChecks(); |
| 949 } | 873 } |
| 950 | 874 |
| 951 #if defined(OS_WIN) | |
| 952 // Crashes on Blink canary bots: http://crbug.com/299149 | |
| 953 TEST_F(ClientSideDetectionHostTest, DISABLED_ShouldClassifyUrl) { | |
| 954 #else | |
| 955 TEST_F(ClientSideDetectionHostTest, ShouldClassifyUrl) { | 875 TEST_F(ClientSideDetectionHostTest, ShouldClassifyUrl) { |
| 956 #endif | |
| 957 // Navigate the tab to a page. We should see a StartPhishingDetection IPC. | 876 // Navigate the tab to a page. We should see a StartPhishingDetection IPC. |
| 958 GURL url("http://host.com/"); | 877 GURL url("http://host.com/"); |
| 959 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, | 878 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, |
| 960 &kFalse, &kFalse); | 879 &kFalse, &kFalse); |
| 961 NavigateAndCommit(url); | 880 NavigateAndCommit(url); |
| 962 WaitAndCheckPreClassificationChecks(); | 881 WaitAndCheckPreClassificationChecks(); |
| 963 | 882 |
| 964 const IPC::Message* msg = process()->sink().GetFirstMessageMatching( | 883 const IPC::Message* msg = process()->sink().GetFirstMessageMatching( |
| 965 SafeBrowsingMsg_StartPhishingDetection::ID); | 884 SafeBrowsingMsg_StartPhishingDetection::ID); |
| 966 ASSERT_TRUE(msg); | 885 ASSERT_TRUE(msg); |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); | 1018 EXPECT_TRUE(Mock::VerifyAndClear(csd_host_.get())); |
| 1100 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); | 1019 EXPECT_TRUE(Mock::VerifyAndClear(ui_manager_.get())); |
| 1101 EXPECT_EQ(url, resource.url); | 1020 EXPECT_EQ(url, resource.url); |
| 1102 EXPECT_EQ(url, resource.original_url); | 1021 EXPECT_EQ(url, resource.original_url); |
| 1103 resource.callback.Reset(); | 1022 resource.callback.Reset(); |
| 1104 msg = process()->sink().GetFirstMessageMatching( | 1023 msg = process()->sink().GetFirstMessageMatching( |
| 1105 SafeBrowsingMsg_StartPhishingDetection::ID); | 1024 SafeBrowsingMsg_StartPhishingDetection::ID); |
| 1106 ASSERT_FALSE(msg); | 1025 ASSERT_FALSE(msg); |
| 1107 } | 1026 } |
| 1108 } // namespace safe_browsing | 1027 } // namespace safe_browsing |
| OLD | NEW |