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 // Note that although this is not a "browser" test, it runs as part of | 5 // Note that although this is not a "browser" test, it runs as part of |
6 // browser_tests. This is because WebKit does not work properly if it is | 6 // browser_tests. This is because WebKit does not work properly if it is |
7 // shutdown and re-initialized. Since browser_tests runs each test in a | 7 // shutdown and re-initialized. Since browser_tests runs each test in a |
8 // new process, this avoids the problem. | 8 // new process, this avoids the problem. |
9 | 9 |
10 #include "chrome/renderer/safe_browsing/phishing_dom_feature_extractor.h" | 10 #include "chrome/renderer/safe_browsing/phishing_dom_feature_extractor.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 expected_features.AddBooleanFeature(features::kPageHasForms); | 198 expected_features.AddBooleanFeature(features::kPageHasForms); |
199 expected_features.AddRealFeature(features::kPageActionOtherDomainFreq, 0.25); | 199 expected_features.AddRealFeature(features::kPageActionOtherDomainFreq, 0.25); |
200 expected_features.AddBooleanFeature(features::kPageHasTextInputs); | 200 expected_features.AddBooleanFeature(features::kPageHasTextInputs); |
201 expected_features.AddBooleanFeature(features::kPageHasCheckInputs); | 201 expected_features.AddBooleanFeature(features::kPageHasCheckInputs); |
202 expected_features.AddBooleanFeature(features::kPageActionURL + | 202 expected_features.AddBooleanFeature(features::kPageActionURL + |
203 std::string("http://cgi.host.com/submit")); | 203 std::string("http://cgi.host.com/submit")); |
204 expected_features.AddBooleanFeature(features::kPageActionURL + | 204 expected_features.AddBooleanFeature(features::kPageActionURL + |
205 std::string("http://other.com/")); | 205 std::string("http://other.com/")); |
206 expected_features.AddBooleanFeature(features::kPageActionURL + | 206 expected_features.AddBooleanFeature(features::kPageActionURL + |
207 std::string("http://host.com:") + | 207 std::string("http://host.com:") + |
208 base::IntToString(embedded_test_server_->port()) + | 208 base::UintToString(embedded_test_server_->port()) + |
209 std::string("/query")); | 209 std::string("/query")); |
210 | 210 |
211 FeatureMap features; | 211 FeatureMap features; |
212 LoadHtml( | 212 LoadHtml( |
213 "host.com", | 213 "host.com", |
214 "<html><head><body>" | 214 "<html><head><body>" |
215 "<form action=\"query\"><input type=text><input type=checkbox></form>" | 215 "<form action=\"query\"><input type=text><input type=checkbox></form>" |
216 "<form action=\"http://cgi.host.com/submit\"></form>" | 216 "<form action=\"http://cgi.host.com/submit\"></form>" |
217 "<form action=\"http://other.com/\"></form>" | 217 "<form action=\"http://other.com/\"></form>" |
218 "<form action=\"query\"></form>" | 218 "<form action=\"query\"></form>" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 | 282 |
283 net::SpawnedTestServer https_server( | 283 net::SpawnedTestServer https_server( |
284 net::SpawnedTestServer::TYPE_HTTPS, | 284 net::SpawnedTestServer::TYPE_HTTPS, |
285 net::SpawnedTestServer::kLocalhost, | 285 net::SpawnedTestServer::kLocalhost, |
286 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); | 286 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); |
287 ASSERT_TRUE(https_server.Start()); | 287 ASSERT_TRUE(https_server.Start()); |
288 | 288 |
289 // The PhishingDOMFeatureExtractor depends on URLs being domains and not IPs, | 289 // The PhishingDOMFeatureExtractor depends on URLs being domains and not IPs, |
290 // so use a domain. | 290 // so use a domain. |
291 std::string url_str = "https://host.com:"; | 291 std::string url_str = "https://host.com:"; |
292 url_str += base::IntToString(https_server.host_port_pair().port()); | 292 url_str += base::UintToString(https_server.host_port_pair().port()); |
293 url_str += "/files/safe_browsing/secure_link_features.html"; | 293 url_str += "/files/safe_browsing/secure_link_features.html"; |
294 ui_test_utils::NavigateToURL(browser(), GURL(url_str)); | 294 ui_test_utils::NavigateToURL(browser(), GURL(url_str)); |
295 | 295 |
296 // Click through the certificate error interstitial. | 296 // Click through the certificate error interstitial. |
297 content::InterstitialPage* interstitial_page = | 297 content::InterstitialPage* interstitial_page = |
298 GetWebContents()->GetInterstitialPage(); | 298 GetWebContents()->GetInterstitialPage(); |
299 interstitial_page->Proceed(); | 299 interstitial_page->Proceed(); |
300 content::WaitForLoadStop(GetWebContents()); | 300 content::WaitForLoadStop(GetWebContents()); |
301 | 301 |
302 features.Clear(); | 302 features.Clear(); |
(...skipping 30 matching lines...) Expand all Loading... |
333 features.Clear(); | 333 features.Clear(); |
334 net::SpawnedTestServer https_server( | 334 net::SpawnedTestServer https_server( |
335 net::SpawnedTestServer::TYPE_HTTPS, | 335 net::SpawnedTestServer::TYPE_HTTPS, |
336 net::SpawnedTestServer::kLocalhost, | 336 net::SpawnedTestServer::kLocalhost, |
337 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); | 337 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); |
338 ASSERT_TRUE(https_server.Start()); | 338 ASSERT_TRUE(https_server.Start()); |
339 | 339 |
340 // The PhishingDOMFeatureExtractor depends on URLs being domains and not IPs, | 340 // The PhishingDOMFeatureExtractor depends on URLs being domains and not IPs, |
341 // so use a domain. | 341 // so use a domain. |
342 std::string url_str = "https://host.com:"; | 342 std::string url_str = "https://host.com:"; |
343 url_str += base::IntToString(https_server.host_port_pair().port()); | 343 url_str += base::UintToString(https_server.host_port_pair().port()); |
344 url_str += "/files/safe_browsing/secure_script_and_image.html"; | 344 url_str += "/files/safe_browsing/secure_script_and_image.html"; |
345 ui_test_utils::NavigateToURL(browser(), GURL(url_str)); | 345 ui_test_utils::NavigateToURL(browser(), GURL(url_str)); |
346 | 346 |
347 // Click through the certificate error interstitial. | 347 // Click through the certificate error interstitial. |
348 content::InterstitialPage* interstitial_page = | 348 content::InterstitialPage* interstitial_page = |
349 GetWebContents()->GetInterstitialPage(); | 349 GetWebContents()->GetInterstitialPage(); |
350 interstitial_page->Proceed(); | 350 interstitial_page->Proceed(); |
351 content::WaitForLoadStop(GetWebContents()); | 351 content::WaitForLoadStop(GetWebContents()); |
352 | 352 |
353 ASSERT_TRUE(ExtractFeatures(&features)); | 353 ASSERT_TRUE(ExtractFeatures(&features)); |
354 ExpectFeatureMapsAreEqual(features, expected_features); | 354 ExpectFeatureMapsAreEqual(features, expected_features); |
355 } | 355 } |
356 | 356 |
357 IN_PROC_BROWSER_TEST_F(PhishingDOMFeatureExtractorTest, SubFrames) { | 357 IN_PROC_BROWSER_TEST_F(PhishingDOMFeatureExtractorTest, SubFrames) { |
358 // This test doesn't exercise the extraction timing. | 358 // This test doesn't exercise the extraction timing. |
359 EXPECT_CALL(clock_, Now()).WillRepeatedly(Return(base::TimeTicks::Now())); | 359 EXPECT_CALL(clock_, Now()).WillRepeatedly(Return(base::TimeTicks::Now())); |
360 | 360 |
361 // Test that features are aggregated across all frames. | 361 // Test that features are aggregated across all frames. |
362 | 362 |
363 std::string port = base::IntToString(embedded_test_server_->port()); | 363 std::string port = base::UintToString(embedded_test_server_->port()); |
364 responses_[GetURL("host2.com", "").spec()] = | 364 responses_[GetURL("host2.com", "").spec()] = |
365 "<html><head><script></script><body>" | 365 "<html><head><script></script><body>" |
366 "<form action=\"http://host4.com/\"><input type=checkbox></form>" | 366 "<form action=\"http://host4.com/\"><input type=checkbox></form>" |
367 "<form action=\"http://host2.com/submit\"></form>" | 367 "<form action=\"http://host2.com/submit\"></form>" |
368 "<a href=\"http://www.host2.com/home\">link</a>" | 368 "<a href=\"http://www.host2.com/home\">link</a>" |
369 "<iframe src=\"nested.html\"></iframe>" | 369 "<iframe src=\"nested.html\"></iframe>" |
370 "<body></html>"; | 370 "<body></html>"; |
371 | 371 |
372 responses_[GetURL("host2.com", "nested.html").spec()] = | 372 responses_[GetURL("host2.com", "nested.html").spec()] = |
373 "<html><body><input type=password>" | 373 "<html><body><input type=password>" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 // Time check after the last 10 elements. | 467 // Time check after the last 10 elements. |
468 .WillOnce(Return(now + base::TimeDelta::FromMilliseconds(54))) | 468 .WillOnce(Return(now + base::TimeDelta::FromMilliseconds(54))) |
469 // A final time check for the histograms. | 469 // A final time check for the histograms. |
470 .WillOnce(Return(now + base::TimeDelta::FromMilliseconds(56))); | 470 .WillOnce(Return(now + base::TimeDelta::FromMilliseconds(56))); |
471 | 471 |
472 FeatureMap expected_features; | 472 FeatureMap expected_features; |
473 expected_features.AddBooleanFeature(features::kPageHasForms); | 473 expected_features.AddBooleanFeature(features::kPageHasForms); |
474 expected_features.AddRealFeature(features::kPageActionOtherDomainFreq, 0.5); | 474 expected_features.AddRealFeature(features::kPageActionOtherDomainFreq, 0.5); |
475 expected_features.AddBooleanFeature(features::kPageActionURL + | 475 expected_features.AddBooleanFeature(features::kPageActionURL + |
476 std::string("http://host.com:") + | 476 std::string("http://host.com:") + |
477 base::IntToString(embedded_test_server_->port()) + | 477 base::UintToString(embedded_test_server_->port()) + |
478 std::string("/ondomain")); | 478 std::string("/ondomain")); |
479 expected_features.AddBooleanFeature(features::kPageActionURL + | 479 expected_features.AddBooleanFeature(features::kPageActionURL + |
480 std::string("http://host2.com/")); | 480 std::string("http://host2.com/")); |
481 | 481 |
482 FeatureMap features; | 482 FeatureMap features; |
483 LoadHtml("host.com", response); | 483 LoadHtml("host.com", response); |
484 ASSERT_TRUE(ExtractFeatures(&features)); | 484 ASSERT_TRUE(ExtractFeatures(&features)); |
485 ExpectFeatureMapsAreEqual(features, expected_features); | 485 ExpectFeatureMapsAreEqual(features, expected_features); |
486 // Make sure none of the mock expectations carry over to the next test. | 486 // Make sure none of the mock expectations carry over to the next test. |
487 ::testing::Mock::VerifyAndClearExpectations(&clock_); | 487 ::testing::Mock::VerifyAndClearExpectations(&clock_); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 LoadHtml( | 546 LoadHtml( |
547 "host.com", | 547 "host.com", |
548 "<html><head></head><body>" | 548 "<html><head></head><body>" |
549 "<iframe src=\"frame.html\" id=\"frame1\"></iframe>" | 549 "<iframe src=\"frame.html\" id=\"frame1\"></iframe>" |
550 "<form></form></body></html>"); | 550 "<form></form></body></html>"); |
551 ASSERT_TRUE(ExtractFeatures(&features)); | 551 ASSERT_TRUE(ExtractFeatures(&features)); |
552 ExpectFeatureMapsAreEqual(features, expected_features); | 552 ExpectFeatureMapsAreEqual(features, expected_features); |
553 } | 553 } |
554 | 554 |
555 } // namespace safe_browsing | 555 } // namespace safe_browsing |
OLD | NEW |