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

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: nit 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 SafeBrowsingNavigationObserver::NavigationMap* navigation_map() {
141 return observer_->navigation_map();
142 }
143
144 protected:
145 SafeBrowsingNavigationObserver* observer_;
146
147 private:
148 base::ScopedTempDir downloads_directory_;
149 };
150
151 // Click on a link and start download on the same page.
152 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
153 ClickTestLink("direct_download", 1);
154 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
155 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
156 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
157 ASSERT_TRUE(nav_map);
158 ASSERT_EQ(std::size_t(1), nav_map->size());
159 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
160 VerifyNavigationEvent(initial_url, // source_url
161 download_url, // target_url
162 initial_url, // source's main_frame_url
163 false, // is_user_initiated,
164 false, // has_committed
165 false, // is_server_redirect
166 true, // is_finished
167 GURL(), // redirect_url
168 nav_map->at(download_url).at(0));
169 }
170
171 // Click on a link with rel="noreferrer" attribute, and start download on the
172 // same page.
173 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
174 DirectDownloadNoReferrer) {
175 ClickTestLink("direct_download_noreferrer", 1);
176 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
177 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
178 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
179 ASSERT_TRUE(nav_map);
180 ASSERT_EQ(std::size_t(1), nav_map->size());
181 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
182 VerifyNavigationEvent(initial_url, download_url, initial_url, false, false,
183 false, true, GURL(), nav_map->at(download_url).at(0));
184 }
185
186 // Click on a link which navigates to a page then redirect to download using
187 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
188 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
189 SingleMetaRefreshRedirect) {
190 ClickTestLink("single_meta_refresh_redirect", 2);
191 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
192 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
193 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
194 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
195 ASSERT_TRUE(nav_map);
196 ASSERT_EQ(std::size_t(2), nav_map->size());
197 ASSERT_EQ(std::size_t(1), nav_map->at(redirect_url).size());
198 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
199 VerifyNavigationEvent(initial_url, redirect_url, initial_url, true, true,
200 false, true, GURL(), nav_map->at(redirect_url).at(0));
201 VerifyNavigationEvent(redirect_url, download_url, redirect_url, false, false,
202 false, true, GURL(), nav_map->at(download_url).at(0));
203 }
204
205 // Click on a link which redirects twice before reaching download using
206 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
207 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
208 MultiMetaRefreshRedirects) {
209 ClickTestLink("multiple_meta_refresh_redirects", 3);
210 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
211 GURL first_redirect_url = embedded_test_server()->GetURL(
212 "/safe_browsing/download_protection/navigation_observer/"
213 "double_redirect.html");
214 GURL second_redirect_url = embedded_test_server()->GetURL(kRedirectURL);
215 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
216 SafeBrowsingNavigationObserver::NavigationMap* nav_map = 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 window.location.href.
234 // 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 = navigation_map();
245 ASSERT_TRUE(nav_map);
246 ASSERT_EQ(std::size_t(1), nav_map->size());
247 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
248 VerifyNavigationEvent(initial_url, download_url, initial_url, false, false,
249 false, true, GURL(), nav_map->at(download_url).at(0));
250 }
251
252 // Click on a link which redirect twice until reaches download using a mixture
253 // of meta refresh and window.location.href. All transitions happen in the same
254 // tab.
255 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
256 ClickTestLink("mix_redirects", 2);
257 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
258 GURL::Replacements repl;
259 repl.SetRef("", url::Component(0, 1));
260 GURL initial_url = embedded_test_server()
261 ->GetURL(kSingleFrameTestURL)
262 .ReplaceComponents(repl);
263 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
264 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
265 ASSERT_TRUE(nav_map);
266 ASSERT_EQ(std::size_t(2), nav_map->size());
267 ASSERT_EQ(std::size_t(1), nav_map->at(redirect_url).size());
268 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
269 VerifyNavigationEvent(initial_url, redirect_url, initial_url, true, true,
270 false, true, GURL(), nav_map->at(redirect_url).at(0));
271 VerifyNavigationEvent(redirect_url, download_url, redirect_url, false, false,
272 false, true, GURL(), nav_map->at(download_url).at(0));
273 }
274
275 // Use javascript to open download in a new tab.
276 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
277 ClickTestLink("new_tab_download", 3);
278 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
279 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
280 GURL blank_url = GURL("about:blank");
281 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
282 ASSERT_TRUE(nav_map);
283 ASSERT_EQ(std::size_t(2), nav_map->size());
284 ASSERT_EQ(std::size_t(2), nav_map->at(blank_url).size());
285 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
286 VerifyNavigationEvent(initial_url, blank_url, initial_url, true, false, false,
287 false, GURL(), nav_map->at(blank_url).at(0));
288 // Source and target are at different tabs.
289 EXPECT_FALSE(nav_map->at(blank_url).at(0).source_tab_id ==
290 nav_map->at(blank_url).at(0).target_tab_id);
291 VerifyNavigationEvent(blank_url, blank_url, blank_url, false, false, false,
292 true, GURL(), nav_map->at(blank_url).at(1));
293 EXPECT_TRUE(nav_map->at(blank_url).at(1).source_tab_id ==
294 nav_map->at(blank_url).at(1).target_tab_id);
295 VerifyNavigationEvent(blank_url, download_url, blank_url, false, false, false,
296 true, GURL(), nav_map->at(download_url).at(0));
297 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id ==
298 nav_map->at(download_url).at(0).target_tab_id);
299 }
300
301 // Use javascript to open download in a new tab and download has a data url.
302 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
303 NewTabDownloadWithDataURL) {
304 ClickTestLink("new_tab_download_with_data_url", 3);
305 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
306 GURL download_url = GURL(kDownloadDataURL);
307 GURL blank_url = GURL("about:blank");
308 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
309 ASSERT_TRUE(nav_map);
310 ASSERT_EQ(std::size_t(2), nav_map->size());
311 ASSERT_EQ(std::size_t(2), nav_map->at(blank_url).size());
312 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
313 VerifyNavigationEvent(initial_url, blank_url, initial_url, true, false, false,
314 false, GURL(), nav_map->at(blank_url).at(0));
315 // Source and target are at different tabs.
316 EXPECT_FALSE(nav_map->at(blank_url).at(0).source_tab_id ==
317 nav_map->at(blank_url).at(0).target_tab_id);
318 VerifyNavigationEvent(blank_url, blank_url, blank_url, false, false, false,
319 true, GURL(), nav_map->at(blank_url).at(1));
320 EXPECT_TRUE(nav_map->at(blank_url).at(1).source_tab_id ==
321 nav_map->at(blank_url).at(1).target_tab_id);
322 VerifyNavigationEvent(blank_url, download_url, blank_url, false, false, false,
323 true, GURL(), nav_map->at(download_url).at(0));
324 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id ==
325 nav_map->at(download_url).at(0).target_tab_id);
326 }
327
328 // TODO(jialiul): Need to figure out why this test is failing on Windows and
329 // flacky on other platforms.
330 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi
331 // Download via html5 file API.
332 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
333 MAYBE_DownloadViaHTML5FileApi) {
334 ClickTestLink("html5_file_api", 1);
335 GURL::Replacements repl;
336 repl.SetRef("", url::Component(0, 1));
337 GURL initial_url = embedded_test_server()
338 ->GetURL(kSingleFrameTestURL)
339 .ReplaceComponents(repl);
340 std::string download_url_str =
341 base::StringPrintf("filesystem:%stemporary/test.exe",
342 embedded_test_server()->base_url().spec().c_str());
343 GURL download_url = GURL(download_url_str);
344 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
345 ASSERT_TRUE(nav_map);
346 ASSERT_EQ(std::size_t(1), nav_map->size());
347 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
348 VerifyNavigationEvent(initial_url, download_url, initial_url, false, false,
349 false, true, GURL(), nav_map->at(download_url).at(0));
350 }
351
352 // Click a link in a subframe and start download.
353 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
354 SubFrameDirectDownload) {
355 ui_test_utils::NavigateToURL(
356 browser(), embedded_test_server()->GetURL(kMultiFrameTestURL));
357 EXPECT_TRUE(content::WaitForLoadStop(
358 browser()->tab_strip_model()->GetActiveWebContents()));
359 std::string test_name =
360 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download");
361 ClickTestLink(test_name.c_str(), 1);
362 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
363 GURL multi_frame_test_url =
364 embedded_test_server()->GetURL(kMultiFrameTestURL);
365 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL);
366 GURL iframe_retargeting_url =
367 embedded_test_server()->GetURL(kIframeRetargetingURL);
368 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
369 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
370 ASSERT_TRUE(nav_map);
371 ASSERT_EQ(std::size_t(4), nav_map->size());
372 ASSERT_EQ(std::size_t(1), nav_map->at(multi_frame_test_url).size());
373 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_url).size());
374 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_retargeting_url).size());
375 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
376 VerifyNavigationEvent(initial_url, multi_frame_test_url, initial_url, true,
377 true, false, true, GURL(),
378 nav_map->at(multi_frame_test_url).at(0));
379 VerifyNavigationEvent(iframe_url, iframe_url, multi_frame_test_url, false,
380 true, false, true, GURL(),
381 nav_map->at(iframe_url).at(0));
382 VerifyNavigationEvent(iframe_retargeting_url, iframe_retargeting_url,
383 multi_frame_test_url, false, true, false, true, GURL(),
384 nav_map->at(iframe_retargeting_url).at(0));
385 VerifyNavigationEvent(iframe_url, download_url, multi_frame_test_url, false,
386 false, false, true, GURL(),
387 nav_map->at(download_url).at(0));
388 }
389
390 // Click a link in a subframe and open download in a new tab.
391 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
392 SubFrameNewTabDownload) {
393 ui_test_utils::NavigateToURL(
394 browser(), embedded_test_server()->GetURL(kMultiFrameTestURL));
395 EXPECT_TRUE(content::WaitForLoadStop(
396 browser()->tab_strip_model()->GetActiveWebContents()));
397 std::string test_name =
398 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download");
399 ClickTestLink(test_name.c_str(), 4);
400 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
401 GURL multi_frame_test_url =
402 embedded_test_server()->GetURL(kMultiFrameTestURL);
403 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL);
404 GURL iframe_retargeting_url =
405 embedded_test_server()->GetURL(kIframeRetargetingURL);
406 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
407 GURL blank_url = GURL("about:blank");
408 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
409 ASSERT_TRUE(nav_map);
410 ASSERT_EQ(std::size_t(5), nav_map->size());
411 ASSERT_EQ(std::size_t(1), nav_map->at(multi_frame_test_url).size());
412 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_url).size());
413 ASSERT_EQ(std::size_t(1), nav_map->at(iframe_retargeting_url).size());
414 ASSERT_EQ(std::size_t(2), nav_map->at(blank_url).size());
415 ASSERT_EQ(std::size_t(1), nav_map->at(download_url).size());
416 VerifyNavigationEvent(initial_url, multi_frame_test_url, initial_url, true,
417 true, false, true, GURL(),
418 nav_map->at(multi_frame_test_url).at(0));
419 VerifyNavigationEvent(iframe_url, iframe_url, multi_frame_test_url, false,
420 true, false, true, GURL(),
421 nav_map->at(iframe_url).at(0));
422 VerifyNavigationEvent(iframe_retargeting_url, iframe_retargeting_url,
423 multi_frame_test_url, false, true, false, true, GURL(),
424 nav_map->at(iframe_retargeting_url).at(0));
425 VerifyNavigationEvent(iframe_retargeting_url, blank_url, multi_frame_test_url,
426 true, false, false, false, GURL(),
427 nav_map->at(blank_url).at(0));
428 VerifyNavigationEvent(blank_url, blank_url, blank_url, false, false, false,
429 true, GURL(), nav_map->at(blank_url).at(1));
430 VerifyNavigationEvent(blank_url, download_url, blank_url, false, false, false,
431 true, GURL(), nav_map->at(download_url).at(0));
432 }
433
434 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698