| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/safe_browsing/download_protection_service.h" | 5 #include "chrome/browser/safe_browsing/download_protection_service.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/base_paths.h" | 10 #include "base/base_paths.h" |
| (...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 EXPECT_TRUE(IsResult(DownloadProtectionService::UNKNOWN)); | 503 EXPECT_TRUE(IsResult(DownloadProtectionService::UNKNOWN)); |
| 504 #endif | 504 #endif |
| 505 | 505 |
| 506 // Only if the final url is whitelisted should it be SAFE. | 506 // Only if the final url is whitelisted should it be SAFE. |
| 507 url_chain.push_back(GURL("http://www.google.com/a.exe")); | 507 url_chain.push_back(GURL("http://www.google.com/a.exe")); |
| 508 download_service_->CheckClientDownload( | 508 download_service_->CheckClientDownload( |
| 509 &item, | 509 &item, |
| 510 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, | 510 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, |
| 511 base::Unretained(this))); | 511 base::Unretained(this))); |
| 512 MessageLoop::current()->Run(); | 512 MessageLoop::current()->Run(); |
| 513 #if defined(OS_MACOSX) | |
| 514 EXPECT_TRUE(IsResult(DownloadProtectionService::UNKNOWN)); | |
| 515 #else | |
| 516 EXPECT_TRUE(IsResult(DownloadProtectionService::SAFE)); | 513 EXPECT_TRUE(IsResult(DownloadProtectionService::SAFE)); |
| 517 #endif | |
| 518 } | 514 } |
| 519 | 515 |
| 520 TEST_F(DownloadProtectionServiceTest, CheckClientDownloadFetchFailed) { | 516 TEST_F(DownloadProtectionServiceTest, CheckClientDownloadFetchFailed) { |
| 521 net::FakeURLFetcherFactory factory(NULL); | 517 net::FakeURLFetcherFactory factory(NULL); |
| 522 // HTTP request will fail. | 518 // HTTP request will fail. |
| 523 factory.SetFakeResponse( | 519 factory.SetFakeResponse( |
| 524 DownloadProtectionService::GetDownloadRequestUrl(), std::string(), | 520 DownloadProtectionService::GetDownloadRequestUrl(), std::string(), |
| 525 net::HTTP_INTERNAL_SERVER_ERROR, net::URLRequestStatus::FAILED); | 521 net::HTTP_INTERNAL_SERVER_ERROR, net::URLRequestStatus::FAILED); |
| 526 | 522 |
| 527 base::FilePath a_tmp(FILE_PATH_LITERAL("a.tmp")); | 523 base::FilePath a_tmp(FILE_PATH_LITERAL("a.tmp")); |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 978 EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path, _)) | 974 EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path, _)) |
| 979 .WillOnce(SetCertificateContents("dummy cert data")); | 975 .WillOnce(SetCertificateContents("dummy cert data")); |
| 980 EXPECT_CALL(*binary_feature_extractor_.get(), | 976 EXPECT_CALL(*binary_feature_extractor_.get(), |
| 981 ExtractImageHeaders(tmp_path, _)) | 977 ExtractImageHeaders(tmp_path, _)) |
| 982 .WillOnce(SetDosHeaderContents("dummy dos header")); | 978 .WillOnce(SetDosHeaderContents("dummy dos header")); |
| 983 download_service_->CheckClientDownload( | 979 download_service_->CheckClientDownload( |
| 984 &item, | 980 &item, |
| 985 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, | 981 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, |
| 986 base::Unretained(this))); | 982 base::Unretained(this))); |
| 987 | 983 |
| 988 #if !defined(OS_WIN) && !defined(OS_MACOSX) | 984 #if !defined(OS_WIN) |
| 989 // SendRequest is not called. Wait for FinishRequest to call our callback. | 985 // SendRequest is not called. Wait for FinishRequest to call our callback. |
| 990 MessageLoop::current()->Run(); | 986 MessageLoop::current()->Run(); |
| 991 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 987 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 992 EXPECT_EQ(NULL, fetcher); | 988 EXPECT_EQ(NULL, fetcher); |
| 993 #else | 989 #else |
| 994 // Run the message loop(s) until SendRequest is called. | 990 // Run the message loop(s) until SendRequest is called. |
| 995 FlushThreadMessageLoops(); | 991 FlushThreadMessageLoops(); |
| 996 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 992 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 997 ASSERT_TRUE(fetcher); | 993 ASSERT_TRUE(fetcher); |
| 998 ClientDownloadRequest request; | 994 ClientDownloadRequest request; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1063 MatchDownloadWhitelistUrl(_)) | 1059 MatchDownloadWhitelistUrl(_)) |
| 1064 .WillRepeatedly(Return(false)); | 1060 .WillRepeatedly(Return(false)); |
| 1065 EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path, _)); | 1061 EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path, _)); |
| 1066 EXPECT_CALL(*binary_feature_extractor_.get(), | 1062 EXPECT_CALL(*binary_feature_extractor_.get(), |
| 1067 ExtractImageHeaders(tmp_path, _)); | 1063 ExtractImageHeaders(tmp_path, _)); |
| 1068 download_service_->CheckClientDownload( | 1064 download_service_->CheckClientDownload( |
| 1069 &item, | 1065 &item, |
| 1070 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, | 1066 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, |
| 1071 base::Unretained(this))); | 1067 base::Unretained(this))); |
| 1072 | 1068 |
| 1073 #if !defined(OS_WIN) && !defined(OS_MACOSX) | 1069 #if !defined(OS_WIN) |
| 1074 // SendRequest is not called. Wait for FinishRequest to call our callback. | 1070 // SendRequest is not called. Wait for FinishRequest to call our callback. |
| 1075 MessageLoop::current()->Run(); | 1071 MessageLoop::current()->Run(); |
| 1076 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 1072 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 1077 EXPECT_EQ(NULL, fetcher); | 1073 EXPECT_EQ(NULL, fetcher); |
| 1078 #else | 1074 #else |
| 1079 // Run the message loop(s) until SendRequest is called. | 1075 // Run the message loop(s) until SendRequest is called. |
| 1080 FlushThreadMessageLoops(); | 1076 FlushThreadMessageLoops(); |
| 1081 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 1077 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 1082 ASSERT_TRUE(fetcher); | 1078 ASSERT_TRUE(fetcher); |
| 1083 ClientDownloadRequest request; | 1079 ClientDownloadRequest request; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 .WillRepeatedly(SetDosHeaderContents("dummy dos header")); | 1147 .WillRepeatedly(SetDosHeaderContents("dummy dos header")); |
| 1152 | 1148 |
| 1153 // First test with no history match for the tab URL. | 1149 // First test with no history match for the tab URL. |
| 1154 { | 1150 { |
| 1155 TestURLFetcherWatcher fetcher_watcher(&factory); | 1151 TestURLFetcherWatcher fetcher_watcher(&factory); |
| 1156 download_service_->CheckClientDownload( | 1152 download_service_->CheckClientDownload( |
| 1157 &item, | 1153 &item, |
| 1158 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, | 1154 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, |
| 1159 base::Unretained(this))); | 1155 base::Unretained(this))); |
| 1160 | 1156 |
| 1161 #if !defined(OS_WIN) && !defined(OS_MACOSX) | 1157 #if !defined(OS_WIN) |
| 1162 // SendRequest is not called. Wait for FinishRequest to call our callback. | 1158 // SendRequest is not called. Wait for FinishRequest to call our callback. |
| 1163 MessageLoop::current()->Run(); | 1159 MessageLoop::current()->Run(); |
| 1164 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 1160 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 1165 EXPECT_EQ(NULL, fetcher); | 1161 EXPECT_EQ(NULL, fetcher); |
| 1166 #else | 1162 #else |
| 1167 EXPECT_EQ(0, fetcher_watcher.WaitForRequest()); | 1163 EXPECT_EQ(0, fetcher_watcher.WaitForRequest()); |
| 1168 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 1164 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 1169 ASSERT_TRUE(fetcher); | 1165 ASSERT_TRUE(fetcher); |
| 1170 ClientDownloadRequest request; | 1166 ClientDownloadRequest request; |
| 1171 EXPECT_TRUE(request.ParseFromString(fetcher->upload_data())); | 1167 EXPECT_TRUE(request.ParseFromString(fetcher->upload_data())); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1226 redirects, | 1222 redirects, |
| 1227 content::PAGE_TRANSITION_TYPED, | 1223 content::PAGE_TRANSITION_TYPED, |
| 1228 history::SOURCE_BROWSED, | 1224 history::SOURCE_BROWSED, |
| 1229 false); | 1225 false); |
| 1230 | 1226 |
| 1231 TestURLFetcherWatcher fetcher_watcher(&factory); | 1227 TestURLFetcherWatcher fetcher_watcher(&factory); |
| 1232 download_service_->CheckClientDownload( | 1228 download_service_->CheckClientDownload( |
| 1233 &item, | 1229 &item, |
| 1234 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, | 1230 base::Bind(&DownloadProtectionServiceTest::CheckDoneCallback, |
| 1235 base::Unretained(this))); | 1231 base::Unretained(this))); |
| 1236 #if !defined(OS_WIN) && !defined(OS_MACOSX) | 1232 #if !defined(OS_WIN) |
| 1237 // SendRequest is not called. Wait for FinishRequest to call our callback. | 1233 // SendRequest is not called. Wait for FinishRequest to call our callback. |
| 1238 MessageLoop::current()->Run(); | 1234 MessageLoop::current()->Run(); |
| 1239 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 1235 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 1240 EXPECT_EQ(NULL, fetcher); | 1236 EXPECT_EQ(NULL, fetcher); |
| 1241 #else | 1237 #else |
| 1242 EXPECT_EQ(0, fetcher_watcher.WaitForRequest()); | 1238 EXPECT_EQ(0, fetcher_watcher.WaitForRequest()); |
| 1243 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 1239 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 1244 ASSERT_TRUE(fetcher); | 1240 ASSERT_TRUE(fetcher); |
| 1245 ClientDownloadRequest request; | 1241 ClientDownloadRequest request; |
| 1246 EXPECT_TRUE(request.ParseFromString(fetcher->upload_data())); | 1242 EXPECT_TRUE(request.ParseFromString(fetcher->upload_data())); |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1518 EXPECT_THAT(whitelist_strings, ElementsAre(cert_base + "/OU=unit")); | 1514 EXPECT_THAT(whitelist_strings, ElementsAre(cert_base + "/OU=unit")); |
| 1519 | 1515 |
| 1520 cert = ReadTestCertificate("test_c.pem"); | 1516 cert = ReadTestCertificate("test_c.pem"); |
| 1521 ASSERT_TRUE(cert.get()); | 1517 ASSERT_TRUE(cert.get()); |
| 1522 whitelist_strings.clear(); | 1518 whitelist_strings.clear(); |
| 1523 GetCertificateWhitelistStrings( | 1519 GetCertificateWhitelistStrings( |
| 1524 *cert.get(), *issuer_cert.get(), &whitelist_strings); | 1520 *cert.get(), *issuer_cert.get(), &whitelist_strings); |
| 1525 EXPECT_THAT(whitelist_strings, ElementsAre()); | 1521 EXPECT_THAT(whitelist_strings, ElementsAre()); |
| 1526 } | 1522 } |
| 1527 } // namespace safe_browsing | 1523 } // namespace safe_browsing |
| OLD | NEW |