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 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 net::X509Certificate::CreateCertificateListFromBytes( | 239 net::X509Certificate::CreateCertificateListFromBytes( |
240 cert_data.data(), | 240 cert_data.data(), |
241 cert_data.size(), | 241 cert_data.size(), |
242 net::X509Certificate::FORMAT_PEM_CERT_SEQUENCE); | 242 net::X509Certificate::FORMAT_PEM_CERT_SEQUENCE); |
243 return certs.empty() ? NULL : certs[0]; | 243 return certs.empty() ? NULL : certs[0]; |
244 } | 244 } |
245 | 245 |
246 private: | 246 private: |
247 // Helper functions for FlushThreadMessageLoops. | 247 // Helper functions for FlushThreadMessageLoops. |
248 void RunAllPendingAndQuitUI() { | 248 void RunAllPendingAndQuitUI() { |
249 MessageLoop::current()->RunUntilIdle(); | 249 base::MessageLoop::current()->RunUntilIdle(); |
250 BrowserThread::PostTask( | 250 BrowserThread::PostTask( |
251 BrowserThread::UI, | 251 BrowserThread::UI, |
252 FROM_HERE, | 252 FROM_HERE, |
253 base::Bind(&DownloadProtectionServiceTest::QuitMessageLoop, | 253 base::Bind(&DownloadProtectionServiceTest::QuitMessageLoop, |
254 base::Unretained(this))); | 254 base::Unretained(this))); |
255 } | 255 } |
256 | 256 |
257 void QuitMessageLoop() { | 257 void QuitMessageLoop() { |
258 MessageLoop::current()->Quit(); | 258 base::MessageLoop::current()->Quit(); |
259 } | 259 } |
260 | 260 |
261 void PostRunMessageLoopTask(BrowserThread::ID thread) { | 261 void PostRunMessageLoopTask(BrowserThread::ID thread) { |
262 BrowserThread::PostTask( | 262 BrowserThread::PostTask( |
263 thread, | 263 thread, |
264 FROM_HERE, | 264 FROM_HERE, |
265 base::Bind(&DownloadProtectionServiceTest::RunAllPendingAndQuitUI, | 265 base::Bind(&DownloadProtectionServiceTest::RunAllPendingAndQuitUI, |
266 base::Unretained(this))); | 266 base::Unretained(this))); |
267 } | 267 } |
268 | 268 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 return result_ == expected ? | 301 return result_ == expected ? |
302 testing::AssertionSuccess() : | 302 testing::AssertionSuccess() : |
303 testing::AssertionFailure() << "Expected " << expected << | 303 testing::AssertionFailure() << "Expected " << expected << |
304 ", got " << result_; | 304 ", got " << result_; |
305 } | 305 } |
306 | 306 |
307 protected: | 307 protected: |
308 scoped_refptr<FakeSafeBrowsingService> sb_service_; | 308 scoped_refptr<FakeSafeBrowsingService> sb_service_; |
309 scoped_refptr<MockSignatureUtil> signature_util_; | 309 scoped_refptr<MockSignatureUtil> signature_util_; |
310 DownloadProtectionService* download_service_; | 310 DownloadProtectionService* download_service_; |
311 MessageLoop msg_loop_; | 311 base::MessageLoop msg_loop_; |
312 DownloadProtectionService::DownloadCheckResult result_; | 312 DownloadProtectionService::DownloadCheckResult result_; |
313 bool has_result_; | 313 bool has_result_; |
314 scoped_ptr<content::TestBrowserThread> io_thread_; | 314 scoped_ptr<content::TestBrowserThread> io_thread_; |
315 scoped_ptr<content::TestBrowserThread> ui_thread_; | 315 scoped_ptr<content::TestBrowserThread> ui_thread_; |
316 base::FilePath testdata_path_; | 316 base::FilePath testdata_path_; |
317 }; | 317 }; |
318 | 318 |
319 TEST_F(DownloadProtectionServiceTest, CheckClientDownloadInvalidUrl) { | 319 TEST_F(DownloadProtectionServiceTest, CheckClientDownloadInvalidUrl) { |
320 base::FilePath a_tmp(FILE_PATH_LITERAL("a.tmp")); | 320 base::FilePath a_tmp(FILE_PATH_LITERAL("a.tmp")); |
321 base::FilePath a_exe(FILE_PATH_LITERAL("a.exe")); | 321 base::FilePath a_exe(FILE_PATH_LITERAL("a.exe")); |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 "http://www.google.com/bla.exe", | 820 "http://www.google.com/bla.exe", |
821 referrer.spec())); | 821 referrer.spec())); |
822 EXPECT_TRUE(request.has_signature()); | 822 EXPECT_TRUE(request.has_signature()); |
823 ASSERT_EQ(1, request.signature().certificate_chain_size()); | 823 ASSERT_EQ(1, request.signature().certificate_chain_size()); |
824 const ClientDownloadRequest_CertificateChain& chain = | 824 const ClientDownloadRequest_CertificateChain& chain = |
825 request.signature().certificate_chain(0); | 825 request.signature().certificate_chain(0); |
826 ASSERT_EQ(1, chain.element_size()); | 826 ASSERT_EQ(1, chain.element_size()); |
827 EXPECT_EQ("dummy cert data", chain.element(0).certificate()); | 827 EXPECT_EQ("dummy cert data", chain.element(0).certificate()); |
828 | 828 |
829 // Simulate the request finishing. | 829 // Simulate the request finishing. |
830 MessageLoop::current()->PostTask( | 830 base::MessageLoop::current()->PostTask( |
831 FROM_HERE, | 831 FROM_HERE, |
832 base::Bind(&DownloadProtectionServiceTest::SendURLFetchComplete, | 832 base::Bind(&DownloadProtectionServiceTest::SendURLFetchComplete, |
833 base::Unretained(this), fetcher)); | 833 base::Unretained(this), fetcher)); |
834 msg_loop_.Run(); | 834 msg_loop_.Run(); |
835 #endif | 835 #endif |
836 } | 836 } |
837 | 837 |
838 // Similar to above, but with an unsigned binary. | 838 // Similar to above, but with an unsigned binary. |
839 TEST_F(DownloadProtectionServiceTest, | 839 TEST_F(DownloadProtectionServiceTest, |
840 CheckClientDownloadValidateRequestNoSignature) { | 840 CheckClientDownloadValidateRequestNoSignature) { |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 ClientDownloadRequest::DOWNLOAD_REDIRECT, | 891 ClientDownloadRequest::DOWNLOAD_REDIRECT, |
892 "http://www.google.com/", "")); | 892 "http://www.google.com/", "")); |
893 EXPECT_TRUE(RequestContainsResource(request, | 893 EXPECT_TRUE(RequestContainsResource(request, |
894 ClientDownloadRequest::DOWNLOAD_URL, | 894 ClientDownloadRequest::DOWNLOAD_URL, |
895 "ftp://www.google.com/bla.exe", | 895 "ftp://www.google.com/bla.exe", |
896 referrer.spec())); | 896 referrer.spec())); |
897 EXPECT_TRUE(request.has_signature()); | 897 EXPECT_TRUE(request.has_signature()); |
898 EXPECT_EQ(0, request.signature().certificate_chain_size()); | 898 EXPECT_EQ(0, request.signature().certificate_chain_size()); |
899 | 899 |
900 // Simulate the request finishing. | 900 // Simulate the request finishing. |
901 MessageLoop::current()->PostTask( | 901 base::MessageLoop::current()->PostTask( |
902 FROM_HERE, | 902 FROM_HERE, |
903 base::Bind(&DownloadProtectionServiceTest::SendURLFetchComplete, | 903 base::Bind(&DownloadProtectionServiceTest::SendURLFetchComplete, |
904 base::Unretained(this), fetcher)); | 904 base::Unretained(this), fetcher)); |
905 msg_loop_.Run(); | 905 msg_loop_.Run(); |
906 #endif | 906 #endif |
907 } | 907 } |
908 | 908 |
909 TEST_F(DownloadProtectionServiceTest, TestCheckDownloadUrl) { | 909 TEST_F(DownloadProtectionServiceTest, TestCheckDownloadUrl) { |
910 std::vector<GURL> url_chain; | 910 std::vector<GURL> url_chain; |
911 url_chain.push_back(GURL("http://www.google.com/")); | 911 url_chain.push_back(GURL("http://www.google.com/")); |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 GetCertificateWhitelistStrings(*cert, *issuer_cert, &whitelist_strings); | 1122 GetCertificateWhitelistStrings(*cert, *issuer_cert, &whitelist_strings); |
1123 EXPECT_THAT(whitelist_strings, ElementsAre(cert_base + "/OU=unit")); | 1123 EXPECT_THAT(whitelist_strings, ElementsAre(cert_base + "/OU=unit")); |
1124 | 1124 |
1125 cert = ReadTestCertificate("test_c.pem"); | 1125 cert = ReadTestCertificate("test_c.pem"); |
1126 ASSERT_TRUE(cert.get()); | 1126 ASSERT_TRUE(cert.get()); |
1127 whitelist_strings.clear(); | 1127 whitelist_strings.clear(); |
1128 GetCertificateWhitelistStrings(*cert, *issuer_cert, &whitelist_strings); | 1128 GetCertificateWhitelistStrings(*cert, *issuer_cert, &whitelist_strings); |
1129 EXPECT_THAT(whitelist_strings, ElementsAre()); | 1129 EXPECT_THAT(whitelist_strings, ElementsAre()); |
1130 } | 1130 } |
1131 } // namespace safe_browsing | 1131 } // namespace safe_browsing |
OLD | NEW |