| Index: chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
|
| diff --git a/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc b/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
|
| index 163268dffc1a259e5ec777a58c17a16fb49db463..288bfef0350fb184f09f0b27701097466cf23d44 100644
|
| --- a/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
|
| @@ -17,7 +17,7 @@
|
| #include "chrome/browser/history/history_service_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/safe_browsing/browser_features.h"
|
| -#include "chrome/browser/safe_browsing/client_side_detection_service.h"
|
| +#include "chrome/browser/safe_browsing/client_side_detection_host.h"
|
| #include "chrome/browser/safe_browsing/ui_manager.h"
|
| #include "chrome/common/safe_browsing/csd.pb.h"
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| @@ -32,18 +32,22 @@
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "url/gurl.h"
|
|
|
| +using content::BrowserThread;
|
| using content::WebContentsTester;
|
| +
|
| +using testing::DoAll;
|
| using testing::Return;
|
| using testing::StrictMock;
|
|
|
| namespace safe_browsing {
|
| +
|
| namespace {
|
| -class MockClientSideDetectionService : public ClientSideDetectionService {
|
| +class MockClientSideDetectionHost : public ClientSideDetectionHost {
|
| public:
|
| - MockClientSideDetectionService() : ClientSideDetectionService(NULL) {}
|
| - virtual ~MockClientSideDetectionService() {};
|
| + MockClientSideDetectionHost() {}
|
| + virtual ~MockClientSideDetectionHost() {};
|
|
|
| - MOCK_CONST_METHOD1(IsBadIpAddress, bool(const std::string&));
|
| + MOCK_METHOD1(IsBadIpAddress, bool(const std::string&));
|
| };
|
| } // namespace
|
|
|
| @@ -53,9 +57,9 @@ class BrowserFeatureExtractorTest : public ChromeRenderViewHostTestHarness {
|
| ChromeRenderViewHostTestHarness::SetUp();
|
| ASSERT_TRUE(profile()->CreateHistoryService(
|
| true /* delete_file */, false /* no_db */));
|
| - service_.reset(new StrictMock<MockClientSideDetectionService>());
|
| + host_.reset(new StrictMock<MockClientSideDetectionHost>());
|
| extractor_.reset(
|
| - new BrowserFeatureExtractor(web_contents(), service_.get()));
|
| + new BrowserFeatureExtractor(web_contents(), host_.get()));
|
| num_pending_ = 0;
|
| browse_info_.reset(new BrowseInfo);
|
| }
|
| @@ -138,8 +142,20 @@ class BrowserFeatureExtractorTest : public ChromeRenderViewHostTestHarness {
|
| }
|
|
|
| void ExtractMalwareFeatures(ClientMalwareRequest* request) {
|
| + StartExtractMalwareFeatures(request);
|
| + base::MessageLoopForUI::current()->Run();
|
| + EXPECT_EQ(1U, success_.count(request));
|
| + EXPECT_TRUE(success_[request]);
|
| + }
|
| +
|
| + void StartExtractMalwareFeatures(ClientMalwareRequest* request) {
|
| + success_.erase(request);
|
| + ++num_pending_;
|
| extractor_->ExtractMalwareFeatures(
|
| - browse_info_.get(), request);
|
| + *browse_info_,
|
| + request,
|
| + base::Bind(&BrowserFeatureExtractorTest::ExtractMalwareFeaturesDone,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void GetMalwareFeatureMap(
|
| @@ -157,11 +173,11 @@ class BrowserFeatureExtractorTest : public ChromeRenderViewHostTestHarness {
|
| }
|
| }
|
|
|
| - int num_pending_;
|
| + int num_pending_; // Number of pending feature extractions.
|
| scoped_ptr<BrowserFeatureExtractor> extractor_;
|
| - std::map<ClientPhishingRequest*, bool> success_;
|
| + std::map<void*, bool> success_;
|
| scoped_ptr<BrowseInfo> browse_info_;
|
| - scoped_ptr<MockClientSideDetectionService> service_;
|
| + scoped_ptr<StrictMock<MockClientSideDetectionHost> > host_;
|
|
|
| private:
|
| void ExtractFeaturesDone(bool success, ClientPhishingRequest* request) {
|
| @@ -171,6 +187,15 @@ class BrowserFeatureExtractorTest : public ChromeRenderViewHostTestHarness {
|
| base::MessageLoop::current()->Quit();
|
| }
|
| }
|
| +
|
| + void ExtractMalwareFeaturesDone(bool success, ClientMalwareRequest* request) {
|
| + EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + ASSERT_EQ(0U, success_.count(request));
|
| + success_[request] = success;
|
| + if (--num_pending_ == 0) {
|
| + base::MessageLoopForUI::current()->Quit();
|
| + }
|
| + }
|
| };
|
|
|
| TEST_F(BrowserFeatureExtractorTest, UrlNotInHistory) {
|
| @@ -480,13 +505,6 @@ TEST_F(BrowserFeatureExtractorTest, BrowseFeatures) {
|
| GURL("https://bankofamerica.com"),
|
| content::PAGE_TRANSITION_GENERATED);
|
|
|
| - std::set<std::string> urls;
|
| - urls.insert("http://test.com");
|
| - browse_info_->ips.insert(std::make_pair("193.5.163.8", urls));
|
| - browse_info_->ips.insert(std::make_pair("23.94.78.1", urls));
|
| - EXPECT_CALL(*service_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true));
|
| - EXPECT_CALL(*service_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false));
|
| -
|
| EXPECT_TRUE(ExtractFeatures(&request));
|
| features.clear();
|
| GetFeatureMap(request, &features);
|
| @@ -507,9 +525,6 @@ TEST_F(BrowserFeatureExtractorTest, BrowseFeatures) {
|
| features::kHostPrefix,
|
| features::kIsFirstNavigation)));
|
| EXPECT_EQ(5.0, features[features::kPageTransitionType]);
|
| - EXPECT_EQ(1.0, features[std::string(features::kBadIpFetch) + "193.5.163.8"]);
|
| - EXPECT_FALSE(features.count(std::string(features::kBadIpFetch) +
|
| - "23.94.78.1"));
|
| }
|
|
|
| TEST_F(BrowserFeatureExtractorTest, SafeBrowsingFeatures) {
|
| @@ -552,9 +567,9 @@ TEST_F(BrowserFeatureExtractorTest, MalwareFeatures) {
|
| std::set<std::string> good_urls;
|
| good_urls.insert("http://ok.com");
|
| browse_info_->ips.insert(std::make_pair("23.94.78.1", good_urls));
|
| - EXPECT_CALL(*service_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true));
|
| - EXPECT_CALL(*service_, IsBadIpAddress("92.92.92.92")).WillOnce(Return(true));
|
| - EXPECT_CALL(*service_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false));
|
| + EXPECT_CALL(*host_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true));
|
| + EXPECT_CALL(*host_, IsBadIpAddress("92.92.92.92")).WillOnce(Return(true));
|
| + EXPECT_CALL(*host_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false));
|
|
|
| ExtractMalwareFeatures(&request);
|
| std::map<std::string, std::set<std::string> > features;
|
| @@ -592,9 +607,9 @@ TEST_F(BrowserFeatureExtractorTest, MalwareFeatures_ExceedLimit) {
|
|
|
| // First ip is good, then check the next 5 bad ips.
|
| // Not check the 7th as reached limit.
|
| - EXPECT_CALL(*service_, IsBadIpAddress(ips[0])).WillOnce(Return(false));
|
| + EXPECT_CALL(*host_, IsBadIpAddress(ips[0])).WillOnce(Return(false));
|
| for (int i = 1; i < 6; ++i) {
|
| - EXPECT_CALL(*service_, IsBadIpAddress(ips[i])).WillOnce(Return(true));
|
| + EXPECT_CALL(*host_, IsBadIpAddress(ips[i])).WillOnce(Return(true));
|
| }
|
|
|
| ExtractMalwareFeatures(&request);
|
|
|