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

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

Issue 9473001: Extract minimal RenderViewHost interface for embedders, leaving (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to LKGR. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | 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/file_path.h" 5 #include "base/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/synchronization/waitable_event.h" 8 #include "base/synchronization/waitable_event.h"
9 #include "chrome/browser/safe_browsing/browser_feature_extractor.h" 9 #include "chrome/browser/safe_browsing/browser_feature_extractor.h"
10 #include "chrome/browser/safe_browsing/client_side_detection_host.h" 10 #include "chrome/browser/safe_browsing/client_side_detection_host.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 274
275 void SetUnsafeResourceToCurrent() { 275 void SetUnsafeResourceToCurrent() {
276 SafeBrowsingService::UnsafeResource resource; 276 SafeBrowsingService::UnsafeResource resource;
277 resource.url = GURL("http://www.malware.com/"); 277 resource.url = GURL("http://www.malware.com/");
278 resource.original_url = contents()->GetURL(); 278 resource.original_url = contents()->GetURL();
279 resource.is_subresource = true; 279 resource.is_subresource = true;
280 resource.threat_type = SafeBrowsingService::URL_MALWARE; 280 resource.threat_type = SafeBrowsingService::URL_MALWARE;
281 resource.callback = base::Bind(&EmptyUrlCheckCallback); 281 resource.callback = base::Bind(&EmptyUrlCheckCallback);
282 resource.render_process_host_id = contents()->GetRenderProcessHost()-> 282 resource.render_process_host_id = contents()->GetRenderProcessHost()->
283 GetID(); 283 GetID();
284 resource.render_view_id = contents()->GetRenderViewHost()->routing_id(); 284 resource.render_view_id = contents()->GetRenderViewHost()->GetRoutingID();
285 csd_host_->OnSafeBrowsingHit(resource); 285 csd_host_->OnSafeBrowsingHit(resource);
286 resource.callback.Reset(); 286 resource.callback.Reset();
287 ASSERT_TRUE(csd_host_->DidShowSBInterstitial()); 287 ASSERT_TRUE(csd_host_->DidShowSBInterstitial());
288 ASSERT_TRUE(csd_host_->unsafe_resource_.get()); 288 ASSERT_TRUE(csd_host_->unsafe_resource_.get());
289 // Test that the resource above was copied. 289 // Test that the resource above was copied.
290 EXPECT_EQ(resource.url, csd_host_->unsafe_resource_->url); 290 EXPECT_EQ(resource.url, csd_host_->unsafe_resource_->url);
291 EXPECT_EQ(resource.original_url, csd_host_->unsafe_resource_->original_url); 291 EXPECT_EQ(resource.original_url, csd_host_->unsafe_resource_->original_url);
292 EXPECT_EQ(resource.is_subresource, 292 EXPECT_EQ(resource.is_subresource,
293 csd_host_->unsafe_resource_->is_subresource); 293 csd_host_->unsafe_resource_->is_subresource);
294 EXPECT_EQ(resource.threat_type, csd_host_->unsafe_resource_->threat_type); 294 EXPECT_EQ(resource.threat_type, csd_host_->unsafe_resource_->threat_type);
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 420
421 MessageLoop::current()->RunAllPending(); 421 MessageLoop::current()->RunAllPending();
422 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get())); 422 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get()));
423 EXPECT_EQ(phishing_url, resource.url); 423 EXPECT_EQ(phishing_url, resource.url);
424 EXPECT_EQ(phishing_url, resource.original_url); 424 EXPECT_EQ(phishing_url, resource.original_url);
425 EXPECT_FALSE(resource.is_subresource); 425 EXPECT_FALSE(resource.is_subresource);
426 EXPECT_EQ(SafeBrowsingService::CLIENT_SIDE_PHISHING_URL, 426 EXPECT_EQ(SafeBrowsingService::CLIENT_SIDE_PHISHING_URL,
427 resource.threat_type); 427 resource.threat_type);
428 EXPECT_EQ(contents()->GetRenderProcessHost()->GetID(), 428 EXPECT_EQ(contents()->GetRenderProcessHost()->GetID(),
429 resource.render_process_host_id); 429 resource.render_process_host_id);
430 EXPECT_EQ(contents()->GetRenderViewHost()->routing_id(), 430 EXPECT_EQ(contents()->GetRenderViewHost()->GetRoutingID(),
431 resource.render_view_id); 431 resource.render_view_id);
432 432
433 // Make sure the client object will be deleted. 433 // Make sure the client object will be deleted.
434 BrowserThread::PostTask( 434 BrowserThread::PostTask(
435 BrowserThread::IO, 435 BrowserThread::IO,
436 FROM_HERE, 436 FROM_HERE,
437 base::Bind(&MockSafeBrowsingService::InvokeOnBlockingPageComplete, 437 base::Bind(&MockSafeBrowsingService::InvokeOnBlockingPageComplete,
438 sb_service_.get(), resource.callback)); 438 sb_service_.get(), resource.callback));
439 // Since the CsdClient object will be deleted on the UI thread I need 439 // Since the CsdClient object will be deleted on the UI thread I need
440 // to run the UI message loop. Post a task to stop the UI message loop 440 // to run the UI message loop. Post a task to stop the UI message loop
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 512
513 MessageLoop::current()->RunAllPending(); 513 MessageLoop::current()->RunAllPending();
514 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get())); 514 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get()));
515 EXPECT_EQ(other_phishing_url, resource.url); 515 EXPECT_EQ(other_phishing_url, resource.url);
516 EXPECT_EQ(other_phishing_url, resource.original_url); 516 EXPECT_EQ(other_phishing_url, resource.original_url);
517 EXPECT_FALSE(resource.is_subresource); 517 EXPECT_FALSE(resource.is_subresource);
518 EXPECT_EQ(SafeBrowsingService::CLIENT_SIDE_PHISHING_URL, 518 EXPECT_EQ(SafeBrowsingService::CLIENT_SIDE_PHISHING_URL,
519 resource.threat_type); 519 resource.threat_type);
520 EXPECT_EQ(contents()->GetRenderProcessHost()->GetID(), 520 EXPECT_EQ(contents()->GetRenderProcessHost()->GetID(),
521 resource.render_process_host_id); 521 resource.render_process_host_id);
522 EXPECT_EQ(contents()->GetRenderViewHost()->routing_id(), 522 EXPECT_EQ(contents()->GetRenderViewHost()->GetRoutingID(),
523 resource.render_view_id); 523 resource.render_view_id);
524 524
525 // Make sure the client object will be deleted. 525 // Make sure the client object will be deleted.
526 BrowserThread::PostTask( 526 BrowserThread::PostTask(
527 BrowserThread::IO, 527 BrowserThread::IO,
528 FROM_HERE, 528 FROM_HERE,
529 base::Bind(&MockSafeBrowsingService::InvokeOnBlockingPageComplete, 529 base::Bind(&MockSafeBrowsingService::InvokeOnBlockingPageComplete,
530 sb_service_.get(), resource.callback)); 530 sb_service_.get(), resource.callback));
531 // Since the CsdClient object will be deleted on the UI thread I need 531 // Since the CsdClient object will be deleted on the UI thread I need
532 // to run the UI message loop. Post a task to stop the UI message loop 532 // to run the UI message loop. Post a task to stop the UI message loop
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 &kFalse, &kFalse); 606 &kFalse, &kFalse);
607 NavigateAndCommit(url); 607 NavigateAndCommit(url);
608 WaitAndCheckPreClassificationChecks(); 608 WaitAndCheckPreClassificationChecks();
609 609
610 const IPC::Message* msg = process()->sink().GetFirstMessageMatching( 610 const IPC::Message* msg = process()->sink().GetFirstMessageMatching(
611 SafeBrowsingMsg_StartPhishingDetection::ID); 611 SafeBrowsingMsg_StartPhishingDetection::ID);
612 ASSERT_TRUE(msg); 612 ASSERT_TRUE(msg);
613 Tuple1<GURL> actual_url; 613 Tuple1<GURL> actual_url;
614 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url); 614 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url);
615 EXPECT_EQ(url, actual_url.a); 615 EXPECT_EQ(url, actual_url.a);
616 EXPECT_EQ(rvh()->routing_id(), msg->routing_id()); 616 EXPECT_EQ(rvh()->GetRoutingID(), msg->routing_id());
617 process()->sink().ClearMessages(); 617 process()->sink().ClearMessages();
618 618
619 // Now try an in-page navigation. This should not trigger an IPC. 619 // Now try an in-page navigation. This should not trigger an IPC.
620 EXPECT_CALL(*csd_service_, IsPrivateIPAddress(_)).Times(0); 620 EXPECT_CALL(*csd_service_, IsPrivateIPAddress(_)).Times(0);
621 url = GURL("http://host.com/#foo"); 621 url = GURL("http://host.com/#foo");
622 ExpectPreClassificationChecks(url, NULL, NULL, NULL, NULL, NULL, NULL); 622 ExpectPreClassificationChecks(url, NULL, NULL, NULL, NULL, NULL, NULL);
623 NavigateAndCommit(url); 623 NavigateAndCommit(url);
624 WaitAndCheckPreClassificationChecks(); 624 WaitAndCheckPreClassificationChecks();
625 625
626 msg = process()->sink().GetFirstMessageMatching( 626 msg = process()->sink().GetFirstMessageMatching(
627 SafeBrowsingMsg_StartPhishingDetection::ID); 627 SafeBrowsingMsg_StartPhishingDetection::ID);
628 ASSERT_FALSE(msg); 628 ASSERT_FALSE(msg);
629 629
630 // Check that XHTML is supported, in addition to the default HTML type. 630 // Check that XHTML is supported, in addition to the default HTML type.
631 // Note: for this test to work correctly, the new URL must be on the 631 // Note: for this test to work correctly, the new URL must be on the
632 // same domain as the previous URL, otherwise it will create a new 632 // same domain as the previous URL, otherwise it will create a new
633 // RenderViewHost that won't have the mime type set. 633 // RenderViewHost that won't have the mime type set.
634 url = GURL("http://host.com/xhtml"); 634 url = GURL("http://host.com/xhtml");
635 rvh()->set_contents_mime_type("application/xhtml+xml"); 635 rvh()->set_contents_mime_type("application/xhtml+xml");
636 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, 636 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse,
637 &kFalse, &kFalse); 637 &kFalse, &kFalse);
638 NavigateAndCommit(url); 638 NavigateAndCommit(url);
639 WaitAndCheckPreClassificationChecks(); 639 WaitAndCheckPreClassificationChecks();
640 msg = process()->sink().GetFirstMessageMatching( 640 msg = process()->sink().GetFirstMessageMatching(
641 SafeBrowsingMsg_StartPhishingDetection::ID); 641 SafeBrowsingMsg_StartPhishingDetection::ID);
642 ASSERT_TRUE(msg); 642 ASSERT_TRUE(msg);
643 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url); 643 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url);
644 EXPECT_EQ(url, actual_url.a); 644 EXPECT_EQ(url, actual_url.a);
645 EXPECT_EQ(rvh()->routing_id(), msg->routing_id()); 645 EXPECT_EQ(rvh()->GetRoutingID(), msg->routing_id());
646 process()->sink().ClearMessages(); 646 process()->sink().ClearMessages();
647 647
648 // Navigate to a new host, which should cause another IPC. 648 // Navigate to a new host, which should cause another IPC.
649 url = GURL("http://host2.com/"); 649 url = GURL("http://host2.com/");
650 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, 650 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse,
651 &kFalse, &kFalse); 651 &kFalse, &kFalse);
652 NavigateAndCommit(url); 652 NavigateAndCommit(url);
653 WaitAndCheckPreClassificationChecks(); 653 WaitAndCheckPreClassificationChecks();
654 msg = process()->sink().GetFirstMessageMatching( 654 msg = process()->sink().GetFirstMessageMatching(
655 SafeBrowsingMsg_StartPhishingDetection::ID); 655 SafeBrowsingMsg_StartPhishingDetection::ID);
656 ASSERT_TRUE(msg); 656 ASSERT_TRUE(msg);
657 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url); 657 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url);
658 EXPECT_EQ(url, actual_url.a); 658 EXPECT_EQ(url, actual_url.a);
659 EXPECT_EQ(rvh()->routing_id(), msg->routing_id()); 659 EXPECT_EQ(rvh()->GetRoutingID(), msg->routing_id());
660 process()->sink().ClearMessages(); 660 process()->sink().ClearMessages();
661 661
662 // If the mime type is not one that we support, no IPC should be triggered. 662 // If the mime type is not one that we support, no IPC should be triggered.
663 // Note: for this test to work correctly, the new URL must be on the 663 // Note: for this test to work correctly, the new URL must be on the
664 // same domain as the previous URL, otherwise it will create a new 664 // same domain as the previous URL, otherwise it will create a new
665 // RenderViewHost that won't have the mime type set. 665 // RenderViewHost that won't have the mime type set.
666 url = GURL("http://host2.com/image.jpg"); 666 url = GURL("http://host2.com/image.jpg");
667 rvh()->set_contents_mime_type("image/jpeg"); 667 rvh()->set_contents_mime_type("image/jpeg");
668 ExpectPreClassificationChecks(url, NULL, NULL, NULL, NULL, NULL, NULL); 668 ExpectPreClassificationChecks(url, NULL, NULL, NULL, NULL, NULL, NULL);
669 NavigateAndCommit(url); 669 NavigateAndCommit(url);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 url = GURL("http://host6.com/"); 706 url = GURL("http://host6.com/");
707 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, &kTrue, 707 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, &kTrue,
708 NULL); 708 NULL);
709 NavigateAndCommit(url); 709 NavigateAndCommit(url);
710 WaitAndCheckPreClassificationChecks(); 710 WaitAndCheckPreClassificationChecks();
711 msg = process()->sink().GetFirstMessageMatching( 711 msg = process()->sink().GetFirstMessageMatching(
712 SafeBrowsingMsg_StartPhishingDetection::ID); 712 SafeBrowsingMsg_StartPhishingDetection::ID);
713 ASSERT_TRUE(msg); 713 ASSERT_TRUE(msg);
714 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url); 714 SafeBrowsingMsg_StartPhishingDetection::Read(msg, &actual_url);
715 EXPECT_EQ(url, actual_url.a); 715 EXPECT_EQ(url, actual_url.a);
716 EXPECT_EQ(rvh()->routing_id(), msg->routing_id()); 716 EXPECT_EQ(rvh()->GetRoutingID(), msg->routing_id());
717 process()->sink().ClearMessages(); 717 process()->sink().ClearMessages();
718 718
719 // If the url isn't in the cache and we are over the reporting limit, we 719 // If the url isn't in the cache and we are over the reporting limit, we
720 // don't do classification. 720 // don't do classification.
721 url = GURL("http://host7.com/"); 721 url = GURL("http://host7.com/");
722 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse, 722 ExpectPreClassificationChecks(url, &kFalse, &kFalse, &kFalse, &kFalse,
723 &kFalse, &kTrue); 723 &kFalse, &kTrue);
724 NavigateAndCommit(url); 724 NavigateAndCommit(url);
725 WaitAndCheckPreClassificationChecks(); 725 WaitAndCheckPreClassificationChecks();
726 msg = process()->sink().GetFirstMessageMatching( 726 msg = process()->sink().GetFirstMessageMatching(
(...skipping 21 matching lines...) Expand all
748 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get())); 748 EXPECT_TRUE(Mock::VerifyAndClear(sb_service_.get()));
749 EXPECT_EQ(url, resource.url); 749 EXPECT_EQ(url, resource.url);
750 EXPECT_EQ(url, resource.original_url); 750 EXPECT_EQ(url, resource.original_url);
751 resource.callback.Reset(); 751 resource.callback.Reset();
752 msg = process()->sink().GetFirstMessageMatching( 752 msg = process()->sink().GetFirstMessageMatching(
753 SafeBrowsingMsg_StartPhishingDetection::ID); 753 SafeBrowsingMsg_StartPhishingDetection::ID);
754 ASSERT_FALSE(msg); 754 ASSERT_FALSE(msg);
755 } 755 }
756 756
757 } // namespace safe_browsing 757 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/client_side_detection_host.cc ('k') | chrome/browser/safe_browsing/malware_details.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698