OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
11 #include "chrome/browser/safe_browsing/database_manager.h" | 11 #include "chrome/browser/safe_browsing/local_database_manager.h" |
12 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 12 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
13 #include "content/public/test/test_browser_thread_bundle.h" | 13 #include "content/public/test/test_browser_thread_bundle.h" |
14 #include "content/public/test/test_utils.h" | 14 #include "content/public/test/test_utils.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "testing/platform_test.h" | 16 #include "testing/platform_test.h" |
17 #include "url/gurl.h" | 17 #include "url/gurl.h" |
18 | 18 |
19 using content::TestBrowserThreadBundle; | 19 using content::TestBrowserThreadBundle; |
20 | 20 |
21 namespace { | 21 namespace { |
(...skipping 25 matching lines...) Expand all Loading... |
47 private: | 47 private: |
48 TestBrowserThreadBundle thread_bundle_; | 48 TestBrowserThreadBundle thread_bundle_; |
49 }; | 49 }; |
50 | 50 |
51 bool SafeBrowsingDatabaseManagerTest::RunSBHashTest( | 51 bool SafeBrowsingDatabaseManagerTest::RunSBHashTest( |
52 const safe_browsing_util::ListType list_type, | 52 const safe_browsing_util::ListType list_type, |
53 const std::vector<SBThreatType>& expected_threats, | 53 const std::vector<SBThreatType>& expected_threats, |
54 const std::string& result_list) { | 54 const std::string& result_list) { |
55 scoped_refptr<SafeBrowsingService> sb_service_( | 55 scoped_refptr<SafeBrowsingService> sb_service_( |
56 SafeBrowsingService::CreateSafeBrowsingService()); | 56 SafeBrowsingService::CreateSafeBrowsingService()); |
57 scoped_refptr<SafeBrowsingDatabaseManager> db_manager_( | 57 scoped_refptr<LocalSafeBrowsingDatabaseManager> db_manager_( |
58 new SafeBrowsingDatabaseManager(sb_service_)); | 58 new LocalSafeBrowsingDatabaseManager(sb_service_)); |
59 const SBFullHash same_full_hash = {}; | 59 const SBFullHash same_full_hash = {}; |
60 | 60 |
61 SafeBrowsingDatabaseManager::SafeBrowsingCheck* check = | 61 LocalSafeBrowsingDatabaseManager::SafeBrowsingCheck* check = |
62 new SafeBrowsingDatabaseManager::SafeBrowsingCheck( | 62 new LocalSafeBrowsingDatabaseManager::SafeBrowsingCheck( |
63 std::vector<GURL>(), | 63 std::vector<GURL>(), |
64 std::vector<SBFullHash>(1, same_full_hash), | 64 std::vector<SBFullHash>(1, same_full_hash), |
65 NULL, | 65 NULL, |
66 list_type, | 66 list_type, |
67 expected_threats); | 67 expected_threats); |
68 db_manager_->checks_.insert(check); | 68 db_manager_->checks_.insert(check); |
69 | 69 |
70 const SBFullHashResult full_hash_result = { | 70 const SBFullHashResult full_hash_result = { |
71 same_full_hash, | 71 same_full_hash, |
72 safe_browsing_util::GetListId(result_list) | 72 safe_browsing_util::GetListId(result_list) |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 full_hashes.push_back(full_hash_malware); | 148 full_hashes.push_back(full_hash_malware); |
149 | 149 |
150 SBFullHashResult full_hash_unwanted; | 150 SBFullHashResult full_hash_unwanted; |
151 full_hash_unwanted.hash = kUnwantedAndMalwareHostHash; | 151 full_hash_unwanted.hash = kUnwantedAndMalwareHostHash; |
152 full_hash_unwanted.list_id = | 152 full_hash_unwanted.list_id = |
153 static_cast<int>(safe_browsing_util::UNWANTEDURL); | 153 static_cast<int>(safe_browsing_util::UNWANTEDURL); |
154 full_hashes.push_back(full_hash_unwanted); | 154 full_hashes.push_back(full_hash_unwanted); |
155 } | 155 } |
156 | 156 |
157 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, | 157 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
158 SafeBrowsingDatabaseManager::GetHashSeverestThreatType( | 158 LocalSafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
159 kMalwareHostHash, full_hashes)); | 159 kMalwareHostHash, full_hashes)); |
160 | 160 |
161 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, | 161 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, |
162 SafeBrowsingDatabaseManager::GetHashSeverestThreatType( | 162 LocalSafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
163 kPhishingHostHash, full_hashes)); | 163 kPhishingHostHash, full_hashes)); |
164 | 164 |
165 EXPECT_EQ(SB_THREAT_TYPE_URL_UNWANTED, | 165 EXPECT_EQ(SB_THREAT_TYPE_URL_UNWANTED, |
166 SafeBrowsingDatabaseManager::GetHashSeverestThreatType( | 166 LocalSafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
167 kUnwantedHostHash, full_hashes)); | 167 kUnwantedHostHash, full_hashes)); |
168 | 168 |
169 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, | 169 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
170 SafeBrowsingDatabaseManager::GetHashSeverestThreatType( | 170 LocalSafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
171 kUnwantedAndMalwareHostHash, full_hashes)); | 171 kUnwantedAndMalwareHostHash, full_hashes)); |
172 | 172 |
173 EXPECT_EQ(SB_THREAT_TYPE_SAFE, | 173 EXPECT_EQ(SB_THREAT_TYPE_SAFE, |
174 SafeBrowsingDatabaseManager::GetHashSeverestThreatType( | 174 LocalSafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
175 kSafeHostHash, full_hashes)); | 175 kSafeHostHash, full_hashes)); |
176 | 176 |
177 const size_t kArbitraryValue = 123456U; | 177 const size_t kArbitraryValue = 123456U; |
178 size_t index = kArbitraryValue; | 178 size_t index = kArbitraryValue; |
179 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, | 179 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
180 SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( | 180 LocalSafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
181 kMalwareUrl, full_hashes, &index)); | 181 kMalwareUrl, full_hashes, &index)); |
182 EXPECT_EQ(0U, index); | 182 EXPECT_EQ(0U, index); |
183 | 183 |
184 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, | 184 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, |
185 SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( | 185 LocalSafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
186 kPhishingUrl, full_hashes, &index)); | 186 kPhishingUrl, full_hashes, &index)); |
187 EXPECT_EQ(1U, index); | 187 EXPECT_EQ(1U, index); |
188 | 188 |
189 EXPECT_EQ(SB_THREAT_TYPE_URL_UNWANTED, | 189 EXPECT_EQ(SB_THREAT_TYPE_URL_UNWANTED, |
190 SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( | 190 LocalSafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
191 kUnwantedUrl, full_hashes, &index)); | 191 kUnwantedUrl, full_hashes, &index)); |
192 EXPECT_EQ(2U, index); | 192 EXPECT_EQ(2U, index); |
193 | 193 |
194 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, | 194 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
195 SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( | 195 LocalSafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
196 kUnwantedAndMalwareUrl, full_hashes, &index)); | 196 kUnwantedAndMalwareUrl, full_hashes, &index)); |
197 EXPECT_EQ(3U, index); | 197 EXPECT_EQ(3U, index); |
198 | 198 |
199 index = kArbitraryValue; | 199 index = kArbitraryValue; |
200 EXPECT_EQ(SB_THREAT_TYPE_SAFE, | 200 EXPECT_EQ(SB_THREAT_TYPE_SAFE, |
201 SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( | 201 LocalSafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
202 kSafeUrl, full_hashes, &index)); | 202 kSafeUrl, full_hashes, &index)); |
203 EXPECT_EQ(kArbitraryValue, index); | 203 EXPECT_EQ(kArbitraryValue, index); |
204 } | 204 } |
205 | 205 |
206 TEST_F(SafeBrowsingDatabaseManagerTest, ServiceStopWithPendingChecks) { | 206 TEST_F(SafeBrowsingDatabaseManagerTest, ServiceStopWithPendingChecks) { |
207 scoped_refptr<SafeBrowsingService> sb_service( | 207 scoped_refptr<SafeBrowsingService> sb_service( |
208 SafeBrowsingService::CreateSafeBrowsingService()); | 208 SafeBrowsingService::CreateSafeBrowsingService()); |
209 scoped_refptr<SafeBrowsingDatabaseManager> db_manager( | 209 scoped_refptr<LocalSafeBrowsingDatabaseManager> db_manager( |
210 new SafeBrowsingDatabaseManager(sb_service)); | 210 new LocalSafeBrowsingDatabaseManager(sb_service)); |
211 TestClient client; | 211 TestClient client; |
212 | 212 |
213 // Start the service and flush tasks to ensure database is made available. | 213 // Start the service and flush tasks to ensure database is made available. |
214 db_manager->StartOnIOThread(); | 214 db_manager->StartOnIOThread(); |
215 content::RunAllBlockingPoolTasksUntilIdle(); | 215 content::RunAllBlockingPoolTasksUntilIdle(); |
216 base::RunLoop().RunUntilIdle(); | 216 base::RunLoop().RunUntilIdle(); |
217 EXPECT_TRUE(db_manager->DatabaseAvailable()); | 217 EXPECT_TRUE(db_manager->DatabaseAvailable()); |
218 | 218 |
219 // Start an extension check operation, which is done asynchronously. | 219 // Start an extension check operation, which is done asynchronously. |
220 std::set<std::string> extension_ids; | 220 std::set<std::string> extension_ids; |
221 extension_ids.insert("testtesttesttesttesttesttesttest"); | 221 extension_ids.insert("testtesttesttesttesttesttesttest"); |
222 db_manager->CheckExtensionIDs(extension_ids, &client); | 222 db_manager->CheckExtensionIDs(extension_ids, &client); |
223 | 223 |
224 // Stop the service without first flushing above tasks. | 224 // Stop the service without first flushing above tasks. |
225 db_manager->StopOnIOThread(false); | 225 db_manager->StopOnIOThread(false); |
226 | 226 |
227 // Now run posted tasks, whish should include the extension check which has | 227 // Now run posted tasks, whish should include the extension check which has |
228 // been posted to the safe browsing task runner. This should not crash. | 228 // been posted to the safe browsing task runner. This should not crash. |
229 content::RunAllBlockingPoolTasksUntilIdle(); | 229 content::RunAllBlockingPoolTasksUntilIdle(); |
230 base::RunLoop().RunUntilIdle(); | 230 base::RunLoop().RunUntilIdle(); |
231 } | 231 } |
OLD | NEW |