Index: chrome/browser/safe_browsing/client_side_detection_host.h |
diff --git a/chrome/browser/safe_browsing/client_side_detection_host.h b/chrome/browser/safe_browsing/client_side_detection_host.h |
index d22931086a5cc4114f9ef9cc7427913fce8e91f0..fbe1cd60721ba81d0f23fe91d7c7bf51fa57fab8 100644 |
--- a/chrome/browser/safe_browsing/client_side_detection_host.h |
+++ b/chrome/browser/safe_browsing/client_side_detection_host.h |
@@ -17,7 +17,8 @@ |
class TabContents; |
namespace safe_browsing { |
- |
+class BrowserFeatureExtractor; |
+class ClientPhishingRequest; |
class ClientSideDetectionService; |
// This class is used to receive the IPC from the renderer which |
@@ -28,7 +29,7 @@ class ClientSideDetectionService; |
class ClientSideDetectionHost : public TabContentsObserver { |
public: |
// The caller keeps ownership of the tab object and is responsible for |
- // ensuring that it stays valid for the entire lifetime of this object. |
+ // ensuring that it stays valid until TabContentsDestroyed is called. |
static ClientSideDetectionHost* Create(TabContents* tab); |
virtual ~ClientSideDetectionHost(); |
@@ -42,6 +43,10 @@ class ClientSideDetectionHost : public TabContentsObserver { |
const content::LoadCommittedDetails& details, |
const ViewHostMsg_FrameNavigate_Params& params); |
+ protected: |
+ // From TabContentsObserver. Called when the TabContents is being destroyed. |
+ virtual void TabContentsDestroyed(TabContents* tab); |
+ |
private: |
friend class ClientSideDetectionHostTest; |
class ShouldClassifyUrlRequest; |
@@ -57,6 +62,11 @@ class ClientSideDetectionHost : public TabContentsObserver { |
// Otherwise, we do nothing. Called in UI thread. |
void MaybeShowPhishingWarning(GURL phishing_url, bool is_phishing); |
+ // Callback that is called when the browser feature extractor is done. |
+ // This method is responsible for deleting the request object. Called on |
+ // the UI thread. |
+ void FeatureExtractionDone(bool success, ClientPhishingRequest* request); |
+ |
// Used for testing. This function does not take ownership of the service |
// class. |
void set_client_side_detection_service(ClientSideDetectionService* service); |
@@ -72,6 +82,8 @@ class ClientSideDetectionHost : public TabContentsObserver { |
// Keep a handle to the latest classification request so that we can cancel |
// it if necessary. |
scoped_refptr<ShouldClassifyUrlRequest> classification_request_; |
+ // Browser-side feature extractor. |
+ scoped_ptr<BrowserFeatureExtractor> feature_extractor_; |
base::ScopedCallbackFactory<ClientSideDetectionHost> cb_factory_; |