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

Side by Side Diff: chrome/renderer/safe_browsing/phishing_classifier_delegate.h

Issue 6398001: Run pre-classification checks in the browser before starting client-side phishing detection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to trunk and address review comments Created 9 years, 10 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This class is used by the RenderView to interact with a PhishingClassifier. 5 // This class is used by the RenderView to interact with a PhishingClassifier.
6 6
7 #ifndef CHROME_RENDERER_SAFE_BROWSING_PHISHING_CLASSIFIER_DELEGATE_H_ 7 #ifndef CHROME_RENDERER_SAFE_BROWSING_PHISHING_CLASSIFIER_DELEGATE_H_
8 #define CHROME_RENDERER_SAFE_BROWSING_PHISHING_CLASSIFIER_DELEGATE_H_ 8 #define CHROME_RENDERER_SAFE_BROWSING_PHISHING_CLASSIFIER_DELEGATE_H_
9 #pragma once 9 #pragma once
10 10
(...skipping 16 matching lines...) Expand all
27 // will be used. 27 // will be used.
28 PhishingClassifierDelegate(RenderView* render_view, 28 PhishingClassifierDelegate(RenderView* render_view,
29 PhishingClassifier* classifier); 29 PhishingClassifier* classifier);
30 ~PhishingClassifierDelegate(); 30 ~PhishingClassifierDelegate();
31 31
32 // Called by the RenderView once there is a phishing scorer available. 32 // Called by the RenderView once there is a phishing scorer available.
33 // The scorer is passed on to the classifier. 33 // The scorer is passed on to the classifier.
34 void SetPhishingScorer(const safe_browsing::Scorer* scorer); 34 void SetPhishingScorer(const safe_browsing::Scorer* scorer);
35 35
36 // RenderViewObserver implementation, public for testing. 36 // RenderViewObserver implementation, public for testing.
37
38 // Called by the RenderView once a page has finished loading. Updates the
39 // last-loaded URL and page id, then starts classification if all other
40 // conditions are met (see MaybeStartClassification for details).
37 virtual void PageCaptured(const string16& page_text); 41 virtual void PageCaptured(const string16& page_text);
42
43 // Called by the RenderView when a page has started loading in the given
44 // WebFrame. Typically, this will cause any pending classification to be
45 // cancelled. However, if the navigation is within the same page, we
46 // continue running the current classification.
38 virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame, 47 virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame,
39 bool is_new_navigation); 48 bool is_new_navigation);
40 49
41 // Cancels any pending classification and frees the page text. Called by 50 // Cancels any pending classification and frees the page text. Called by
42 // the RenderView when the RenderView is going away. 51 // the RenderView when the RenderView is going away.
43 void CancelPendingClassification(); 52 void CancelPendingClassification();
44 53
45 private: 54 private:
46 friend class PhishingClassifierDelegateTest; 55 friend class PhishingClassifierDelegateTest;
47 56
48 // RenderViewObserver implementation. 57 // RenderViewObserver implementation.
49 virtual bool OnMessageReceived(const IPC::Message& message); 58 virtual bool OnMessageReceived(const IPC::Message& message);
50 59
60 // Called by the RenderView when it receives a StartPhishingDetection IPC
61 // from the browser. This signals that it is ok to begin classification
62 // for the given toplevel URL. If the URL has been fully loaded into the
63 // RenderView and a Scorer has been set, this will begin classification,
64 // otherwise classification will be deferred until these conditions are met.
65 void OnStartPhishingDetection(const GURL& url);
66
51 // Called when classification for the current page finishes. 67 // Called when classification for the current page finishes.
52 void ClassificationDone(bool is_phishy, double phishy_score); 68 void ClassificationDone(bool is_phishy, double phishy_score);
53 69
54 // Returns the RenderView's toplevel URL, with the ref stripped. 70 // Returns the RenderView's toplevel URL, with the ref stripped.
55 GURL StripToplevelUrl(); 71 GURL StripToplevelUrl();
56 72
73 // Shared code to begin classification if all conditions are met.
74 void MaybeStartClassification();
75
57 // The PhishingClassifier to use for the RenderView. This is created once 76 // The PhishingClassifier to use for the RenderView. This is created once
58 // a scorer is made available via SetPhishingScorer(). 77 // a scorer is made available via SetPhishingScorer().
59 scoped_ptr<PhishingClassifier> classifier_; 78 scoped_ptr<PhishingClassifier> classifier_;
60 79
61 // The last URL that was sent to the phishing classifier. 80 // The last URL that the browser instructed us to classify.
81 GURL last_url_received_from_browser_;
82
83 // The last URL and page id that have finished loading in the RenderView.
84 // These correspond to the text in classifier_page_text_.
85 GURL last_finished_load_url_;
86 int32 last_finished_load_id_;
87
88 // The URL and page id of the last load that we actually started
89 // classification on. This is used to suppress phishing classification on
90 // subframe navigation and back and forward navigations in history.
62 GURL last_url_sent_to_classifier_; 91 GURL last_url_sent_to_classifier_;
63
64 // The page id of the last load that was sent to the phishing classifier.
65 // This is used to suppress phishing classification on back and forward
66 // navigations in history.
67 int32 last_page_id_sent_to_classifier_; 92 int32 last_page_id_sent_to_classifier_;
68 93
69 // The page text that will be analyzed by the phishing classifier. This is 94 // The page text that will be analyzed by the phishing classifier. This is
70 // set by OnNavigate and cleared when the classifier finishes. Note that if 95 // set by OnNavigate and cleared when the classifier finishes. Note that if
71 // there is no classifier yet when OnNavigate is called, the page text will 96 // there is no Scorer yet when OnNavigate is called, or the browser has not
72 // be cached until the scorer is set and a classifier can be created. 97 // instructed us to classify the page, the page text will be cached until
98 // these conditions are met.
73 string16 classifier_page_text_; 99 string16 classifier_page_text_;
74 100
75 // Set to true if we should run the phishing classifier on the current page
76 // as soon as SetPhishingScorer() is called.
77 bool pending_classification_;
78
79 DISALLOW_COPY_AND_ASSIGN(PhishingClassifierDelegate); 101 DISALLOW_COPY_AND_ASSIGN(PhishingClassifierDelegate);
80 }; 102 };
81 103
82 } // namespace safe_browsing 104 } // namespace safe_browsing
83 105
84 #endif // CHROME_RENDERER_SAFE_BROWSING_PHISHING_CLASSIFIER_DELEGATE_H_ 106 #endif // CHROME_RENDERER_SAFE_BROWSING_PHISHING_CLASSIFIER_DELEGATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698