Index: chrome/renderer/safe_browsing/phishing_classifier_delegate.h |
diff --git a/chrome/renderer/safe_browsing/phishing_classifier_delegate.h b/chrome/renderer/safe_browsing/phishing_classifier_delegate.h |
index 89788f2edabf7c3432610b1e33f7a3aa2ed1deba..7d2c0787277dcca4605258ab43b1ba1ab90c7fa0 100644 |
--- a/chrome/renderer/safe_browsing/phishing_classifier_delegate.h |
+++ b/chrome/renderer/safe_browsing/phishing_classifier_delegate.h |
@@ -34,7 +34,16 @@ class PhishingClassifierDelegate : public RenderViewObserver { |
void SetPhishingScorer(const safe_browsing::Scorer* scorer); |
// RenderViewObserver implementation, public for testing. |
+ |
+ // Called by the RenderView once a page has finished loading. Updates the |
+ // last-loaded URL and page id, then starts classification if all other |
+ // conditions are met (see MaybeStartClassification for details). |
virtual void PageCaptured(const string16& page_text); |
+ |
+ // Called by the RenderView when a page has started loading in the given |
+ // WebFrame. Typically, this will cause any pending classification to be |
+ // cancelled. However, if the navigation is within the same page, we |
+ // continue running the current classification. |
virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame, |
bool is_new_navigation); |
@@ -48,34 +57,47 @@ class PhishingClassifierDelegate : public RenderViewObserver { |
// RenderViewObserver implementation. |
virtual bool OnMessageReceived(const IPC::Message& message); |
+ // Called by the RenderView when it receives a StartPhishingDetection IPC |
+ // from the browser. This signals that it is ok to begin classification |
+ // for the given toplevel URL. If the URL has been fully loaded into the |
+ // RenderView and a Scorer has been set, this will begin classification, |
+ // otherwise classification will be deferred until these conditions are met. |
+ void OnStartPhishingDetection(const GURL& url); |
+ |
// Called when classification for the current page finishes. |
void ClassificationDone(bool is_phishy, double phishy_score); |
// Returns the RenderView's toplevel URL, with the ref stripped. |
GURL StripToplevelUrl(); |
+ // Shared code to begin classification if all conditions are met. |
+ void MaybeStartClassification(); |
+ |
// The PhishingClassifier to use for the RenderView. This is created once |
// a scorer is made available via SetPhishingScorer(). |
scoped_ptr<PhishingClassifier> classifier_; |
- // The last URL that was sent to the phishing classifier. |
- GURL last_url_sent_to_classifier_; |
+ // The last URL that the browser instructed us to classify. |
+ GURL last_url_received_from_browser_; |
+ |
+ // The last URL and page id that have finished loading in the RenderView. |
+ // These correspond to the text in classifier_page_text_. |
+ GURL last_finished_load_url_; |
+ int32 last_finished_load_id_; |
- // The page id of the last load that was sent to the phishing classifier. |
- // This is used to suppress phishing classification on back and forward |
- // navigations in history. |
+ // The URL and page id of the last load that we actually started |
+ // classification on. This is used to suppress phishing classification on |
+ // subframe navigation and back and forward navigations in history. |
+ GURL last_url_sent_to_classifier_; |
int32 last_page_id_sent_to_classifier_; |
// The page text that will be analyzed by the phishing classifier. This is |
// set by OnNavigate and cleared when the classifier finishes. Note that if |
- // there is no classifier yet when OnNavigate is called, the page text will |
- // be cached until the scorer is set and a classifier can be created. |
+ // there is no Scorer yet when OnNavigate is called, or the browser has not |
+ // instructed us to classify the page, the page text will be cached until |
+ // these conditions are met. |
string16 classifier_page_text_; |
- // Set to true if we should run the phishing classifier on the current page |
- // as soon as SetPhishingScorer() is called. |
- bool pending_classification_; |
- |
DISALLOW_COPY_AND_ASSIGN(PhishingClassifierDelegate); |
}; |