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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc

Issue 2302913003: Add SafeBrowsingNavigationObserver to listen to navigation events (Closed)
Patch Set: disable DownloadViaHTML5FileApi due to flackiness Created 4 years, 3 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
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h"
5
6 #include "base/strings/stringprintf.h"
7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/download/download_prefs.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/sessions/session_tab_helper.h"
11 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/tabs/tab_strip_model.h"
13 #include "chrome/common/pref_names.h"
14 #include "chrome/test/base/in_process_browser_test.h"
15 #include "chrome/test/base/ui_test_utils.h"
16 #include "components/prefs/pref_service.h"
17 #include "content/public/browser/browser_context.h"
18 #include "content/public/browser/download_item.h"
19 #include "content/public/browser/download_manager.h"
20 #include "content/public/browser/notification_service.h"
21 #include "content/public/test/browser_test_utils.h"
22 #include "content/public/test/test_utils.h"
23 #include "net/dns/mock_host_resolver.h"
24 #include "net/test/embedded_test_server/embedded_test_server.h"
25 #include "url/gurl.h"
26 #include "url/url_canon.h"
27
28 namespace safe_browsing {
29
30 const char kSingleFrameTestURL[] =
31 "/safe_browsing/download_protection/navigation_observer/"
32 "navigation_observer_tests.html";
33 const char kMultiFrameTestURL[] =
34 "/safe_browsing/download_protection/navigation_observer/"
35 "navigation_observer_multi_frame_tests.html";
36 const char kRedirectURL[] =
37 "/safe_browsing/download_protection/navigation_observer/redirect.html";
38 const char kDownloadDataURL[] =
39 "data:application/octet-stream;base64,a2poYWxrc2hkbGtoYXNka2xoYXNsa2RoYWxra"
40 "GtoYWxza2hka2xzamFoZGxramhhc2xka2hhc2xrZGgKYXNrZGpoa2FzZGpoYWtzaGRrYXNoZGt"
41 "oYXNrZGhhc2tkaGthc2hka2Foc2RraGFrc2hka2FzaGRraGFzCmFza2pkaGFrc2hkbSxjbmtza"
42 "mFoZGtoYXNrZGhhc2tka2hrYXNkCjg3MzQ2ODEyNzQ2OGtqc2hka2FoZHNrZGhraApha3NqZGt"
43 "hc2Roa3NkaGthc2hka2FzaGtkaAohISomXkAqJl4qYWhpZGFzeWRpeWlhc1xcb1wKa2Fqc2Roa"
44 "2FzaGRrYXNoZGsKYWtzamRoc2tkaAplbmQK";
45 const char kIframeDirectDownloadURL[] =
46 "/safe_browsing/download_protection/navigation_observer/iframe.html";
47 const char kIframeRetargetingURL[] =
48 "/safe_browsing/download_protection/navigation_observer/"
49 "iframe_retargeting.html";
50 const char kDownloadItemURL[] = "/safe_browsing/download_protection/signed.exe";
51
52 class SBNavigationObserverBrowserTest : public InProcessBrowserTest {
53 public:
54 SBNavigationObserverBrowserTest() {}
55
56 void SetUpOnMainThread() override {
57 ASSERT_TRUE(embedded_test_server()->Start());
58 host_resolver()->AddRule("*", "127.0.0.1");
59 // Navigate to test page.
60 ui_test_utils::NavigateToURL(
61 browser(), embedded_test_server()->GetURL(kSingleFrameTestURL));
62 observer_ = new SafeBrowsingNavigationObserver();
63 ASSERT_TRUE(observer_);
64 ASSERT_TRUE(InitialSetup());
65 }
66
67 bool InitialSetup() {
68 if (!browser())
69 return false;
70
71 if (!downloads_directory_.CreateUniqueTempDir())
72 return false;
73
74 // Set up default download path.
75 browser()->profile()->GetPrefs()->SetFilePath(
76 prefs::kDownloadDefaultDirectory, downloads_directory_.path());
77 browser()->profile()->GetPrefs()->SetFilePath(
78 prefs::kSaveFileDefaultDirectory, downloads_directory_.path());
79 browser()->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload,
80 false);
81 content::DownloadManager* manager =
82 content::BrowserContext::GetDownloadManager(browser()->profile());
83 DownloadPrefs::FromDownloadManager(manager)->ResetAutoOpen();
84 manager->RemoveAllDownloads();
85
86 return true;
87 }
88
89 void TearDownOnMainThread() override { delete observer_; }
90
91 // Most test cases will trigger downloads, though we don't really care if
92 // download completed or not. So we cancel downloads as soon as we record
93 // all the navigation event we need.
94 void CancelDownloads() {
95 std::vector<content::DownloadItem*> download_items;
96 content::DownloadManager* manager =
97 content::BrowserContext::GetDownloadManager(browser()->profile());
98 manager->GetAllDownloads(&download_items);
99 for (auto item : download_items)
100 item->Cancel(true);
101 }
102
103 // This function needs javascript support, only works on
104 // navigation_observer_tests.html and
105 // navigation_observer_multi_frame_tests.html.
106 void ClickTestLink(const char* test_name, int navigation_count) {
107 content::WebContents* main_web_contents =
108 browser()->tab_strip_model()->GetActiveWebContents();
109 std::string script = base::StringPrintf("clickLink('%s')", test_name);
110 EXPECT_TRUE(content::ExecuteScript(main_web_contents, script));
111 // Wait until all the navigation completes.
112 for (int i = 0; i < navigation_count; i++) {
113 content::WebContents* active_contents =
114 browser()->tab_strip_model()->GetActiveWebContents();
115 content::WaitForLoadStopWithoutSuccessCheck(active_contents);
116 }
117 CancelDownloads();
118 }
119
120 void VerifyNavigationEvent(
121 const GURL& expected_source_url,
122 const GURL& expected_target_url,
123 const GURL& expected_main_frame_url,
124 bool expected_is_user_initiated,
125 bool expected_has_committed,
126 bool expected_is_server_redirect,
127 bool expected_is_finished,
128 const GURL& expected_redirect_url,
129 const SafeBrowsingNavigationObserver::NavigationEvent& actual_nav_event) {
130 EXPECT_EQ(expected_source_url, actual_nav_event.source_url);
131 EXPECT_EQ(expected_target_url, actual_nav_event.target_url);
132 EXPECT_EQ(expected_main_frame_url, actual_nav_event.main_frame_url);
133 EXPECT_EQ(expected_is_user_initiated, actual_nav_event.is_user_initiated);
134 EXPECT_EQ(expected_has_committed, actual_nav_event.has_committed);
135 EXPECT_EQ(expected_is_server_redirect, actual_nav_event.is_server_redirect);
136 EXPECT_EQ(expected_is_finished, actual_nav_event.is_finished);
137 EXPECT_EQ(expected_redirect_url, actual_nav_event.server_redirect_url);
138 }
139
140 protected:
141 SafeBrowsingNavigationObserver* observer_;
142
143 private:
144 base::ScopedTempDir downloads_directory_;
145 };
146
147 // Click on a link and start download on the same page.
148 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
149 ClickTestLink("direct_download", 1);
150 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
151 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
152 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
153 observer_->navigation_map();
154 ASSERT_TRUE(nav_map);
155 ASSERT_EQ(std::size_t(1), nav_map->size());
156 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
157 VerifyNavigationEvent(initial_url, // source_url
158 download_url, // target_url
159 initial_url, // source's main_frame_url
160 false, // is_user_initiated,
161 false, // has_committed
162 false, // is_server_redirect
163 true, // is_finished
164 GURL(), // redirect_url
165 nav_map->at(download_url).at(0));
166 }
167
168 // Click on a link with rel="noreferrer" attribute, and start download on the
169 // same page.
170 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
171 DirectDownloadNoReferrer) {
172 ClickTestLink("direct_download_noreferrer", 1);
173 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
174 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
175 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
176 observer_->navigation_map();
177 ASSERT_TRUE(nav_map);
178 ASSERT_EQ(std::size_t(1), nav_map->size());
179 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
180 VerifyNavigationEvent(initial_url, download_url, initial_url, false, false,
181 false, true, GURL(), nav_map->at(download_url).at(0));
182 }
183
184 // Click on a link which navigates to a page then redirect to download using
185 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
186 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
187 SingleMetaRefreshRedirect) {
188 ClickTestLink("single_meta_refresh_redirect", 2);
189 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
190 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
191 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
192 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
193 observer_->navigation_map();
194 ASSERT_TRUE(nav_map);
195 ASSERT_EQ(std::size_t(2), nav_map->size());
196 ASSERT_EQ(std::size_t(1), nav_map->at(redirect_url).size());
197 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
198 VerifyNavigationEvent(initial_url, redirect_url, initial_url, true, true,
199 false, true, GURL(), nav_map->at(redirect_url).at(0));
200 VerifyNavigationEvent(redirect_url, download_url, redirect_url, false, false,
201 false, true, GURL(), nav_map->at(download_url).at(0));
202 }
203
204 // Click on a link which redirects twice before reaching download using
205 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
206 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
207 MultiMetaRefreshRedirects) {
208 ClickTestLink("multiple_meta_refresh_redirects", 3);
209 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
210 GURL first_redirect_url = embedded_test_server()->GetURL(
211 "/safe_browsing/download_protection/navigation_observer/"
212 "double_redirect.html");
213 GURL second_redirect_url = embedded_test_server()->GetURL(kRedirectURL);
214 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
215 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
216 observer_->navigation_map();
217 ASSERT_TRUE(nav_map);
218 ASSERT_EQ(std::size_t(3), nav_map->size());
219 ASSERT_EQ(std::size_t(1), nav_map->at(first_redirect_url).size());
220 ASSERT_EQ(std::size_t(1), nav_map->at(second_redirect_url).size());
221 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
222 VerifyNavigationEvent(initial_url, first_redirect_url, initial_url, true,
223 true, false, true, GURL(),
224 nav_map->at(first_redirect_url).at(0));
225 VerifyNavigationEvent(first_redirect_url, second_redirect_url,
226 first_redirect_url, false, true, false, true, GURL(),
227 nav_map->at(second_redirect_url).at(0));
228 VerifyNavigationEvent(second_redirect_url, download_url, second_redirect_url,
229 false, false, false, true, GURL(),
230 nav_map->at(download_url).at(0));
231 }
232
233 // Click on a link which redirects to download using
234 // window.location.href. All transitions happen in the same tab.
235 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
236 WindowLocationHrefRedirect) {
237 ClickTestLink("window_location_href_redirect", 1);
238 GURL::Replacements repl;
239 repl.SetRef("", url::Component(0, 1));
240 GURL initial_url = embedded_test_server()
241 ->GetURL(kSingleFrameTestURL)
242 .ReplaceComponents(repl);
243 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
244 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
245 observer_->navigation_map();
246 ASSERT_TRUE(nav_map);
247 ASSERT_EQ(std::size_t(1), nav_map->size());
248 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
249 VerifyNavigationEvent(initial_url, download_url, initial_url, false, false,
250 false, true, GURL(), nav_map->at(download_url).at(0));
251 }
252
253 // Click on a link which redirect twice until reaches download using a mixture
254 // of meta refresh and window.location.href. All transitions happen in the same
255 // tab.
256 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
257 ClickTestLink("mix_redirects", 2);
258 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
259 GURL::Replacements repl;
260 repl.SetRef("", url::Component(0, 1));
261 GURL initial_url = embedded_test_server()
262 ->GetURL(kSingleFrameTestURL)
263 .ReplaceComponents(repl);
264 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
265 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
266 observer_->navigation_map();
267 ASSERT_TRUE(nav_map);
268 ASSERT_EQ(std::size_t(2), nav_map->size());
269 ASSERT_EQ(std::size_t(1), nav_map->at(redirect_url).size());
270 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
271 VerifyNavigationEvent(initial_url, redirect_url, initial_url, true, true,
272 false, true, GURL(), nav_map->at(redirect_url).at(0));
273 VerifyNavigationEvent(redirect_url, download_url, redirect_url, false, false,
274 false, true, GURL(), nav_map->at(download_url).at(0));
275 }
276
277 // Use javascript to open download in a new tab.
278 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
279 ClickTestLink("new_tab_download", 3);
280 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
281 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
282 GURL blank_url = GURL("about:blank");
283 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
284 observer_->navigation_map();
285 ASSERT_TRUE(nav_map);
286 ASSERT_EQ(std::size_t(2), nav_map->size());
287 ASSERT_EQ(std::size_t(2), nav_map->at(blank_url).size());
288 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
289 VerifyNavigationEvent(initial_url, blank_url, initial_url, true, false, false,
290 false, GURL(), nav_map->at(blank_url).at(0));
291 // Source and target are at different tabs.
292 EXPECT_FALSE(nav_map->at(blank_url).at(0).source_tab_id ==
293 nav_map->at(blank_url).at(0).target_tab_id);
294 VerifyNavigationEvent(blank_url, blank_url, blank_url, false, false, false,
295 true, GURL(), nav_map->at(blank_url).at(1));
296 EXPECT_TRUE(nav_map->at(blank_url).at(1).source_tab_id ==
297 nav_map->at(blank_url).at(1).target_tab_id);
298 VerifyNavigationEvent(blank_url, download_url, blank_url, false, false, false,
299 true, GURL(), nav_map->at(download_url).at(0));
300 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id ==
301 nav_map->at(download_url).at(0).target_tab_id);
302 }
303
304 // Use javascript to open download in a new tab and download has a data url.
305 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
306 NewTabDownloadWithDataURL) {
307 ClickTestLink("new_tab_download_with_data_url", 3);
308 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
309 GURL download_url = GURL(kDownloadDataURL);
310 GURL blank_url = GURL("about:blank");
311 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
312 observer_->navigation_map();
313 ASSERT_TRUE(nav_map);
314 ASSERT_EQ(std::size_t(2), nav_map->size());
315 ASSERT_EQ(std::size_t(2), nav_map->at(blank_url).size());
316 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
317 VerifyNavigationEvent(initial_url, blank_url, initial_url, true, false, false,
318 false, GURL(), nav_map->at(blank_url).at(0));
319 // Source and target are at different tabs.
320 EXPECT_FALSE(nav_map->at(blank_url).at(0).source_tab_id ==
321 nav_map->at(blank_url).at(0).target_tab_id);
322 VerifyNavigationEvent(blank_url, blank_url, blank_url, false, false, false,
323 true, GURL(), nav_map->at(blank_url).at(1));
324 EXPECT_TRUE(nav_map->at(blank_url).at(1).source_tab_id ==
325 nav_map->at(blank_url).at(1).target_tab_id);
326 VerifyNavigationEvent(blank_url, download_url, blank_url, false, false, false,
327 true, GURL(), nav_map->at(download_url).at(0));
328 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id ==
329 nav_map->at(download_url).at(0).target_tab_id);
330 }
331
332 // TODO(jialiul): Need to figure out why this test is failing on Windows and
333 // flacky on other platforms.
334 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi
335 // Download via html5 file API.
336 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
337 MAYBE_DownloadViaHTML5FileApi) {
338 ClickTestLink("html5_file_api", 1);
339 GURL::Replacements repl;
340 repl.SetRef("", url::Component(0, 1));
341 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL)
342 .ReplaceComponents(repl);
343 std::string download_url_str =
344 base::StringPrintf("filesystem:%stemporary/msghello-bypass.exe",
345 embedded_test_server()->base_url().spec().c_str());
346 GURL download_url = GURL(download_url_str);
347 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
348 observer_->navigation_map();
349 ASSERT_TRUE(nav_map);
350 ASSERT_EQ(std::size_t(1), nav_map->size());
351 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
352 VerifyNavigationEvent(initial_url, download_url, initial_url, false, false,
353 false, true, GURL(), nav_map->at(download_url).at(0));
354 }
355
356 // Click a link in a subframe and start download.
357 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
358 SubFrameDirectDownload) {
359 ui_test_utils::NavigateToURL(
360 browser(), embedded_test_server()->GetURL(kMultiFrameTestURL));
361 EXPECT_TRUE(content::WaitForLoadStop(
362 browser()->tab_strip_model()->GetActiveWebContents()));
363 std::string test_name =
364 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download");
365 ClickTestLink(test_name.c_str(), 1);
366 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
367 GURL multi_frame_test_url =
368 embedded_test_server()->GetURL(kMultiFrameTestURL);
369 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL);
370 GURL iframe_retargeting_url =
371 embedded_test_server()->GetURL(kIframeRetargetingURL);
372 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
373 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
374 observer_->navigation_map();
375 ASSERT_TRUE(nav_map);
376 ASSERT_EQ(std::size_t(4), nav_map->size());
377 ASSERT_EQ(std::size_t(1), nav_map->at(multi_frame_test_url).size());
378 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_url).size());
379 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_retargeting_url).size());
380 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
381 VerifyNavigationEvent(initial_url, multi_frame_test_url, initial_url, true,
382 true, false, true, GURL(),
383 nav_map->at(multi_frame_test_url).at(0));
384 VerifyNavigationEvent(iframe_url, iframe_url, multi_frame_test_url, false,
385 true, false, true, GURL(),
386 nav_map->at(iframe_url).at(0));
387 VerifyNavigationEvent(iframe_retargeting_url, iframe_retargeting_url,
388 multi_frame_test_url, false, true, false, true, GURL(),
389 nav_map->at(iframe_retargeting_url).at(0));
390 VerifyNavigationEvent(iframe_url, download_url, multi_frame_test_url, false,
391 false, false, true, GURL(),
392 nav_map->at(download_url).at(0));
393 }
394
395 // Click a link in a subframe and open download in a new tab.
396 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
397 SubFrameNewTabDownload) {
398 ui_test_utils::NavigateToURL(
399 browser(), embedded_test_server()->GetURL(kMultiFrameTestURL));
400 EXPECT_TRUE(content::WaitForLoadStop(
401 browser()->tab_strip_model()->GetActiveWebContents()));
402 std::string test_name =
403 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download");
404 ClickTestLink(test_name.c_str(), 3);
405 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
406 GURL multi_frame_test_url =
407 embedded_test_server()->GetURL(kMultiFrameTestURL);
408 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL);
409 GURL iframe_retargeting_url =
410 embedded_test_server()->GetURL(kIframeRetargetingURL);
411 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
412 GURL blank_url = GURL("about:blank");
413 SafeBrowsingNavigationObserver::NavigationMap* nav_map =
414 observer_->navigation_map();
415 ASSERT_TRUE(nav_map);
416 ASSERT_EQ(std::size_t(5), nav_map->size());
417 ASSERT_EQ(std::size_t(1), nav_map->at(multi_frame_test_url).size());
418 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_url).size());
419 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_retargeting_url).size());
420 ASSERT_EQ(std::size_t(2), nav_map->at(blank_url).size());
421 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
422 VerifyNavigationEvent(initial_url, multi_frame_test_url, initial_url, true,
423 true, false, true, GURL(),
424 nav_map->at(multi_frame_test_url).at(0));
425 VerifyNavigationEvent(iframe_url, iframe_url, multi_frame_test_url, false,
426 true, false, true, GURL(),
427 nav_map->at(iframe_url).at(0));
428 VerifyNavigationEvent(iframe_retargeting_url, iframe_retargeting_url,
429 multi_frame_test_url, false, true, false, true, GURL(),
430 nav_map->at(iframe_retargeting_url).at(0));
431 VerifyNavigationEvent(iframe_retargeting_url, blank_url, multi_frame_test_url,
432 true, false, false, false, GURL(),
433 nav_map->at(blank_url).at(0));
434 VerifyNavigationEvent(blank_url, blank_url, blank_url, false, false, false,
435 true, GURL(), nav_map->at(blank_url).at(1));
436 VerifyNavigationEvent(blank_url, download_url, blank_url, false, false, false,
437 true, GURL(), nav_map->at(download_url).at(0));
438 }
439
440 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698