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

Side by Side Diff: chrome/browser/tab_contents/web_contents_unittest.cc

Issue 8801003: Make TestTabContents::TestDidNavigate not take a ViewHostMsg_FrameNavigate_Params, since that's a... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Remove the accidental commenting out that I had done before last commit Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/dom_operation_notification_details.h"
8 #include "chrome/browser/prefs/pref_service.h" 7 #include "chrome/browser/prefs/pref_service.h"
9 #include "chrome/browser/tab_contents/chrome_interstitial_page.h"
10 #include "chrome/common/chrome_notification_types.h"
11 #include "chrome/common/pref_names.h" 8 #include "chrome/common/pref_names.h"
12 #include "chrome/common/render_messages.h"
13 #include "chrome/common/url_constants.h"
14 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 9 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
15 #include "chrome/test/base/testing_pref_service.h" 10 #include "chrome/test/base/testing_pref_service.h"
16 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile.h"
17 #include "content/browser/renderer_host/render_view_host.h" 12 #include "content/browser/renderer_host/render_view_host.h"
18 #include "content/browser/renderer_host/render_widget_host_view.h" 13 #include "content/browser/renderer_host/render_widget_host_view.h"
19 #include "content/browser/site_instance.h" 14 #include "content/browser/site_instance.h"
15 #include "content/browser/tab_contents/interstitial_page.h"
20 #include "content/browser/tab_contents/navigation_details.h" 16 #include "content/browser/tab_contents/navigation_details.h"
21 #include "content/browser/tab_contents/navigation_entry.h" 17 #include "content/browser/tab_contents/navigation_entry.h"
22 #include "content/browser/tab_contents/test_tab_contents.h" 18 #include "content/browser/tab_contents/test_tab_contents.h"
23 #include "content/common/view_messages.h" 19 #include "content/common/view_messages.h"
24 #include "content/public/browser/notification_details.h" 20 #include "content/public/browser/notification_details.h"
25 #include "content/public/browser/notification_source.h" 21 #include "content/public/browser/notification_source.h"
26 #include "content/public/browser/notification_source.h" 22 #include "content/public/browser/notification_source.h"
27 #include "content/public/common/bindings_policy.h" 23 #include "content/public/common/bindings_policy.h"
28 #include "content/public/common/content_constants.h" 24 #include "content/public/common/content_constants.h"
25 #include "content/public/common/url_constants.h"
29 #include "content/test/test_browser_thread.h" 26 #include "content/test/test_browser_thread.h"
30 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
31 #include "ui/base/message_box_flags.h" 28 #include "ui/base/message_box_flags.h"
32 #include "webkit/glue/webkit_glue.h" 29 #include "webkit/glue/webkit_glue.h"
33 30
34 using content::BrowserThread; 31 using content::BrowserThread;
35 using webkit_glue::PasswordForm; 32 using webkit_glue::PasswordForm;
36 33
37 class TestInterstitialPage : public ChromeInterstitialPage { 34 class TestInterstitialPage : public InterstitialPage {
38 public: 35 public:
39 enum InterstitialState { 36 enum InterstitialState {
40 UNDECIDED = 0, // No decision taken yet. 37 UNDECIDED = 0, // No decision taken yet.
41 OKED, // Proceed was called. 38 OKED, // Proceed was called.
42 CANCELED // DontProceed was called. 39 CANCELED // DontProceed was called.
43 }; 40 };
44 41
45 class Delegate { 42 class Delegate {
46 public: 43 public:
47 virtual void TestInterstitialPageDeleted( 44 virtual void TestInterstitialPageDeleted(
(...skipping 10 matching lines...) Expand all
58 // are cleared when the test finishes. 55 // are cleared when the test finishes.
59 // Not doing so will cause stack trashing if your test does not hide the 56 // Not doing so will cause stack trashing if your test does not hide the
60 // interstitial, as in such a case it will be destroyed in the test TearDown 57 // interstitial, as in such a case it will be destroyed in the test TearDown
61 // method and will dereference the |deleted| local variable which by then is 58 // method and will dereference the |deleted| local variable which by then is
62 // out of scope. 59 // out of scope.
63 TestInterstitialPage(TabContents* tab, 60 TestInterstitialPage(TabContents* tab,
64 bool new_navigation, 61 bool new_navigation,
65 const GURL& url, 62 const GURL& url,
66 InterstitialState* state, 63 InterstitialState* state,
67 bool* deleted) 64 bool* deleted)
68 : ChromeInterstitialPage(tab, new_navigation, url), 65 : InterstitialPage(tab, new_navigation, url),
69 state_(state), 66 state_(state),
70 deleted_(deleted), 67 deleted_(deleted),
71 command_received_count_(0), 68 command_received_count_(0),
72 delegate_(NULL) { 69 delegate_(NULL) {
73 *state_ = UNDECIDED; 70 *state_ = UNDECIDED;
74 *deleted_ = false; 71 *deleted_ = false;
75 } 72 }
76 73
77 virtual ~TestInterstitialPage() { 74 virtual ~TestInterstitialPage() {
78 if (deleted_) 75 if (deleted_)
(...skipping 11 matching lines...) Expand all
90 if (state_) 87 if (state_)
91 *state_ = OKED; 88 *state_ = OKED;
92 InterstitialPage::Proceed(); 89 InterstitialPage::Proceed();
93 } 90 }
94 91
95 int command_received_count() const { 92 int command_received_count() const {
96 return command_received_count_; 93 return command_received_count_;
97 } 94 }
98 95
99 void TestDomOperationResponse(const std::string& json_string) { 96 void TestDomOperationResponse(const std::string& json_string) {
100 DomOperationNotificationDetails details(json_string, 1); 97 if (enabled())
101 Observe(chrome::NOTIFICATION_DOM_OPERATION_RESPONSE, 98 CommandReceived(json_string);
102 content::Source<RenderViewHost>(render_view_host()),
103 content::Details<DomOperationNotificationDetails>(&details));
104 } 99 }
105 100
106 void TestDidNavigate(int page_id, const GURL& url) { 101 void TestDidNavigate(int page_id, const GURL& url) {
107 ViewHostMsg_FrameNavigate_Params params; 102 ViewHostMsg_FrameNavigate_Params params;
108 InitNavigateParams(&params, page_id, url, content::PAGE_TRANSITION_TYPED); 103 InitNavigateParams(&params, page_id, url, content::PAGE_TRANSITION_TYPED);
109 DidNavigate(render_view_host(), params); 104 DidNavigate(render_view_host(), params);
110 } 105 }
111 106
112 void TestRenderViewGone(base::TerminationStatus status, int error_code) { 107 void TestRenderViewGone(base::TerminationStatus status, int error_code) {
113 RenderViewGone(render_view_host(), status, error_code); 108 RenderViewGone(render_view_host(), status, error_code);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 const GURL url("http://www.google.com"); 245 const GURL url("http://www.google.com");
251 controller().LoadURL( 246 controller().LoadURL(
252 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 247 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
253 EXPECT_FALSE(contents()->cross_navigation_pending()); 248 EXPECT_FALSE(contents()->cross_navigation_pending());
254 EXPECT_EQ(instance1, orig_rvh->site_instance()); 249 EXPECT_EQ(instance1, orig_rvh->site_instance());
255 // Controller's pending entry will have a NULL site instance until we assign 250 // Controller's pending entry will have a NULL site instance until we assign
256 // it in DidNavigate. 251 // it in DidNavigate.
257 EXPECT_TRUE(controller().GetActiveEntry()->site_instance() == NULL); 252 EXPECT_TRUE(controller().GetActiveEntry()->site_instance() == NULL);
258 253
259 // DidNavigate from the page 254 // DidNavigate from the page
260 ViewHostMsg_FrameNavigate_Params params; 255 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
261 InitNavigateParams(&params, 1, url, content::PAGE_TRANSITION_TYPED);
262 contents()->TestDidNavigate(orig_rvh, params);
263 EXPECT_FALSE(contents()->cross_navigation_pending()); 256 EXPECT_FALSE(contents()->cross_navigation_pending());
264 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 257 EXPECT_EQ(orig_rvh, contents()->render_view_host());
265 EXPECT_EQ(instance1, orig_rvh->site_instance()); 258 EXPECT_EQ(instance1, orig_rvh->site_instance());
266 // Controller's entry should now have the SiteInstance, or else we won't be 259 // Controller's entry should now have the SiteInstance, or else we won't be
267 // able to find it later. 260 // able to find it later.
268 EXPECT_EQ(instance1, controller().GetActiveEntry()->site_instance()); 261 EXPECT_EQ(instance1, controller().GetActiveEntry()->site_instance());
269 } 262 }
270 263
271 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars. 264 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars.
272 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) { 265 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) {
(...skipping 13 matching lines...) Expand all
286 contents()->transition_cross_site = true; 279 contents()->transition_cross_site = true;
287 TestRenderViewHost* orig_rvh = rvh(); 280 TestRenderViewHost* orig_rvh = rvh();
288 int orig_rvh_delete_count = 0; 281 int orig_rvh_delete_count = 0;
289 orig_rvh->set_delete_counter(&orig_rvh_delete_count); 282 orig_rvh->set_delete_counter(&orig_rvh_delete_count);
290 SiteInstance* instance1 = contents()->GetSiteInstance(); 283 SiteInstance* instance1 = contents()->GetSiteInstance();
291 284
292 // Navigate to URL. First URL should use first RenderViewHost. 285 // Navigate to URL. First URL should use first RenderViewHost.
293 const GURL url("http://www.google.com"); 286 const GURL url("http://www.google.com");
294 controller().LoadURL( 287 controller().LoadURL(
295 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 288 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
296 ViewHostMsg_FrameNavigate_Params params1; 289 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
297 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
298 contents()->TestDidNavigate(orig_rvh, params1);
299 290
300 EXPECT_FALSE(contents()->cross_navigation_pending()); 291 EXPECT_FALSE(contents()->cross_navigation_pending());
301 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 292 EXPECT_EQ(orig_rvh, contents()->render_view_host());
302 293
303 // Navigate to new site 294 // Navigate to new site
304 const GURL url2("http://www.yahoo.com"); 295 const GURL url2("http://www.yahoo.com");
305 controller().LoadURL( 296 controller().LoadURL(
306 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 297 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
307 EXPECT_TRUE(contents()->cross_navigation_pending()); 298 EXPECT_TRUE(contents()->cross_navigation_pending());
308 TestRenderViewHost* pending_rvh = contents()->pending_rvh(); 299 TestRenderViewHost* pending_rvh = contents()->pending_rvh();
309 int pending_rvh_delete_count = 0; 300 int pending_rvh_delete_count = 0;
310 pending_rvh->set_delete_counter(&pending_rvh_delete_count); 301 pending_rvh->set_delete_counter(&pending_rvh_delete_count);
311 302
312 // Navigations should be suspended in pending_rvh until ShouldCloseACK. 303 // Navigations should be suspended in pending_rvh until ShouldCloseACK.
313 EXPECT_TRUE(pending_rvh->are_navigations_suspended()); 304 EXPECT_TRUE(pending_rvh->are_navigations_suspended());
314 orig_rvh->SendShouldCloseACK(true); 305 orig_rvh->SendShouldCloseACK(true);
315 EXPECT_FALSE(pending_rvh->are_navigations_suspended()); 306 EXPECT_FALSE(pending_rvh->are_navigations_suspended());
316 307
317 // DidNavigate from the pending page 308 // DidNavigate from the pending page
318 ViewHostMsg_FrameNavigate_Params params2; 309 contents()->TestDidNavigate(
319 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED); 310 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
320 contents()->TestDidNavigate(pending_rvh, params2);
321 SiteInstance* instance2 = contents()->GetSiteInstance(); 311 SiteInstance* instance2 = contents()->GetSiteInstance();
322 312
323 EXPECT_FALSE(contents()->cross_navigation_pending()); 313 EXPECT_FALSE(contents()->cross_navigation_pending());
324 EXPECT_EQ(pending_rvh, contents()->render_view_host()); 314 EXPECT_EQ(pending_rvh, contents()->render_view_host());
325 EXPECT_NE(instance1, instance2); 315 EXPECT_NE(instance1, instance2);
326 EXPECT_TRUE(contents()->pending_rvh() == NULL); 316 EXPECT_TRUE(contents()->pending_rvh() == NULL);
327 // We keep the original RVH around, swapped out. 317 // We keep the original RVH around, swapped out.
328 EXPECT_TRUE(contents()->render_manager_for_testing()->IsSwappedOut(orig_rvh)); 318 EXPECT_TRUE(contents()->render_manager_for_testing()->IsSwappedOut(orig_rvh));
329 EXPECT_EQ(orig_rvh_delete_count, 0); 319 EXPECT_EQ(orig_rvh_delete_count, 0);
330 320
331 // Going back should switch SiteInstances again. The first SiteInstance is 321 // Going back should switch SiteInstances again. The first SiteInstance is
332 // stored in the NavigationEntry, so it should be the same as at the start. 322 // stored in the NavigationEntry, so it should be the same as at the start.
333 // We should use the same RVH as before, swapping it back in. 323 // We should use the same RVH as before, swapping it back in.
334 controller().GoBack(); 324 controller().GoBack();
335 TestRenderViewHost* goback_rvh = contents()->pending_rvh(); 325 TestRenderViewHost* goback_rvh = contents()->pending_rvh();
336 EXPECT_EQ(orig_rvh, goback_rvh); 326 EXPECT_EQ(orig_rvh, goback_rvh);
337 EXPECT_TRUE(contents()->cross_navigation_pending()); 327 EXPECT_TRUE(contents()->cross_navigation_pending());
338 328
339 // Navigations should be suspended in goback_rvh until ShouldCloseACK. 329 // Navigations should be suspended in goback_rvh until ShouldCloseACK.
340 EXPECT_TRUE(goback_rvh->are_navigations_suspended()); 330 EXPECT_TRUE(goback_rvh->are_navigations_suspended());
341 pending_rvh->SendShouldCloseACK(true); 331 pending_rvh->SendShouldCloseACK(true);
342 EXPECT_FALSE(goback_rvh->are_navigations_suspended()); 332 EXPECT_FALSE(goback_rvh->are_navigations_suspended());
343 333
344 // DidNavigate from the back action 334 // DidNavigate from the back action
345 contents()->TestDidNavigate(goback_rvh, params1); 335 contents()->TestDidNavigate(
336 goback_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
346 EXPECT_FALSE(contents()->cross_navigation_pending()); 337 EXPECT_FALSE(contents()->cross_navigation_pending());
347 EXPECT_EQ(goback_rvh, contents()->render_view_host()); 338 EXPECT_EQ(goback_rvh, contents()->render_view_host());
348 EXPECT_EQ(instance1, contents()->GetSiteInstance()); 339 EXPECT_EQ(instance1, contents()->GetSiteInstance());
349 // The pending RVH should now be swapped out, not deleted. 340 // The pending RVH should now be swapped out, not deleted.
350 EXPECT_TRUE(contents()->render_manager_for_testing()-> 341 EXPECT_TRUE(contents()->render_manager_for_testing()->
351 IsSwappedOut(pending_rvh)); 342 IsSwappedOut(pending_rvh));
352 EXPECT_EQ(pending_rvh_delete_count, 0); 343 EXPECT_EQ(pending_rvh_delete_count, 0);
353 344
354 // Close tab and ensure RVHs are deleted. 345 // Close tab and ensure RVHs are deleted.
355 DeleteContents(); 346 DeleteContents();
356 EXPECT_EQ(orig_rvh_delete_count, 1); 347 EXPECT_EQ(orig_rvh_delete_count, 1);
357 EXPECT_EQ(pending_rvh_delete_count, 1); 348 EXPECT_EQ(pending_rvh_delete_count, 1);
358 } 349 }
359 350
360 // Test that navigating across a site boundary after a crash creates a new 351 // Test that navigating across a site boundary after a crash creates a new
361 // RVH without requiring a cross-site transition (i.e., PENDING state). 352 // RVH without requiring a cross-site transition (i.e., PENDING state).
362 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) { 353 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) {
363 contents()->transition_cross_site = true; 354 contents()->transition_cross_site = true;
364 TestRenderViewHost* orig_rvh = rvh(); 355 TestRenderViewHost* orig_rvh = rvh();
365 int orig_rvh_delete_count = 0; 356 int orig_rvh_delete_count = 0;
366 orig_rvh->set_delete_counter(&orig_rvh_delete_count); 357 orig_rvh->set_delete_counter(&orig_rvh_delete_count);
367 SiteInstance* instance1 = contents()->GetSiteInstance(); 358 SiteInstance* instance1 = contents()->GetSiteInstance();
368 359
369 // Navigate to URL. First URL should use first RenderViewHost. 360 // Navigate to URL. First URL should use first RenderViewHost.
370 const GURL url("http://www.google.com"); 361 const GURL url("http://www.google.com");
371 controller().LoadURL( 362 controller().LoadURL(
372 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 363 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
373 ViewHostMsg_FrameNavigate_Params params1; 364 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
374 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
375 contents()->TestDidNavigate(orig_rvh, params1);
376 365
377 EXPECT_FALSE(contents()->cross_navigation_pending()); 366 EXPECT_FALSE(contents()->cross_navigation_pending());
378 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 367 EXPECT_EQ(orig_rvh, contents()->render_view_host());
379 368
380 // Crash the renderer. 369 // Crash the renderer.
381 orig_rvh->set_render_view_created(false); 370 orig_rvh->set_render_view_created(false);
382 371
383 // Navigate to new site. We should not go into PENDING. 372 // Navigate to new site. We should not go into PENDING.
384 const GURL url2("http://www.yahoo.com"); 373 const GURL url2("http://www.yahoo.com");
385 controller().LoadURL( 374 controller().LoadURL(
386 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 375 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
387 TestRenderViewHost* new_rvh = rvh(); 376 TestRenderViewHost* new_rvh = rvh();
388 EXPECT_FALSE(contents()->cross_navigation_pending()); 377 EXPECT_FALSE(contents()->cross_navigation_pending());
389 EXPECT_TRUE(contents()->pending_rvh() == NULL); 378 EXPECT_TRUE(contents()->pending_rvh() == NULL);
390 EXPECT_NE(orig_rvh, new_rvh); 379 EXPECT_NE(orig_rvh, new_rvh);
391 EXPECT_EQ(orig_rvh_delete_count, 1); 380 EXPECT_EQ(orig_rvh_delete_count, 1);
392 381
393 // DidNavigate from the new page 382 // DidNavigate from the new page
394 ViewHostMsg_FrameNavigate_Params params2; 383 contents()->TestDidNavigate(new_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
395 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
396 contents()->TestDidNavigate(new_rvh, params2);
397 SiteInstance* instance2 = contents()->GetSiteInstance(); 384 SiteInstance* instance2 = contents()->GetSiteInstance();
398 385
399 EXPECT_FALSE(contents()->cross_navigation_pending()); 386 EXPECT_FALSE(contents()->cross_navigation_pending());
400 EXPECT_EQ(new_rvh, rvh()); 387 EXPECT_EQ(new_rvh, rvh());
401 EXPECT_NE(instance1, instance2); 388 EXPECT_NE(instance1, instance2);
402 EXPECT_TRUE(contents()->pending_rvh() == NULL); 389 EXPECT_TRUE(contents()->pending_rvh() == NULL);
403 390
404 // Close tab and ensure RVHs are deleted. 391 // Close tab and ensure RVHs are deleted.
405 DeleteContents(); 392 DeleteContents();
406 EXPECT_EQ(orig_rvh_delete_count, 1); 393 EXPECT_EQ(orig_rvh_delete_count, 1);
407 } 394 }
408 395
409 // Test that opening a new tab in the same SiteInstance and then navigating 396 // Test that opening a new tab in the same SiteInstance and then navigating
410 // both tabs to a new site will place both tabs in a single SiteInstance. 397 // both tabs to a new site will place both tabs in a single SiteInstance.
411 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) { 398 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) {
412 contents()->transition_cross_site = true; 399 contents()->transition_cross_site = true;
413 TestRenderViewHost* orig_rvh = rvh(); 400 TestRenderViewHost* orig_rvh = rvh();
414 SiteInstance* instance1 = contents()->GetSiteInstance(); 401 SiteInstance* instance1 = contents()->GetSiteInstance();
415 402
416 // Navigate to URL. First URL should use first RenderViewHost. 403 // Navigate to URL. First URL should use first RenderViewHost.
417 const GURL url("http://www.google.com"); 404 const GURL url("http://www.google.com");
418 controller().LoadURL( 405 controller().LoadURL(
419 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 406 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
420 ViewHostMsg_FrameNavigate_Params params1; 407 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
421 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
422 contents()->TestDidNavigate(orig_rvh, params1);
423 408
424 // Open a new tab with the same SiteInstance, navigated to the same site. 409 // Open a new tab with the same SiteInstance, navigated to the same site.
425 TestTabContents contents2(profile(), instance1); 410 TestTabContents contents2(profile(), instance1);
426 params1.page_id = 2; // Need this since the site instance is the same (which
427 // is the scope of page IDs) and we want to consider
428 // this a new page.
429 contents2.transition_cross_site = true; 411 contents2.transition_cross_site = true;
430 contents2.controller().LoadURL(url, content::Referrer(), 412 contents2.controller().LoadURL(url, content::Referrer(),
431 content::PAGE_TRANSITION_TYPED, 413 content::PAGE_TRANSITION_TYPED,
432 std::string()); 414 std::string());
433 contents2.TestDidNavigate(contents2.render_view_host(), params1); 415 // Need this page id to be 2 since the site instance is the same (which is the
416 // scope of page IDs) and we want to consider this a new page.
417 contents2.TestDidNavigate(
418 contents2.render_view_host(), 2, url, content::PAGE_TRANSITION_TYPED);
434 419
435 // Navigate first tab to a new site 420 // Navigate first tab to a new site
436 const GURL url2a("http://www.yahoo.com"); 421 const GURL url2a("http://www.yahoo.com");
437 controller().LoadURL( 422 controller().LoadURL(
438 url2a, content::Referrer(), content::PAGE_TRANSITION_TYPED, 423 url2a, content::Referrer(), content::PAGE_TRANSITION_TYPED,
439 std::string()); 424 std::string());
440 orig_rvh->SendShouldCloseACK(true); 425 orig_rvh->SendShouldCloseACK(true);
441 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh(); 426 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh();
442 ViewHostMsg_FrameNavigate_Params params2a; 427 contents()->TestDidNavigate(
443 InitNavigateParams(&params2a, 1, url2a, content::PAGE_TRANSITION_TYPED); 428 pending_rvh_a, 1, url2a, content::PAGE_TRANSITION_TYPED);
444 contents()->TestDidNavigate(pending_rvh_a, params2a);
445 SiteInstance* instance2a = contents()->GetSiteInstance(); 429 SiteInstance* instance2a = contents()->GetSiteInstance();
446 EXPECT_NE(instance1, instance2a); 430 EXPECT_NE(instance1, instance2a);
447 431
448 // Navigate second tab to the same site as the first tab 432 // Navigate second tab to the same site as the first tab
449 const GURL url2b("http://mail.yahoo.com"); 433 const GURL url2b("http://mail.yahoo.com");
450 contents2.controller().LoadURL(url2b, content::Referrer(), 434 contents2.controller().LoadURL(url2b, content::Referrer(),
451 content::PAGE_TRANSITION_TYPED, 435 content::PAGE_TRANSITION_TYPED,
452 std::string()); 436 std::string());
453 TestRenderViewHost* rvh2 = 437 TestRenderViewHost* rvh2 =
454 static_cast<TestRenderViewHost*>(contents2.render_view_host()); 438 static_cast<TestRenderViewHost*>(contents2.render_view_host());
455 rvh2->SendShouldCloseACK(true); 439 rvh2->SendShouldCloseACK(true);
456 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh(); 440 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh();
457 EXPECT_TRUE(pending_rvh_b != NULL); 441 EXPECT_TRUE(pending_rvh_b != NULL);
458 EXPECT_TRUE(contents2.cross_navigation_pending()); 442 EXPECT_TRUE(contents2.cross_navigation_pending());
459 443
460 // NOTE(creis): We used to be in danger of showing a sad tab page here if the 444 // NOTE(creis): We used to be in danger of showing a sad tab page here if the
461 // second tab hadn't navigated somewhere first (bug 1145430). That case is 445 // second tab hadn't navigated somewhere first (bug 1145430). That case is
462 // now covered by the CrossSiteBoundariesAfterCrash test. 446 // now covered by the CrossSiteBoundariesAfterCrash test.
463 447 contents2.TestDidNavigate(
464 ViewHostMsg_FrameNavigate_Params params2b; 448 pending_rvh_b, 2, url2b, content::PAGE_TRANSITION_TYPED);
465 InitNavigateParams(&params2b, 2, url2b, content::PAGE_TRANSITION_TYPED);
466 contents2.TestDidNavigate(pending_rvh_b, params2b);
467 SiteInstance* instance2b = contents2.GetSiteInstance(); 449 SiteInstance* instance2b = contents2.GetSiteInstance();
468 EXPECT_NE(instance1, instance2b); 450 EXPECT_NE(instance1, instance2b);
469 451
470 // Both tabs should now be in the same SiteInstance. 452 // Both tabs should now be in the same SiteInstance.
471 EXPECT_EQ(instance2a, instance2b); 453 EXPECT_EQ(instance2a, instance2b);
472 } 454 }
473 455
474 // Tests that TabContents uses the current URL, not the SiteInstance's site, to 456 // Tests that TabContents uses the current URL, not the SiteInstance's site, to
475 // determine whether a navigation is cross-site. 457 // determine whether a navigation is cross-site.
476 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) { 458 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) {
477 contents()->transition_cross_site = true; 459 contents()->transition_cross_site = true;
478 TestRenderViewHost* orig_rvh = rvh(); 460 TestRenderViewHost* orig_rvh = rvh();
479 SiteInstance* instance1 = contents()->GetSiteInstance(); 461 SiteInstance* instance1 = contents()->GetSiteInstance();
480 462
481 // Navigate to URL. 463 // Navigate to URL.
482 const GURL url("http://www.google.com"); 464 const GURL url("http://www.google.com");
483 controller().LoadURL( 465 controller().LoadURL(
484 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 466 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
485 ViewHostMsg_FrameNavigate_Params params1; 467 contents()->TestDidNavigate(
486 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED); 468 orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
487 contents()->TestDidNavigate(orig_rvh, params1);
488 469
489 // Open a related tab to a second site. 470 // Open a related tab to a second site.
490 TestTabContents contents2(profile(), instance1); 471 TestTabContents contents2(profile(), instance1);
491 contents2.transition_cross_site = true; 472 contents2.transition_cross_site = true;
492 const GURL url2("http://www.yahoo.com"); 473 const GURL url2("http://www.yahoo.com");
493 contents2.controller().LoadURL(url2, content::Referrer(), 474 contents2.controller().LoadURL(url2, content::Referrer(),
494 content::PAGE_TRANSITION_TYPED, 475 content::PAGE_TRANSITION_TYPED,
495 std::string()); 476 std::string());
496 // The first RVH in contents2 isn't live yet, so we shortcut the cross site 477 // The first RVH in contents2 isn't live yet, so we shortcut the cross site
497 // pending. 478 // pending.
498 TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>( 479 TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>(
499 contents2.render_view_host()); 480 contents2.render_view_host());
500 EXPECT_FALSE(contents2.cross_navigation_pending()); 481 EXPECT_FALSE(contents2.cross_navigation_pending());
501 ViewHostMsg_FrameNavigate_Params params2; 482 contents2.TestDidNavigate(rvh2, 2, url2, content::PAGE_TRANSITION_TYPED);
502 InitNavigateParams(&params2, 2, url2, content::PAGE_TRANSITION_TYPED);
503 contents2.TestDidNavigate(rvh2, params2);
504 SiteInstance* instance2 = contents2.GetSiteInstance(); 483 SiteInstance* instance2 = contents2.GetSiteInstance();
505 EXPECT_NE(instance1, instance2); 484 EXPECT_NE(instance1, instance2);
506 EXPECT_FALSE(contents2.cross_navigation_pending()); 485 EXPECT_FALSE(contents2.cross_navigation_pending());
507 486
508 // Simulate a link click in first tab to second site. Doesn't switch 487 // Simulate a link click in first tab to second site. Doesn't switch
509 // SiteInstances, because we don't intercept WebKit navigations. 488 // SiteInstances, because we don't intercept WebKit navigations.
510 ViewHostMsg_FrameNavigate_Params params3; 489 contents()->TestDidNavigate(
511 InitNavigateParams(&params3, 2, url2, content::PAGE_TRANSITION_TYPED); 490 orig_rvh, 2, url2, content::PAGE_TRANSITION_TYPED);
512 contents()->TestDidNavigate(orig_rvh, params3);
513 SiteInstance* instance3 = contents()->GetSiteInstance(); 491 SiteInstance* instance3 = contents()->GetSiteInstance();
514 EXPECT_EQ(instance1, instance3); 492 EXPECT_EQ(instance1, instance3);
515 EXPECT_FALSE(contents()->cross_navigation_pending()); 493 EXPECT_FALSE(contents()->cross_navigation_pending());
516 494
517 // Navigate to the new site. Doesn't switch SiteInstancees, because we 495 // Navigate to the new site. Doesn't switch SiteInstancees, because we
518 // compare against the current URL, not the SiteInstance's site. 496 // compare against the current URL, not the SiteInstance's site.
519 const GURL url3("http://mail.yahoo.com"); 497 const GURL url3("http://mail.yahoo.com");
520 controller().LoadURL( 498 controller().LoadURL(
521 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 499 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
522 EXPECT_FALSE(contents()->cross_navigation_pending()); 500 EXPECT_FALSE(contents()->cross_navigation_pending());
523 ViewHostMsg_FrameNavigate_Params params4; 501 contents()->TestDidNavigate(
524 InitNavigateParams(&params4, 3, url3, content::PAGE_TRANSITION_TYPED); 502 orig_rvh, 3, url3, content::PAGE_TRANSITION_TYPED);
525 contents()->TestDidNavigate(orig_rvh, params4);
526 SiteInstance* instance4 = contents()->GetSiteInstance(); 503 SiteInstance* instance4 = contents()->GetSiteInstance();
527 EXPECT_EQ(instance1, instance4); 504 EXPECT_EQ(instance1, instance4);
528 } 505 }
529 506
530 // Test that the onbeforeunload and onunload handlers run when navigating 507 // Test that the onbeforeunload and onunload handlers run when navigating
531 // across site boundaries. 508 // across site boundaries.
532 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) { 509 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) {
533 contents()->transition_cross_site = true; 510 contents()->transition_cross_site = true;
534 TestRenderViewHost* orig_rvh = rvh(); 511 TestRenderViewHost* orig_rvh = rvh();
535 SiteInstance* instance1 = contents()->GetSiteInstance(); 512 SiteInstance* instance1 = contents()->GetSiteInstance();
536 513
537 // Navigate to URL. First URL should use first RenderViewHost. 514 // Navigate to URL. First URL should use first RenderViewHost.
538 const GURL url("http://www.google.com"); 515 const GURL url("http://www.google.com");
539 controller().LoadURL( 516 controller().LoadURL(
540 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 517 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
541 ViewHostMsg_FrameNavigate_Params params1; 518 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
542 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
543 contents()->TestDidNavigate(orig_rvh, params1);
544 EXPECT_FALSE(contents()->cross_navigation_pending()); 519 EXPECT_FALSE(contents()->cross_navigation_pending());
545 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 520 EXPECT_EQ(orig_rvh, contents()->render_view_host());
546 521
547 // Navigate to new site, but simulate an onbeforeunload denial. 522 // Navigate to new site, but simulate an onbeforeunload denial.
548 const GURL url2("http://www.yahoo.com"); 523 const GURL url2("http://www.yahoo.com");
549 controller().LoadURL( 524 controller().LoadURL(
550 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 525 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
551 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 526 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
552 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false)); 527 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false));
553 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 528 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
554 EXPECT_FALSE(contents()->cross_navigation_pending()); 529 EXPECT_FALSE(contents()->cross_navigation_pending());
555 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 530 EXPECT_EQ(orig_rvh, contents()->render_view_host());
556 531
557 // Navigate again, but simulate an onbeforeunload approval. 532 // Navigate again, but simulate an onbeforeunload approval.
558 controller().LoadURL( 533 controller().LoadURL(
559 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 534 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
560 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 535 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
561 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 536 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
562 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 537 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
563 EXPECT_TRUE(contents()->cross_navigation_pending()); 538 EXPECT_TRUE(contents()->cross_navigation_pending());
564 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( 539 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
565 contents()->pending_rvh()); 540 contents()->pending_rvh());
566 541
567 // We won't hear DidNavigate until the onunload handler has finished running. 542 // We won't hear DidNavigate until the onunload handler has finished running.
568 // (No way to simulate that here, but it involves a call from RDH to 543 // (No way to simulate that here, but it involves a call from RDH to
569 // TabContents::OnCrossSiteResponse.) 544 // TabContents::OnCrossSiteResponse.)
570 545
571 // DidNavigate from the pending page 546 // DidNavigate from the pending page
572 ViewHostMsg_FrameNavigate_Params params2; 547 contents()->TestDidNavigate(
573 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED); 548 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
574 contents()->TestDidNavigate(pending_rvh, params2);
575 SiteInstance* instance2 = contents()->GetSiteInstance(); 549 SiteInstance* instance2 = contents()->GetSiteInstance();
576 EXPECT_FALSE(contents()->cross_navigation_pending()); 550 EXPECT_FALSE(contents()->cross_navigation_pending());
577 EXPECT_EQ(pending_rvh, rvh()); 551 EXPECT_EQ(pending_rvh, rvh());
578 EXPECT_NE(instance1, instance2); 552 EXPECT_NE(instance1, instance2);
579 EXPECT_TRUE(contents()->pending_rvh() == NULL); 553 EXPECT_TRUE(contents()->pending_rvh() == NULL);
580 } 554 }
581 555
582 // Test that during a slow cross-site navigation, the original renderer can 556 // Test that during a slow cross-site navigation, the original renderer can
583 // navigate to a different URL and have it displayed, canceling the slow 557 // navigate to a different URL and have it displayed, canceling the slow
584 // navigation. 558 // navigation.
585 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) { 559 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) {
586 contents()->transition_cross_site = true; 560 contents()->transition_cross_site = true;
587 TestRenderViewHost* orig_rvh = rvh(); 561 TestRenderViewHost* orig_rvh = rvh();
588 SiteInstance* instance1 = contents()->GetSiteInstance(); 562 SiteInstance* instance1 = contents()->GetSiteInstance();
589 563
590 // Navigate to URL. First URL should use first RenderViewHost. 564 // Navigate to URL. First URL should use first RenderViewHost.
591 const GURL url("http://www.google.com"); 565 const GURL url("http://www.google.com");
592 controller().LoadURL( 566 controller().LoadURL(
593 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 567 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
594 ViewHostMsg_FrameNavigate_Params params1; 568 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
595 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
596 contents()->TestDidNavigate(orig_rvh, params1);
597 EXPECT_FALSE(contents()->cross_navigation_pending()); 569 EXPECT_FALSE(contents()->cross_navigation_pending());
598 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 570 EXPECT_EQ(orig_rvh, contents()->render_view_host());
599 571
600 // Navigate to new site, simulating an onbeforeunload approval. 572 // Navigate to new site, simulating an onbeforeunload approval.
601 const GURL url2("http://www.yahoo.com"); 573 const GURL url2("http://www.yahoo.com");
602 controller().LoadURL( 574 controller().LoadURL(
603 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 575 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
604 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 576 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
605 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 577 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
606 EXPECT_TRUE(contents()->cross_navigation_pending()); 578 EXPECT_TRUE(contents()->cross_navigation_pending());
(...skipping 11 matching lines...) Expand all
618 } 590 }
619 591
620 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) { 592 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) {
621 contents()->transition_cross_site = true; 593 contents()->transition_cross_site = true;
622 594
623 // Start with NTP, which gets a new RVH with WebUI bindings. 595 // Start with NTP, which gets a new RVH with WebUI bindings.
624 const GURL url1("chrome://newtab"); 596 const GURL url1("chrome://newtab");
625 controller().LoadURL( 597 controller().LoadURL(
626 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 598 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
627 TestRenderViewHost* ntp_rvh = rvh(); 599 TestRenderViewHost* ntp_rvh = rvh();
628 ViewHostMsg_FrameNavigate_Params params1; 600 contents()->TestDidNavigate(ntp_rvh, 1, url1, content::PAGE_TRANSITION_TYPED);
629 InitNavigateParams(&params1, 1, url1, content::PAGE_TRANSITION_TYPED);
630 contents()->TestDidNavigate(ntp_rvh, params1);
631 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); 601 NavigationEntry* entry1 = controller().GetLastCommittedEntry();
632 SiteInstance* instance1 = contents()->GetSiteInstance(); 602 SiteInstance* instance1 = contents()->GetSiteInstance();
633 603
634 EXPECT_FALSE(contents()->cross_navigation_pending()); 604 EXPECT_FALSE(contents()->cross_navigation_pending());
635 EXPECT_EQ(ntp_rvh, contents()->render_view_host()); 605 EXPECT_EQ(ntp_rvh, contents()->render_view_host());
636 EXPECT_EQ(url1, entry1->url()); 606 EXPECT_EQ(url1, entry1->url());
637 EXPECT_EQ(instance1, entry1->site_instance()); 607 EXPECT_EQ(instance1, entry1->site_instance());
638 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI); 608 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI);
639 609
640 // Navigate to new site. 610 // Navigate to new site.
641 const GURL url2("http://www.google.com"); 611 const GURL url2("http://www.google.com");
642 controller().LoadURL( 612 controller().LoadURL(
643 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 613 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
644 EXPECT_TRUE(contents()->cross_navigation_pending()); 614 EXPECT_TRUE(contents()->cross_navigation_pending());
645 TestRenderViewHost* google_rvh = contents()->pending_rvh(); 615 TestRenderViewHost* google_rvh = contents()->pending_rvh();
646 616
647 // Simulate beforeunload approval. 617 // Simulate beforeunload approval.
648 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack()); 618 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack());
649 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 619 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
650 620
651 // DidNavigate from the pending page. 621 // DidNavigate from the pending page.
652 ViewHostMsg_FrameNavigate_Params params2; 622 contents()->TestDidNavigate(
653 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED); 623 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
654 contents()->TestDidNavigate(google_rvh, params2);
655 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); 624 NavigationEntry* entry2 = controller().GetLastCommittedEntry();
656 SiteInstance* instance2 = contents()->GetSiteInstance(); 625 SiteInstance* instance2 = contents()->GetSiteInstance();
657 626
658 EXPECT_FALSE(contents()->cross_navigation_pending()); 627 EXPECT_FALSE(contents()->cross_navigation_pending());
659 EXPECT_EQ(google_rvh, contents()->render_view_host()); 628 EXPECT_EQ(google_rvh, contents()->render_view_host());
660 EXPECT_NE(instance1, instance2); 629 EXPECT_NE(instance1, instance2);
661 EXPECT_FALSE(contents()->pending_rvh()); 630 EXPECT_FALSE(contents()->pending_rvh());
662 EXPECT_EQ(url2, entry2->url()); 631 EXPECT_EQ(url2, entry2->url());
663 EXPECT_EQ(instance2, entry2->site_instance()); 632 EXPECT_EQ(instance2, entry2->site_instance());
664 EXPECT_FALSE(google_rvh->enabled_bindings() & 633 EXPECT_FALSE(google_rvh->enabled_bindings() &
665 content::BINDINGS_POLICY_WEB_UI); 634 content::BINDINGS_POLICY_WEB_UI);
666 635
667 // Navigate to third page on same site. 636 // Navigate to third page on same site.
668 const GURL url3("http://news.google.com"); 637 const GURL url3("http://news.google.com");
669 controller().LoadURL( 638 controller().LoadURL(
670 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 639 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
671 EXPECT_FALSE(contents()->cross_navigation_pending()); 640 EXPECT_FALSE(contents()->cross_navigation_pending());
672 ViewHostMsg_FrameNavigate_Params params3; 641 contents()->TestDidNavigate(
673 InitNavigateParams(&params3, 2, url3, content::PAGE_TRANSITION_TYPED); 642 google_rvh, 2, url3, content::PAGE_TRANSITION_TYPED);
674 contents()->TestDidNavigate(google_rvh, params3);
675 NavigationEntry* entry3 = controller().GetLastCommittedEntry(); 643 NavigationEntry* entry3 = controller().GetLastCommittedEntry();
676 SiteInstance* instance3 = contents()->GetSiteInstance(); 644 SiteInstance* instance3 = contents()->GetSiteInstance();
677 645
678 EXPECT_FALSE(contents()->cross_navigation_pending()); 646 EXPECT_FALSE(contents()->cross_navigation_pending());
679 EXPECT_EQ(google_rvh, contents()->render_view_host()); 647 EXPECT_EQ(google_rvh, contents()->render_view_host());
680 EXPECT_EQ(instance2, instance3); 648 EXPECT_EQ(instance2, instance3);
681 EXPECT_FALSE(contents()->pending_rvh()); 649 EXPECT_FALSE(contents()->pending_rvh());
682 EXPECT_EQ(url3, entry3->url()); 650 EXPECT_EQ(url3, entry3->url());
683 EXPECT_EQ(instance3, entry3->site_instance()); 651 EXPECT_EQ(instance3, entry3->site_instance());
684 652
685 // Go back within the site. 653 // Go back within the site.
686 controller().GoBack(); 654 controller().GoBack();
687 EXPECT_FALSE(contents()->cross_navigation_pending()); 655 EXPECT_FALSE(contents()->cross_navigation_pending());
688 EXPECT_EQ(entry2, controller().pending_entry()); 656 EXPECT_EQ(entry2, controller().pending_entry());
689 657
690 // Before that commits, go back again. 658 // Before that commits, go back again.
691 controller().GoBack(); 659 controller().GoBack();
692 EXPECT_TRUE(contents()->cross_navigation_pending()); 660 EXPECT_TRUE(contents()->cross_navigation_pending());
693 EXPECT_TRUE(contents()->pending_rvh()); 661 EXPECT_TRUE(contents()->pending_rvh());
694 EXPECT_EQ(entry1, controller().pending_entry()); 662 EXPECT_EQ(entry1, controller().pending_entry());
695 663
696 // Simulate beforeunload approval. 664 // Simulate beforeunload approval.
697 EXPECT_TRUE(google_rvh->is_waiting_for_beforeunload_ack()); 665 EXPECT_TRUE(google_rvh->is_waiting_for_beforeunload_ack());
698 google_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 666 google_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
699 667
700 // DidNavigate from the first back. This aborts the second back's pending RVH. 668 // DidNavigate from the first back. This aborts the second back's pending RVH.
701 contents()->TestDidNavigate(google_rvh, params2); 669 contents()->TestDidNavigate(
670 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
702 671
703 // We should commit this page and forget about the second back. 672 // We should commit this page and forget about the second back.
704 EXPECT_FALSE(contents()->cross_navigation_pending()); 673 EXPECT_FALSE(contents()->cross_navigation_pending());
705 EXPECT_FALSE(controller().pending_entry()); 674 EXPECT_FALSE(controller().pending_entry());
706 EXPECT_EQ(google_rvh, contents()->render_view_host()); 675 EXPECT_EQ(google_rvh, contents()->render_view_host());
707 EXPECT_EQ(url2, controller().GetLastCommittedEntry()->url()); 676 EXPECT_EQ(url2, controller().GetLastCommittedEntry()->url());
708 677
709 // We should not have corrupted the NTP entry. 678 // We should not have corrupted the NTP entry.
710 EXPECT_EQ(instance3, entry3->site_instance()); 679 EXPECT_EQ(instance3, entry3->site_instance());
711 EXPECT_EQ(instance2, entry2->site_instance()); 680 EXPECT_EQ(instance2, entry2->site_instance());
712 EXPECT_EQ(instance1, entry1->site_instance()); 681 EXPECT_EQ(instance1, entry1->site_instance());
713 EXPECT_EQ(url1, entry1->url()); 682 EXPECT_EQ(url1, entry1->url());
714 } 683 }
715 684
716 // Test that during a slow cross-site navigation, a sub-frame navigation in the 685 // Test that during a slow cross-site navigation, a sub-frame navigation in the
717 // original renderer will not cancel the slow navigation (bug 42029). 686 // original renderer will not cancel the slow navigation (bug 42029).
718 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) { 687 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) {
719 contents()->transition_cross_site = true; 688 contents()->transition_cross_site = true;
720 TestRenderViewHost* orig_rvh = rvh(); 689 TestRenderViewHost* orig_rvh = rvh();
721 690
722 // Navigate to URL. First URL should use first RenderViewHost. 691 // Navigate to URL. First URL should use first RenderViewHost.
723 const GURL url("http://www.google.com"); 692 const GURL url("http://www.google.com");
724 controller().LoadURL( 693 controller().LoadURL(
725 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 694 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
726 ViewHostMsg_FrameNavigate_Params params1; 695 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
727 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
728 contents()->TestDidNavigate(orig_rvh, params1);
729 EXPECT_FALSE(contents()->cross_navigation_pending()); 696 EXPECT_FALSE(contents()->cross_navigation_pending());
730 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 697 EXPECT_EQ(orig_rvh, contents()->render_view_host());
731 698
732 // Start navigating to new site. 699 // Start navigating to new site.
733 const GURL url2("http://www.yahoo.com"); 700 const GURL url2("http://www.yahoo.com");
734 controller().LoadURL( 701 controller().LoadURL(
735 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 702 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
736 703
737 // Simulate a sub-frame navigation arriving and ensure the RVH is still 704 // Simulate a sub-frame navigation arriving and ensure the RVH is still
738 // waiting for a before unload response. 705 // waiting for a before unload response.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 738
772 // Suppose the first navigation tries to commit now, with a 739 // Suppose the first navigation tries to commit now, with a
773 // ViewMsg_Stop in flight. This should not cancel the pending navigation, 740 // ViewMsg_Stop in flight. This should not cancel the pending navigation,
774 // but it should act as if the beforeunload ack arrived. 741 // but it should act as if the beforeunload ack arrived.
775 orig_rvh->SendNavigate(1, GURL("chrome://newtab")); 742 orig_rvh->SendNavigate(1, GURL("chrome://newtab"));
776 EXPECT_TRUE(contents()->cross_navigation_pending()); 743 EXPECT_TRUE(contents()->cross_navigation_pending());
777 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 744 EXPECT_EQ(orig_rvh, contents()->render_view_host());
778 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 745 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
779 746
780 // The pending navigation should be able to commit successfully. 747 // The pending navigation should be able to commit successfully.
781 ViewHostMsg_FrameNavigate_Params params2; 748 contents()->TestDidNavigate(
782 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED); 749 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
783 contents()->TestDidNavigate(pending_rvh, params2);
784 EXPECT_FALSE(contents()->cross_navigation_pending()); 750 EXPECT_FALSE(contents()->cross_navigation_pending());
785 EXPECT_EQ(pending_rvh, contents()->render_view_host()); 751 EXPECT_EQ(pending_rvh, contents()->render_view_host());
786 } 752 }
787 753
788 // Test that the original renderer cannot preempt a cross-site navigation once 754 // Test that the original renderer cannot preempt a cross-site navigation once
789 // the unload request has been made. At this point, the cross-site navigation 755 // the unload request has been made. At this point, the cross-site navigation
790 // is almost ready to be displayed, and the original renderer is only given a 756 // is almost ready to be displayed, and the original renderer is only given a
791 // short chance to run an unload handler. Prevents regression of bug 23942. 757 // short chance to run an unload handler. Prevents regression of bug 23942.
792 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) { 758 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) {
793 contents()->transition_cross_site = true; 759 contents()->transition_cross_site = true;
794 TestRenderViewHost* orig_rvh = rvh(); 760 TestRenderViewHost* orig_rvh = rvh();
795 SiteInstance* instance1 = contents()->GetSiteInstance(); 761 SiteInstance* instance1 = contents()->GetSiteInstance();
796 762
797 // Navigate to URL. First URL should use first RenderViewHost. 763 // Navigate to URL. First URL should use first RenderViewHost.
798 const GURL url("http://www.google.com"); 764 const GURL url("http://www.google.com");
799 controller().LoadURL( 765 controller().LoadURL(
800 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 766 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
801 ViewHostMsg_FrameNavigate_Params params1; 767 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
802 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
803 contents()->TestDidNavigate(orig_rvh, params1);
804 EXPECT_FALSE(contents()->cross_navigation_pending()); 768 EXPECT_FALSE(contents()->cross_navigation_pending());
805 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 769 EXPECT_EQ(orig_rvh, contents()->render_view_host());
806 770
807 // Navigate to new site, simulating an onbeforeunload approval. 771 // Navigate to new site, simulating an onbeforeunload approval.
808 const GURL url2("http://www.yahoo.com"); 772 const GURL url2("http://www.yahoo.com");
809 controller().LoadURL( 773 controller().LoadURL(
810 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 774 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
811 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 775 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
812 EXPECT_TRUE(contents()->cross_navigation_pending()); 776 EXPECT_TRUE(contents()->cross_navigation_pending());
813 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( 777 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
(...skipping 10 matching lines...) Expand all
824 ViewHostMsg_FrameNavigate_Params params1a; 788 ViewHostMsg_FrameNavigate_Params params1a;
825 InitNavigateParams(&params1a, 2, GURL("http://www.google.com/foo"), 789 InitNavigateParams(&params1a, 2, GURL("http://www.google.com/foo"),
826 content::PAGE_TRANSITION_TYPED); 790 content::PAGE_TRANSITION_TYPED);
827 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo")); 791 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo"));
828 792
829 // Verify that the pending navigation is still in progress. 793 // Verify that the pending navigation is still in progress.
830 EXPECT_TRUE(contents()->cross_navigation_pending()); 794 EXPECT_TRUE(contents()->cross_navigation_pending());
831 EXPECT_TRUE(contents()->pending_rvh() != NULL); 795 EXPECT_TRUE(contents()->pending_rvh() != NULL);
832 796
833 // DidNavigate from the pending page should commit it. 797 // DidNavigate from the pending page should commit it.
834 ViewHostMsg_FrameNavigate_Params params2; 798 contents()->TestDidNavigate(
835 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED); 799 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
836 contents()->TestDidNavigate(pending_rvh, params2);
837 SiteInstance* instance2 = contents()->GetSiteInstance(); 800 SiteInstance* instance2 = contents()->GetSiteInstance();
838 EXPECT_FALSE(contents()->cross_navigation_pending()); 801 EXPECT_FALSE(contents()->cross_navigation_pending());
839 EXPECT_EQ(pending_rvh, rvh()); 802 EXPECT_EQ(pending_rvh, rvh());
840 EXPECT_NE(instance1, instance2); 803 EXPECT_NE(instance1, instance2);
841 EXPECT_TRUE(contents()->pending_rvh() == NULL); 804 EXPECT_TRUE(contents()->pending_rvh() == NULL);
842 } 805 }
843 806
844 // Test that a cross-site navigation that doesn't commit after the unload 807 // Test that a cross-site navigation that doesn't commit after the unload
845 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562. 808 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562.
846 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) { 809 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) {
847 contents()->transition_cross_site = true; 810 contents()->transition_cross_site = true;
848 TestRenderViewHost* orig_rvh = rvh(); 811 TestRenderViewHost* orig_rvh = rvh();
849 SiteInstance* instance1 = contents()->GetSiteInstance(); 812 SiteInstance* instance1 = contents()->GetSiteInstance();
850 813
851 // Navigate to URL. First URL should use first RenderViewHost. 814 // Navigate to URL. First URL should use first RenderViewHost.
852 const GURL url("http://www.google.com"); 815 const GURL url("http://www.google.com");
853 controller().LoadURL( 816 controller().LoadURL(
854 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 817 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
855 ViewHostMsg_FrameNavigate_Params params1; 818 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
856 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
857 contents()->TestDidNavigate(orig_rvh, params1);
858 EXPECT_FALSE(contents()->cross_navigation_pending()); 819 EXPECT_FALSE(contents()->cross_navigation_pending());
859 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 820 EXPECT_EQ(orig_rvh, contents()->render_view_host());
860 821
861 // Navigate to new site, simulating an onbeforeunload approval. 822 // Navigate to new site, simulating an onbeforeunload approval.
862 const GURL url2("http://www.yahoo.com"); 823 const GURL url2("http://www.yahoo.com");
863 controller().LoadURL( 824 controller().LoadURL(
864 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 825 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
865 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 826 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
866 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 827 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
867 EXPECT_TRUE(contents()->cross_navigation_pending()); 828 EXPECT_TRUE(contents()->cross_navigation_pending());
(...skipping 23 matching lines...) Expand all
891 TestRenderViewHost* orig_rvh = rvh(); 852 TestRenderViewHost* orig_rvh = rvh();
892 853
893 // Navigate to URL. There should be no committed entry yet. 854 // Navigate to URL. There should be no committed entry yet.
894 const GURL url("http://www.google.com"); 855 const GURL url("http://www.google.com");
895 controller().LoadURL( 856 controller().LoadURL(
896 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 857 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
897 NavigationEntry* entry = controller().GetLastCommittedEntry(); 858 NavigationEntry* entry = controller().GetLastCommittedEntry();
898 EXPECT_TRUE(entry == NULL); 859 EXPECT_TRUE(entry == NULL);
899 860
900 // Committed entry should have content state after DidNavigate. 861 // Committed entry should have content state after DidNavigate.
901 ViewHostMsg_FrameNavigate_Params params1; 862 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
902 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
903 contents()->TestDidNavigate(orig_rvh, params1);
904 entry = controller().GetLastCommittedEntry(); 863 entry = controller().GetLastCommittedEntry();
905 EXPECT_FALSE(entry->content_state().empty()); 864 EXPECT_FALSE(entry->content_state().empty());
906 865
907 // Navigate to same site. 866 // Navigate to same site.
908 const GURL url2("http://images.google.com"); 867 const GURL url2("http://images.google.com");
909 controller().LoadURL( 868 controller().LoadURL(
910 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 869 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
911 entry = controller().GetLastCommittedEntry(); 870 entry = controller().GetLastCommittedEntry();
912 EXPECT_FALSE(entry->content_state().empty()); 871 EXPECT_FALSE(entry->content_state().empty());
913 872
914 // Committed entry should have content state after DidNavigate. 873 // Committed entry should have content state after DidNavigate.
915 ViewHostMsg_FrameNavigate_Params params2; 874 contents()->TestDidNavigate(
916 InitNavigateParams(&params2, 2, url2, content::PAGE_TRANSITION_TYPED); 875 orig_rvh, 2, url2, content::PAGE_TRANSITION_TYPED);
917 contents()->TestDidNavigate(orig_rvh, params2);
918 entry = controller().GetLastCommittedEntry(); 876 entry = controller().GetLastCommittedEntry();
919 EXPECT_FALSE(entry->content_state().empty()); 877 EXPECT_FALSE(entry->content_state().empty());
920 878
921 // Now go back. Committed entry should still have content state. 879 // Now go back. Committed entry should still have content state.
922 controller().GoBack(); 880 controller().GoBack();
923 contents()->TestDidNavigate(orig_rvh, params1); 881 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
924 entry = controller().GetLastCommittedEntry(); 882 entry = controller().GetLastCommittedEntry();
925 EXPECT_FALSE(entry->content_state().empty()); 883 EXPECT_FALSE(entry->content_state().empty());
926 } 884 }
927 885
928 // Test that NavigationEntries have the correct content state after opening 886 // Test that NavigationEntries have the correct content state after opening
929 // a new window to about:blank. Prevents regression for bug 1116137. 887 // a new window to about:blank. Prevents regression for bug 1116137.
930 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) { 888 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) {
931 TestRenderViewHost* orig_rvh = rvh(); 889 TestRenderViewHost* orig_rvh = rvh();
932 890
933 // When opening a new window, it is navigated to about:blank internally. 891 // When opening a new window, it is navigated to about:blank internally.
934 // Currently, this results in two DidNavigate events. 892 // Currently, this results in two DidNavigate events.
935 const GURL url(chrome::kAboutBlankURL); 893 const GURL url(chrome::kAboutBlankURL);
936 ViewHostMsg_FrameNavigate_Params params1; 894 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
937 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED); 895 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
938 contents()->TestDidNavigate(orig_rvh, params1);
939 contents()->TestDidNavigate(orig_rvh, params1);
940 896
941 // Should have a content state here. 897 // Should have a content state here.
942 NavigationEntry* entry = controller().GetLastCommittedEntry(); 898 NavigationEntry* entry = controller().GetLastCommittedEntry();
943 EXPECT_FALSE(entry->content_state().empty()); 899 EXPECT_FALSE(entry->content_state().empty());
944 } 900 }
945 901
946 // Tests to see that webkit preferences are properly loaded and copied over 902 // Tests to see that webkit preferences are properly loaded and copied over
947 // to a WebPreferences object. 903 // to a WebPreferences object.
948 TEST_F(TabContentsTest, WebKitPrefs) { 904 TEST_F(TabContentsTest, WebKitPrefs) {
949 WebPreferences webkit_prefs = contents()->TestGetWebkitPrefs(); 905 WebPreferences webkit_prefs = contents()->TestGetWebkitPrefs();
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after
1696 // showing. 1652 // showing.
1697 TEST_F(TabContentsTest, NoJSMessageOnInterstitials) { 1653 TEST_F(TabContentsTest, NoJSMessageOnInterstitials) {
1698 const char kUrl[] = "http://www.badguys.com/"; 1654 const char kUrl[] = "http://www.badguys.com/";
1699 const GURL kGURL(kUrl); 1655 const GURL kGURL(kUrl);
1700 1656
1701 // Start a navigation to a page 1657 // Start a navigation to a page
1702 contents()->controller().LoadURL( 1658 contents()->controller().LoadURL(
1703 kGURL, content::Referrer(), content::PAGE_TRANSITION_TYPED, 1659 kGURL, content::Referrer(), content::PAGE_TRANSITION_TYPED,
1704 std::string()); 1660 std::string());
1705 // DidNavigate from the page 1661 // DidNavigate from the page
1706 ViewHostMsg_FrameNavigate_Params params; 1662 contents()->TestDidNavigate(rvh(), 1, kGURL, content::PAGE_TRANSITION_TYPED);
1707 InitNavigateParams(&params, 1, kGURL, content::PAGE_TRANSITION_TYPED);
1708 contents()->TestDidNavigate(rvh(), params);
1709 1663
1710 // Simulate showing an interstitial while the page is showing. 1664 // Simulate showing an interstitial while the page is showing.
1711 TestInterstitialPage::InterstitialState state = 1665 TestInterstitialPage::InterstitialState state =
1712 TestInterstitialPage::UNDECIDED; 1666 TestInterstitialPage::UNDECIDED;
1713 bool deleted = false; 1667 bool deleted = false;
1714 TestInterstitialPage* interstitial = 1668 TestInterstitialPage* interstitial =
1715 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); 1669 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted);
1716 TestInterstitialPageStateGuard state_guard(interstitial); 1670 TestInterstitialPageStateGuard state_guard(interstitial);
1717 interstitial->Show(); 1671 interstitial->Show();
1718 interstitial->TestDidNavigate(1, kGURL); 1672 interstitial->TestDidNavigate(1, kGURL);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 1768
1815 // It should have a transient entry. 1769 // It should have a transient entry.
1816 EXPECT_TRUE(other_controller.GetTransientEntry()); 1770 EXPECT_TRUE(other_controller.GetTransientEntry());
1817 1771
1818 // And the interstitial should be showing. 1772 // And the interstitial should be showing.
1819 EXPECT_TRUE(other_contents->showing_interstitial_page()); 1773 EXPECT_TRUE(other_contents->showing_interstitial_page());
1820 1774
1821 // And the interstitial should do a reload on don't proceed. 1775 // And the interstitial should do a reload on don't proceed.
1822 EXPECT_TRUE(other_contents->interstitial_page()->reload_on_dont_proceed()); 1776 EXPECT_TRUE(other_contents->interstitial_page()->reload_on_dont_proceed());
1823 } 1777 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698