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/renderer/safe_browsing/phishing_term_feature_extractor.h" | 5 #include "chrome/renderer/safe_browsing/phishing_term_feature_extractor.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 // Test with empty page text. | 250 // Test with empty page text. |
251 page_text = base::string16(); | 251 page_text = base::string16(); |
252 expected_features.Clear(); | 252 expected_features.Clear(); |
253 expected_shingle_hashes.clear(); | 253 expected_shingle_hashes.clear(); |
254 features.Clear(); | 254 features.Clear(); |
255 shingle_hashes.clear(); | 255 shingle_hashes.clear(); |
256 ASSERT_TRUE(ExtractFeatures(&page_text, &features, &shingle_hashes)); | 256 ASSERT_TRUE(ExtractFeatures(&page_text, &features, &shingle_hashes)); |
257 ExpectFeatureMapsAreEqual(features, expected_features); | 257 ExpectFeatureMapsAreEqual(features, expected_features); |
258 EXPECT_THAT(expected_shingle_hashes, testing::ContainerEq(shingle_hashes)); | 258 EXPECT_THAT(expected_shingle_hashes, testing::ContainerEq(shingle_hashes)); |
259 | 259 |
| 260 #if !defined(OS_ANDROID) |
| 261 // The test code is disabled due to http://crbug.com/392234 |
| 262 // The client-side detection feature is not enabled on Android yet. |
| 263 // If we decided to enable the feature, we need to fix the bug first. |
| 264 |
260 // Chinese translation of the phrase "hello goodbye hello goodbye". This tests | 265 // Chinese translation of the phrase "hello goodbye hello goodbye". This tests |
261 // that we can correctly separate terms in languages that don't use spaces. | 266 // that we can correctly separate terms in languages that don't use spaces. |
262 page_text = | 267 page_text = |
263 base::UTF8ToUTF16("\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x86\x8d\xe8\xa7\x81" | 268 base::UTF8ToUTF16("\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x86\x8d\xe8\xa7\x81" |
264 "\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x86\x8d\xe8\xa7\x81"); | 269 "\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x86\x8d\xe8\xa7\x81"); |
265 expected_features.Clear(); | 270 expected_features.Clear(); |
266 expected_features.AddBooleanFeature( | 271 expected_features.AddBooleanFeature( |
267 features::kPageTerm + std::string("\xe4\xbd\xa0\xe5\xa5\xbd")); | 272 features::kPageTerm + std::string("\xe4\xbd\xa0\xe5\xa5\xbd")); |
268 expected_features.AddBooleanFeature( | 273 expected_features.AddBooleanFeature( |
269 features::kPageTerm + std::string("\xe5\x86\x8d\xe8\xa7\x81")); | 274 features::kPageTerm + std::string("\xe5\x86\x8d\xe8\xa7\x81")); |
270 expected_shingle_hashes.clear(); | 275 expected_shingle_hashes.clear(); |
271 expected_shingle_hashes.insert(MurmurHash3String( | 276 expected_shingle_hashes.insert(MurmurHash3String( |
272 "\xe4\xbd\xa0\xe5\xa5\xbd \xe5\x86\x8d\xe8\xa7\x81 " | 277 "\xe4\xbd\xa0\xe5\xa5\xbd \xe5\x86\x8d\xe8\xa7\x81 " |
273 "\xe4\xbd\xa0\xe5\xa5\xbd \xe5\x86\x8d\xe8\xa7\x81 ", kMurmurHash3Seed)); | 278 "\xe4\xbd\xa0\xe5\xa5\xbd \xe5\x86\x8d\xe8\xa7\x81 ", kMurmurHash3Seed)); |
274 | 279 |
275 features.Clear(); | 280 features.Clear(); |
276 shingle_hashes.clear(); | 281 shingle_hashes.clear(); |
277 ASSERT_TRUE(ExtractFeatures(&page_text, &features, &shingle_hashes)); | 282 ASSERT_TRUE(ExtractFeatures(&page_text, &features, &shingle_hashes)); |
278 ExpectFeatureMapsAreEqual(features, expected_features); | 283 ExpectFeatureMapsAreEqual(features, expected_features); |
279 EXPECT_THAT(expected_shingle_hashes, testing::ContainerEq(shingle_hashes)); | 284 EXPECT_THAT(expected_shingle_hashes, testing::ContainerEq(shingle_hashes)); |
| 285 #endif |
280 } | 286 } |
281 | 287 |
282 TEST_F(PhishingTermFeatureExtractorTest, Continuation) { | 288 TEST_F(PhishingTermFeatureExtractorTest, Continuation) { |
283 // For this test, we'll cause the feature extraction to run multiple | 289 // For this test, we'll cause the feature extraction to run multiple |
284 // iterations by incrementing the clock. | 290 // iterations by incrementing the clock. |
285 ResetExtractor(200 /* max shingles per page */); | 291 ResetExtractor(200 /* max shingles per page */); |
286 | 292 |
287 // This page has a total of 30 words. For the features to be computed | 293 // This page has a total of 30 words. For the features to be computed |
288 // correctly, the extractor has to process the entire string of text. | 294 // correctly, the extractor has to process the entire string of text. |
289 base::string16 page_text(ASCIIToUTF16("one ")); | 295 base::string16 page_text(ASCIIToUTF16("one ")); |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 // Now extract normally and make sure nothing breaks. | 455 // Now extract normally and make sure nothing breaks. |
450 EXPECT_TRUE(ExtractFeatures(page_text.get(), &features, &shingle_hashes)); | 456 EXPECT_TRUE(ExtractFeatures(page_text.get(), &features, &shingle_hashes)); |
451 | 457 |
452 FeatureMap expected_features; | 458 FeatureMap expected_features; |
453 expected_features.AddBooleanFeature(features::kPageTerm + | 459 expected_features.AddBooleanFeature(features::kPageTerm + |
454 std::string("multi word test")); | 460 std::string("multi word test")); |
455 ExpectFeatureMapsAreEqual(features, expected_features); | 461 ExpectFeatureMapsAreEqual(features, expected_features); |
456 } | 462 } |
457 | 463 |
458 } // namespace safe_browsing | 464 } // namespace safe_browsing |
OLD | NEW |