Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: chrome/renderer/safe_browsing/phishing_dom_feature_extractor_browsertest.cc

Issue 2829163004: Remove uses of base::hash_map from //chrome (Closed)
Patch Set: Downloads back Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_dom_feature_extractor.h" 5 #include "chrome/renderer/safe_browsing/phishing_dom_feature_extractor.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <unordered_map>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/callback.h" 11 #include "base/callback.h"
11 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
12 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
13 #include "base/threading/thread_task_runner_handle.h" 14 #include "base/threading/thread_task_runner_handle.h"
14 #include "base/time/time.h" 15 #include "base/time/time.h"
15 #include "chrome/renderer/chrome_content_renderer_client.h" 16 #include "chrome/renderer/chrome_content_renderer_client.h"
16 #include "chrome/renderer/safe_browsing/features.h" 17 #include "chrome/renderer/safe_browsing/features.h"
17 #include "chrome/renderer/safe_browsing/mock_feature_extractor_clock.h" 18 #include "chrome/renderer/safe_browsing/mock_feature_extractor_clock.h"
(...skipping 25 matching lines...) Expand all
43 // CompleteURL() functions. This is to work around the fact that 44 // CompleteURL() functions. This is to work around the fact that
44 // ChromeRenderViewTest object does not know where the html content is hosted. 45 // ChromeRenderViewTest object does not know where the html content is hosted.
45 class TestPhishingDOMFeatureExtractor : public PhishingDOMFeatureExtractor { 46 class TestPhishingDOMFeatureExtractor : public PhishingDOMFeatureExtractor {
46 public: 47 public:
47 explicit TestPhishingDOMFeatureExtractor(FeatureExtractorClock* clock) 48 explicit TestPhishingDOMFeatureExtractor(FeatureExtractorClock* clock)
48 : PhishingDOMFeatureExtractor(clock) {} 49 : PhishingDOMFeatureExtractor(clock) {}
49 50
50 void SetDocumentDomain(std::string domain) { base_domain_ = domain; } 51 void SetDocumentDomain(std::string domain) { base_domain_ = domain; }
51 52
52 void SetURLToFrameDomainCheckingMap( 53 void SetURLToFrameDomainCheckingMap(
53 const base::hash_map<std::string, std::string>& checking_map) { 54 const std::unordered_map<std::string, std::string>& checking_map) {
54 url_to_frame_domain_map_ = checking_map; 55 url_to_frame_domain_map_ = checking_map;
55 } 56 }
56 57
57 void Reset() { 58 void Reset() {
58 base_domain_.clear(); 59 base_domain_.clear();
59 url_to_frame_domain_map_.clear(); 60 url_to_frame_domain_map_.clear();
60 } 61 }
61 62
62 private: 63 private:
63 // LoadHTML() function in RenderViewTest only loads html as data, 64 // LoadHTML() function in RenderViewTest only loads html as data,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 return blink::WebURL(full_url); 116 return blink::WebURL(full_url);
116 } 117 }
117 118
118 // If there is only main frame, we use base_domain_ to track where 119 // If there is only main frame, we use base_domain_ to track where
119 // the html content is hosted. 120 // the html content is hosted.
120 std::string base_domain_; 121 std::string base_domain_;
121 122
122 // If html contains multiple frame/iframe, we track domain of each frame by 123 // If html contains multiple frame/iframe, we track domain of each frame by
123 // using this map, where keys are the urls mentioned in the html content, 124 // using this map, where keys are the urls mentioned in the html content,
124 // values are the domains of the corresponding frames. 125 // values are the domains of the corresponding frames.
125 base::hash_map<std::string, std::string> url_to_frame_domain_map_; 126 std::unordered_map<std::string, std::string> url_to_frame_domain_map_;
126 }; 127 };
127 128
128 class TestChromeContentRendererClient : public ChromeContentRendererClient { 129 class TestChromeContentRendererClient : public ChromeContentRendererClient {
129 public: 130 public:
130 TestChromeContentRendererClient() {} 131 TestChromeContentRendererClient() {}
131 ~TestChromeContentRendererClient() override {} 132 ~TestChromeContentRendererClient() override {}
132 // Since visited_link_slave_ in ChromeContentRenderClient never get initiated, 133 // Since visited_link_slave_ in ChromeContentRenderClient never get initiated,
133 // overrides VisitedLinkedHash() function to prevent crashing. 134 // overrides VisitedLinkedHash() function to prevent crashing.
134 unsigned long long VisitedLinkHash(const char* canonical_url, 135 unsigned long long VisitedLinkHash(const char* canonical_url,
135 size_t length) override { 136 size_t length) override {
(...skipping 11 matching lines...) Expand all
147 bool GetSuccess() { return success_; } 148 bool GetSuccess() { return success_; }
148 void ResetTest() { 149 void ResetTest() {
149 success_ = false; 150 success_ = false;
150 message_loop_ = new content::MessageLoopRunner; 151 message_loop_ = new content::MessageLoopRunner;
151 extractor_->Reset(); 152 extractor_->Reset();
152 } 153 }
153 154
154 void ExtractFeaturesAcrossFrames( 155 void ExtractFeaturesAcrossFrames(
155 const std::string& html_content, 156 const std::string& html_content,
156 FeatureMap* features, 157 FeatureMap* features,
157 const base::hash_map<std::string, std::string>& url_frame_domain_map) { 158 const std::unordered_map<std::string, std::string>&
159 url_frame_domain_map) {
158 extractor_->SetURLToFrameDomainCheckingMap(url_frame_domain_map); 160 extractor_->SetURLToFrameDomainCheckingMap(url_frame_domain_map);
159 LoadHTML(html_content.c_str()); 161 LoadHTML(html_content.c_str());
160 162
161 extractor_->ExtractFeatures( 163 extractor_->ExtractFeatures(
162 GetMainFrame()->GetDocument(), features, 164 GetMainFrame()->GetDocument(), features,
163 base::Bind(&PhishingDOMFeatureExtractorTest::AnotherExtractionDone, 165 base::Bind(&PhishingDOMFeatureExtractorTest::AnotherExtractionDone,
164 weak_factory_.GetWeakPtr())); 166 weak_factory_.GetWeakPtr()));
165 message_loop_->Run(); 167 message_loop_->Run();
166 } 168 }
167 169
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 // A page with nested iframes. 370 // A page with nested iframes.
369 // html 371 // html
370 // iframe2 / \ iframe1 372 // iframe2 / \ iframe1
371 // \ iframe3 373 // \ iframe3
372 TEST_F(PhishingDOMFeatureExtractorTest, SubFrames) { 374 TEST_F(PhishingDOMFeatureExtractorTest, SubFrames) {
373 // This test doesn't exercise the extraction timing. 375 // This test doesn't exercise the extraction timing.
374 // Test that features are aggregated across all frames. 376 // Test that features are aggregated across all frames.
375 EXPECT_CALL(clock_, Now()).WillRepeatedly(Return(base::TimeTicks::Now())); 377 EXPECT_CALL(clock_, Now()).WillRepeatedly(Return(base::TimeTicks::Now()));
376 378
377 const char urlprefix[] = "data:text/html;charset=utf-8,"; 379 const char urlprefix[] = "data:text/html;charset=utf-8,";
378 base::hash_map<std::string, std::string> url_iframe_map; 380 std::unordered_map<std::string, std::string> url_iframe_map;
379 std::string iframe1_nested_html( 381 std::string iframe1_nested_html(
380 "<html><body><input type=password>" 382 "<html><body><input type=password>"
381 "<a href=\"https://host3.com/submit\">link</a>" 383 "<a href=\"https://host3.com/submit\">link</a>"
382 "<a href=\"relative\">link</a>" 384 "<a href=\"relative\">link</a>"
383 "</body></html>"); 385 "</body></html>");
384 GURL iframe1_nested_url(urlprefix + iframe1_nested_html); 386 GURL iframe1_nested_url(urlprefix + iframe1_nested_html);
385 // iframe1_nested is on host1.com. 387 // iframe1_nested is on host1.com.
386 url_iframe_map["https://host3.com/submit"] = "host1.com"; 388 url_iframe_map["https://host3.com/submit"] = "host1.com";
387 url_iframe_map["relative"] = "host1.com"; 389 url_iframe_map["relative"] = "host1.com";
388 390
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 "<html><head></head><body>" 571 "<html><head></head><body>"
570 "<iframe src=\"" + 572 "<iframe src=\"" +
571 net::EscapeForHTML(iframe1_url.spec()) + 573 net::EscapeForHTML(iframe1_url.spec()) +
572 "\" id=\"frame1\"></iframe>" 574 "\" id=\"frame1\"></iframe>"
573 "<form></form></body></html>"); 575 "<form></form></body></html>");
574 ExtractFeatures("host.com", html, &features); 576 ExtractFeatures("host.com", html, &features);
575 ExpectFeatureMapsAreEqual(features, expected_features); 577 ExpectFeatureMapsAreEqual(features, expected_features);
576 } 578 }
577 579
578 } // namespace safe_browsing 580 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/renderer/safe_browsing/phishing_classifier.cc ('k') | chrome/renderer/safe_browsing/scorer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698