| Index: chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc (revision 89204)
|
| +++ chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc (working copy)
|
| @@ -1,163 +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.
|
| -
|
| -#include "chrome/browser/safe_browsing/browser_feature_extractor.h"
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/time.h"
|
| -#include "chrome/common/safe_browsing/csd.pb.h"
|
| -#include "chrome/browser/history/history.h"
|
| -#include "chrome/browser/history/history_backend.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/test/testing_profile.h"
|
| -#include "content/browser/browser_thread.h"
|
| -#include "content/browser/renderer_host/test_render_view_host.h"
|
| -#include "content/browser/tab_contents/tab_contents.h"
|
| -#include "content/browser/tab_contents/test_tab_contents.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace safe_browsing {
|
| -class BrowserFeatureExtractorTest : public RenderViewHostTestHarness {
|
| - protected:
|
| - BrowserFeatureExtractorTest()
|
| - : ui_thread_(BrowserThread::UI, &message_loop_) {
|
| - }
|
| -
|
| - virtual void SetUp() {
|
| - RenderViewHostTestHarness::SetUp();
|
| - profile_->CreateHistoryService(true /* delete_file */, false /* no_db */);
|
| - extractor_.reset(new BrowserFeatureExtractor(contents()));
|
| - num_pending_ = 0;
|
| - }
|
| -
|
| - virtual void TearDown() {
|
| - extractor_.reset();
|
| - profile_->DestroyHistoryService();
|
| - RenderViewHostTestHarness::TearDown();
|
| - ASSERT_EQ(0, num_pending_);
|
| - }
|
| -
|
| - HistoryService* history_service() {
|
| - return profile_->GetHistoryService(Profile::EXPLICIT_ACCESS);
|
| - }
|
| -
|
| - bool ExtractFeatures(ClientPhishingRequest* request) {
|
| - StartExtractFeatures(request);
|
| - MessageLoop::current()->Run();
|
| - EXPECT_EQ(1U, success_.count(request));
|
| - return success_.count(request) ? success_[request] : false;
|
| - }
|
| -
|
| - void StartExtractFeatures(ClientPhishingRequest* request) {
|
| - success_.erase(request);
|
| - ++num_pending_;
|
| - extractor_->ExtractFeatures(
|
| - request,
|
| - NewCallback(this,
|
| - &BrowserFeatureExtractorTest::ExtractFeaturesDone));
|
| - }
|
| -
|
| - BrowserThread ui_thread_;
|
| - int num_pending_;
|
| - scoped_ptr<BrowserFeatureExtractor> extractor_;
|
| - std::map<ClientPhishingRequest*, bool> success_;
|
| -
|
| - private:
|
| - void ExtractFeaturesDone(bool success, ClientPhishingRequest* request) {
|
| - ASSERT_EQ(0U, success_.count(request));
|
| - success_[request] = success;
|
| - if (--num_pending_ == 0) {
|
| - MessageLoop::current()->Quit();
|
| - }
|
| - }
|
| -};
|
| -
|
| -TEST_F(BrowserFeatureExtractorTest, UrlNotInHistory) {
|
| - ClientPhishingRequest request;
|
| - request.set_url("http://www.google.com/");
|
| - request.set_client_score(0.5);
|
| - EXPECT_FALSE(ExtractFeatures(&request));
|
| -}
|
| -
|
| -TEST_F(BrowserFeatureExtractorTest, RequestNotInitialized) {
|
| - ClientPhishingRequest request;
|
| - request.set_url("http://www.google.com/");
|
| - // Request is missing the score value.
|
| - EXPECT_FALSE(ExtractFeatures(&request));
|
| -}
|
| -
|
| -TEST_F(BrowserFeatureExtractorTest, UrlInHistory) {
|
| - history_service()->AddPage(GURL("http://www.foo.com/bar.html"),
|
| - history::SOURCE_BROWSED);
|
| - history_service()->AddPage(GURL("https://www.foo.com/gaa.html"),
|
| - history::SOURCE_BROWSED); // same host HTTPS.
|
| - history_service()->AddPage(GURL("http://www.foo.com/gaa.html"),
|
| - history::SOURCE_BROWSED); // same host HTTP.
|
| - history_service()->AddPage(GURL("http://bar.foo.com/gaa.html"),
|
| - history::SOURCE_BROWSED); // different host.
|
| - history_service()->AddPage(GURL("http://www.foo.com/bar.html?a=b"),
|
| - base::Time::Now() - base::TimeDelta::FromHours(23),
|
| - NULL, 0, GURL(), PageTransition::LINK,
|
| - history::RedirectList(), history::SOURCE_BROWSED,
|
| - false);
|
| - history_service()->AddPage(GURL("http://www.foo.com/bar.html"),
|
| - base::Time::Now() - base::TimeDelta::FromHours(25),
|
| - NULL, 0, GURL(), PageTransition::TYPED,
|
| - history::RedirectList(), history::SOURCE_BROWSED,
|
| - false);
|
| - history_service()->AddPage(GURL("https://www.foo.com/goo.html"),
|
| - base::Time::Now() - base::TimeDelta::FromDays(5),
|
| - NULL, 0, GURL(), PageTransition::TYPED,
|
| - history::RedirectList(), history::SOURCE_BROWSED,
|
| - false);
|
| -
|
| - ClientPhishingRequest request;
|
| - request.set_url("http://www.foo.com/bar.html");
|
| - request.set_client_score(0.5);
|
| - EXPECT_TRUE(ExtractFeatures(&request));
|
| - std::map<std::string, double> features;
|
| - for (int i = 0; i < request.non_model_feature_map_size(); ++i) {
|
| - const ClientPhishingRequest::Feature& feature =
|
| - request.non_model_feature_map(i);
|
| - EXPECT_EQ(0U, features.count(feature.name()));
|
| - features[feature.name()] = feature.value();
|
| - }
|
| - EXPECT_EQ(8U, features.size());
|
| - EXPECT_DOUBLE_EQ(2.0, features[features::kUrlHistoryVisitCount]);
|
| - EXPECT_DOUBLE_EQ(1.0,
|
| - features[features::kUrlHistoryVisitCountMoreThan24hAgo]);
|
| - EXPECT_DOUBLE_EQ(1.0, features[features::kUrlHistoryTypedCount]);
|
| - EXPECT_DOUBLE_EQ(1.0, features[features::kUrlHistoryLinkCount]);
|
| - EXPECT_DOUBLE_EQ(4.0, features[features::kHttpHostVisitCount]);
|
| - EXPECT_DOUBLE_EQ(2.0, features[features::kHttpsHostVisitCount]);
|
| - EXPECT_DOUBLE_EQ(1.0, features[features::kFirstHttpHostVisitMoreThan24hAgo]);
|
| - EXPECT_DOUBLE_EQ(1.0, features[features::kFirstHttpsHostVisitMoreThan24hAgo]);
|
| -}
|
| -
|
| -TEST_F(BrowserFeatureExtractorTest, MultipleRequestsAtOnce) {
|
| - history_service()->AddPage(GURL("http://www.foo.com/bar.html"),
|
| - history::SOURCE_BROWSED);
|
| - ClientPhishingRequest request;
|
| - request.set_url("http://www.foo.com/bar.html");
|
| - request.set_client_score(0.5);
|
| - StartExtractFeatures(&request);
|
| -
|
| - ClientPhishingRequest request2;
|
| - request2.set_url("http://www.foo.com/goo.html");
|
| - request2.set_client_score(1.0);
|
| - StartExtractFeatures(&request2);
|
| -
|
| - MessageLoop::current()->Run();
|
| - EXPECT_TRUE(success_[&request]);
|
| - // Success is false because the second URL is not in the history and we are
|
| - // not able to distinguish between a missing URL in the history and an error.
|
| - EXPECT_FALSE(success_[&request2]);
|
| -}
|
| -} // namespace safe_browsing
|
|
|