| Index: chrome/browser/safe_browsing/browser_feature_extractor.h
|
| ===================================================================
|
| --- chrome/browser/safe_browsing/browser_feature_extractor.h (revision 89204)
|
| +++ chrome/browser/safe_browsing/browser_feature_extractor.h (working copy)
|
| @@ -1,161 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -//
|
| -// BrowserFeatureExtractor computes various browser features for client-side
|
| -// phishing detection. For now it does a bunch of lookups in the history
|
| -// service to see whether a particular URL has been visited before by the
|
| -// user.
|
| -
|
| -#ifndef CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_
|
| -#define CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_
|
| -#pragma once
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <utility>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/callback_old.h"
|
| -#include "base/task.h"
|
| -#include "base/time.h"
|
| -#include "chrome/browser/history/history_types.h"
|
| -#include "content/browser/cancelable_request.h"
|
| -
|
| -class HistoryService;
|
| -class TabContents;
|
| -
|
| -namespace safe_browsing {
|
| -class ClientPhishingRequest;
|
| -
|
| -namespace features {
|
| -
|
| -// TODO(noelutz): move renderer/safe_browsing/features.h to common.
|
| -////////////////////////////////////////////////////
|
| -// History features.
|
| -////////////////////////////////////////////////////
|
| -
|
| -// Number of visits to that URL stored in the browser history.
|
| -// Should always be an integer larger than 1 because by the time
|
| -// we lookup the history the current URL should already be stored there.
|
| -extern const char kUrlHistoryVisitCount[];
|
| -
|
| -// Number of times the URL was typed in the Omnibox.
|
| -extern const char kUrlHistoryTypedCount[];
|
| -
|
| -// Number of times the URL was reached by clicking a link.
|
| -extern const char kUrlHistoryLinkCount[];
|
| -
|
| -// Number of times URL was visited more than 24h ago.
|
| -extern const char kUrlHistoryVisitCountMoreThan24hAgo[];
|
| -
|
| -// Number of user-visible visits to all URLs on the same host/port as
|
| -// the URL for HTTP and HTTPs.
|
| -extern const char kHttpHostVisitCount[];
|
| -extern const char kHttpsHostVisitCount[];
|
| -
|
| -// Boolean feature which is true if the host was visited for the first
|
| -// time more than 24h ago (only considers user-visible visits like above).
|
| -extern const char kFirstHttpHostVisitMoreThan24hAgo[];
|
| -extern const char kFirstHttpsHostVisitMoreThan24hAgo[];
|
| -} // namespace features
|
| -
|
| -// All methods of this class must be called on the UI thread (including
|
| -// the constructor).
|
| -class BrowserFeatureExtractor {
|
| - public:
|
| - // Called when feature extraction is done. The first argument will be
|
| - // true iff feature extraction succeeded. The second argument is the
|
| - // phishing request which was modified by the feature extractor. The
|
| - // DoneCallback takes ownership of the request object.
|
| - typedef Callback2<bool, ClientPhishingRequest*>::Type DoneCallback;
|
| -
|
| - // The caller keeps ownership of the tab object and is responsible for
|
| - // ensuring that it stays valid for the entire lifetime of this object.
|
| - explicit BrowserFeatureExtractor(TabContents* tab);
|
| -
|
| - // The destructor will cancel any pending requests.
|
| - ~BrowserFeatureExtractor();
|
| -
|
| - // Begins extraction of the browser features. We take ownership
|
| - // of the request object until |callback| is called (see DoneCallback above)
|
| - // and will write the extracted features to the feature map. Once the
|
| - // feature extraction is complete, |callback| is run on the UI thread. We
|
| - // take ownership of the |callback| object. This method must run on the UI
|
| - // thread.
|
| - void ExtractFeatures(ClientPhishingRequest* request,
|
| - DoneCallback* callback);
|
| -
|
| - private:
|
| - friend class DeleteTask<BrowserFeatureExtractor>;
|
| - typedef std::pair<ClientPhishingRequest*, DoneCallback*> ExtractionData;
|
| - typedef std::map<CancelableRequestProvider::Handle,
|
| - ExtractionData> PendingQueriesMap;
|
| -
|
| - // Actually starts feature extraction (does the real work).
|
| - void StartExtractFeatures(ClientPhishingRequest* request,
|
| - DoneCallback* callback);
|
| -
|
| - // HistoryService callback which is called when we're done querying URL visits
|
| - // in the history.
|
| - void QueryUrlHistoryDone(CancelableRequestProvider::Handle handle,
|
| - bool success,
|
| - const history::URLRow* row,
|
| - history::VisitVector* visits);
|
| -
|
| - // HistoryService callback which is called when we're done querying HTTP host
|
| - // visits in the history.
|
| - void QueryHttpHostVisitsDone(CancelableRequestProvider::Handle handle,
|
| - bool success,
|
| - int num_visits,
|
| - base::Time first_visit);
|
| -
|
| - // HistoryService callback which is called when we're done querying HTTPS host
|
| - // visits in the history.
|
| - void QueryHttpsHostVisitsDone(CancelableRequestProvider::Handle handle,
|
| - bool success,
|
| - int num_visits,
|
| - base::Time first_visit);
|
| -
|
| - // Helper function which sets the host history features given the
|
| - // number of host visits and the time of the fist host visit. Set
|
| - // |is_http_query| to true if the URL scheme is HTTP and to false if
|
| - // the scheme is HTTPS.
|
| - void SetHostVisitsFeatures(int num_visits,
|
| - base::Time first_visit,
|
| - bool is_http_query,
|
| - ClientPhishingRequest* request);
|
| -
|
| - // Helper function which stores the request and callback while the history
|
| - // query is being processed.
|
| - void StorePendingQuery(CancelableRequestProvider::Handle handle,
|
| - ClientPhishingRequest* request,
|
| - DoneCallback* callback);
|
| -
|
| - // Helper function which is the counterpart of StorePendingQuery. If there
|
| - // is a pending query for the given handle it will return false and set both
|
| - // the request and cb pointers. Otherwise, it will return false.
|
| - bool GetPendingQuery(CancelableRequestProvider::Handle handle,
|
| - ClientPhishingRequest** request,
|
| - DoneCallback** callback);
|
| -
|
| - // Helper function which gets the history server if possible. If the pointer
|
| - // is set it will return true and false otherwise.
|
| - bool GetHistoryService(HistoryService** history);
|
| -
|
| - TabContents* tab_;
|
| - CancelableRequestConsumer request_consumer_;
|
| - ScopedRunnableMethodFactory<BrowserFeatureExtractor> method_factory_;
|
| -
|
| - // Set of pending extractions (i.e. extractions for which ExtractFeatures was
|
| - // called but not StartExtractFeatures).
|
| - std::set<ExtractionData> pending_extractions_;
|
| -
|
| - // Set of pending queries (i.e., where history->Query...() was called but
|
| - // the history callback hasn't been invoked yet).
|
| - PendingQueriesMap pending_queries_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BrowserFeatureExtractor);
|
| -};
|
| -} // namespace safe_browsing
|
| -#endif // CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_
|
|
|