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

Side by Side Diff: chrome/renderer/safe_browsing/phishing_classifier_delegate_browsertest.cc

Issue 7408001: If we show a SafeBrowsing warning we always send the client-side detection (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Merge Created 9 years, 5 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
« no previous file with comments | « chrome/renderer/safe_browsing/phishing_classifier_delegate.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Note: this test uses RenderViewFakeResourcesTest in order to set up a 5 // Note: this test uses RenderViewFakeResourcesTest in order to set up a
6 // real RenderThread to hold the phishing Scorer object. 6 // real RenderThread to hold the phishing Scorer object.
7 7
8 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" 8 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h"
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 private: 57 private:
58 DISALLOW_COPY_AND_ASSIGN(MockScorer); 58 DISALLOW_COPY_AND_ASSIGN(MockScorer);
59 }; 59 };
60 } // namespace 60 } // namespace
61 61
62 class PhishingClassifierDelegateTest : public RenderViewFakeResourcesTest { 62 class PhishingClassifierDelegateTest : public RenderViewFakeResourcesTest {
63 protected: 63 protected:
64 bool OnMessageReceived(const IPC::Message& message) { 64 bool OnMessageReceived(const IPC::Message& message) {
65 bool handled = true; 65 bool handled = true;
66 IPC_BEGIN_MESSAGE_MAP(PhishingClassifierDelegateTest, message) 66 IPC_BEGIN_MESSAGE_MAP(PhishingClassifierDelegateTest, message)
67 IPC_MESSAGE_HANDLER(SafeBrowsingHostMsg_DetectedPhishingSite, 67 IPC_MESSAGE_HANDLER(SafeBrowsingHostMsg_PhishingDetectionDone,
68 OnDetectedPhishingSite) 68 OnPhishingDetectionDone)
69 IPC_MESSAGE_UNHANDLED( 69 IPC_MESSAGE_UNHANDLED(
70 handled = RenderViewFakeResourcesTest::OnMessageReceived(message)) 70 handled = RenderViewFakeResourcesTest::OnMessageReceived(message))
71 IPC_END_MESSAGE_MAP() 71 IPC_END_MESSAGE_MAP()
72 return handled; 72 return handled;
73 } 73 }
74 74
75 void OnDetectedPhishingSite(const std::string& verdict_str) { 75 void OnPhishingDetectionDone(const std::string& verdict_str) {
76 scoped_ptr<ClientPhishingRequest> verdict(new ClientPhishingRequest); 76 scoped_ptr<ClientPhishingRequest> verdict(new ClientPhishingRequest);
77 if (verdict->ParseFromString(verdict_str) && 77 if (verdict->ParseFromString(verdict_str) &&
78 verdict->IsInitialized()) { 78 verdict->IsInitialized()) {
79 verdict_.swap(verdict); 79 verdict_.swap(verdict);
80 } 80 }
81 message_loop_.Quit(); 81 message_loop_.Quit();
82 } 82 }
83 83
84 // Runs the ClassificationDone callback, then waits for the 84 // Runs the ClassificationDone callback, then waits for the
85 // DetectedPhishingSite IPC to arrive. 85 // PhishingDetectionDone IPC to arrive.
86 void RunClassificationDone(PhishingClassifierDelegate* delegate, 86 void RunClassificationDone(PhishingClassifierDelegate* delegate,
87 const ClientPhishingRequest& verdict) { 87 const ClientPhishingRequest& verdict) {
88 // Clear out any previous state. 88 // Clear out any previous state.
89 verdict_.reset(); 89 verdict_.reset();
90 delegate->ClassificationDone(verdict); 90 delegate->ClassificationDone(verdict);
91 message_loop_.Run(); 91 message_loop_.Run();
92 } 92 }
93 93
94 void OnStartPhishingDetection(PhishingClassifierDelegate* delegate, 94 void OnStartPhishingDetection(PhishingClassifierDelegate* delegate,
95 const GURL& url) { 95 const GURL& url) {
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 432
433 page_text = ASCIIToUTF16("phish"); 433 page_text = ASCIIToUTF16("phish");
434 EXPECT_CALL(*classifier, CancelPendingClassification()); 434 EXPECT_CALL(*classifier, CancelPendingClassification());
435 delegate->PageCaptured(&page_text, false); 435 delegate->PageCaptured(&page_text, false);
436 Mock::VerifyAndClearExpectations(classifier); 436 Mock::VerifyAndClearExpectations(classifier);
437 437
438 // The delegate will cancel pending classification on destruction. 438 // The delegate will cancel pending classification on destruction.
439 EXPECT_CALL(*classifier, CancelPendingClassification()); 439 EXPECT_CALL(*classifier, CancelPendingClassification());
440 } 440 }
441 441
442 TEST_F(PhishingClassifierDelegateTest, DetectedPhishingSite) { 442 TEST_F(PhishingClassifierDelegateTest, PhishingDetectionDone) {
443 // Tests that a DetectedPhishingSite IPC is sent to the browser 443 // Tests that a PhishingDetectionDone IPC is sent to the browser
444 // if a site comes back as phishy. 444 // whenever we finish classification.
445 MockPhishingClassifier* classifier = 445 MockPhishingClassifier* classifier =
446 new StrictMock<MockPhishingClassifier>(view_); 446 new StrictMock<MockPhishingClassifier>(view_);
447 PhishingClassifierDelegate* delegate = 447 PhishingClassifierDelegate* delegate =
448 PhishingClassifierDelegate::Create(view_, classifier); 448 PhishingClassifierDelegate::Create(view_, classifier);
449 MockScorer scorer; 449 MockScorer scorer;
450 delegate->SetPhishingScorer(&scorer); 450 delegate->SetPhishingScorer(&scorer);
451 ASSERT_TRUE(classifier->is_ready()); 451 ASSERT_TRUE(classifier->is_ready());
452 452
453 // Start by loading a page to populate the delegate's state. 453 // Start by loading a page to populate the delegate's state.
454 responses_["http://host.com/"] = "<html><body>phish</body></html>"; 454 responses_["http://host.com/"] = "<html><body>phish</body></html>";
455 EXPECT_CALL(*classifier, CancelPendingClassification()); 455 EXPECT_CALL(*classifier, CancelPendingClassification());
456 LoadURL("http://host.com/#a"); 456 LoadURL("http://host.com/#a");
457 Mock::VerifyAndClearExpectations(classifier); 457 Mock::VerifyAndClearExpectations(classifier);
458 string16 page_text = ASCIIToUTF16("phish"); 458 string16 page_text = ASCIIToUTF16("phish");
459 OnStartPhishingDetection(delegate, GURL("http://host.com/#a")); 459 OnStartPhishingDetection(delegate, GURL("http://host.com/#a"));
460 { 460 {
461 InSequence s; 461 InSequence s;
462 EXPECT_CALL(*classifier, CancelPendingClassification()); 462 EXPECT_CALL(*classifier, CancelPendingClassification());
463 EXPECT_CALL(*classifier, BeginClassification(Pointee(page_text), _)). 463 EXPECT_CALL(*classifier, BeginClassification(Pointee(page_text), _)).
464 WillOnce(DeleteArg<1>()); 464 WillOnce(DeleteArg<1>());
465 delegate->PageCaptured(&page_text, false); 465 delegate->PageCaptured(&page_text, false);
466 Mock::VerifyAndClearExpectations(classifier); 466 Mock::VerifyAndClearExpectations(classifier);
467 } 467 }
468 468
469 // Now run the callback to simulate the classifier finishing. 469 // Now run the callback to simulate the classifier finishing.
470 ClientPhishingRequest verdict; 470 ClientPhishingRequest verdict;
471 verdict.set_url("http://host.com/#a"); 471 verdict.set_url("http://host.com/#a");
472 verdict.set_client_score(0.8f); 472 verdict.set_client_score(0.8f);
473 verdict.set_is_phishing(true); 473 verdict.set_is_phishing(false); // Send IPC even if site is not phishing.
474 RunClassificationDone(delegate, verdict); 474 RunClassificationDone(delegate, verdict);
475 ASSERT_TRUE(verdict_.get()); 475 ASSERT_TRUE(verdict_.get());
476 EXPECT_EQ(verdict.SerializeAsString(), verdict_->SerializeAsString()); 476 EXPECT_EQ(verdict.SerializeAsString(), verdict_->SerializeAsString());
477 477
478 // The delegate will cancel pending classification on destruction. 478 // The delegate will cancel pending classification on destruction.
479 EXPECT_CALL(*classifier, CancelPendingClassification()); 479 EXPECT_CALL(*classifier, CancelPendingClassification());
480 } 480 }
481 481
482 } // namespace safe_browsing 482 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/renderer/safe_browsing/phishing_classifier_delegate.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698