OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #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 "content/browser/mock_content_browser_client.h" | 7 #include "content/browser/mock_content_browser_client.h" |
| 8 #include "content/browser/renderer_host/mock_render_process_host.h" |
8 #include "content/browser/renderer_host/render_view_host_impl.h" | 9 #include "content/browser/renderer_host/render_view_host_impl.h" |
9 #include "content/browser/renderer_host/test_render_view_host.h" | 10 #include "content/browser/renderer_host/test_render_view_host.h" |
10 #include "content/browser/site_instance_impl.h" | 11 #include "content/browser/site_instance_impl.h" |
11 #include "content/browser/tab_contents/interstitial_page_impl.h" | 12 #include "content/browser/tab_contents/interstitial_page_impl.h" |
12 #include "content/browser/tab_contents/navigation_entry_impl.h" | 13 #include "content/browser/tab_contents/navigation_entry_impl.h" |
13 #include "content/browser/tab_contents/test_tab_contents.h" | 14 #include "content/browser/tab_contents/test_tab_contents.h" |
14 #include "content/common/view_messages.h" | 15 #include "content/common/view_messages.h" |
15 #include "content/public/browser/interstitial_page_delegate.h" | 16 #include "content/public/browser/interstitial_page_delegate.h" |
16 #include "content/public/browser/navigation_details.h" | 17 #include "content/public/browser/navigation_details.h" |
17 #include "content/public/browser/notification_details.h" | 18 #include "content/public/browser/notification_details.h" |
18 #include "content/public/browser/notification_source.h" | 19 #include "content/public/browser/notification_source.h" |
19 #include "content/public/browser/notification_source.h" | 20 #include "content/public/browser/notification_source.h" |
20 #include "content/public/browser/render_widget_host_view.h" | 21 #include "content/public/browser/render_widget_host_view.h" |
21 #include "content/public/browser/web_ui_controller.h" | 22 #include "content/public/browser/web_ui_controller.h" |
22 #include "content/public/browser/web_ui_controller_factory.h" | 23 #include "content/public/browser/web_ui_controller_factory.h" |
23 #include "content/public/common/bindings_policy.h" | 24 #include "content/public/common/bindings_policy.h" |
24 #include "content/public/common/content_constants.h" | 25 #include "content/public/common/content_constants.h" |
25 #include "content/public/common/url_constants.h" | 26 #include "content/public/common/url_constants.h" |
26 #include "content/test/test_browser_thread.h" | 27 #include "content/test/test_browser_thread.h" |
27 #include "googleurl/src/url_util.h" | 28 #include "googleurl/src/url_util.h" |
28 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
29 #include "webkit/glue/webkit_glue.h" | 30 #include "webkit/glue/webkit_glue.h" |
30 | 31 |
31 using content::BrowserContext; | 32 using content::BrowserContext; |
32 using content::BrowserThread; | 33 using content::BrowserThread; |
33 using content::InterstitialPage; | 34 using content::InterstitialPage; |
34 using content::NavigationEntry; | 35 using content::NavigationEntry; |
35 using content::NavigationEntryImpl; | 36 using content::NavigationEntryImpl; |
36 using content::SiteInstance; | 37 using content::SiteInstance; |
| 38 using content::RenderViewHost; |
| 39 using content::RenderViewHostImplTestHarness; |
37 using content::TestRenderViewHost; | 40 using content::TestRenderViewHost; |
38 using content::WebContents; | 41 using content::WebContents; |
39 using content::WebUI; | 42 using content::WebUI; |
40 using content::WebUIController; | 43 using content::WebUIController; |
41 using webkit::forms::PasswordForm; | 44 using webkit::forms::PasswordForm; |
42 | 45 |
43 namespace { | 46 namespace { |
44 | 47 |
45 class TabContentsTestWebUIControllerFactory | 48 class TabContentsTestWebUIControllerFactory |
46 : public content::WebUIControllerFactory { | 49 : public content::WebUIControllerFactory { |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 250 |
248 virtual void TestInterstitialPageDeleted(TestInterstitialPage* interstitial) { | 251 virtual void TestInterstitialPageDeleted(TestInterstitialPage* interstitial) { |
249 DCHECK(interstitial_page_ == interstitial); | 252 DCHECK(interstitial_page_ == interstitial); |
250 interstitial_page_ = NULL; | 253 interstitial_page_ = NULL; |
251 } | 254 } |
252 | 255 |
253 private: | 256 private: |
254 TestInterstitialPage* interstitial_page_; | 257 TestInterstitialPage* interstitial_page_; |
255 }; | 258 }; |
256 | 259 |
257 class TabContentsTest : public RenderViewHostTestHarness { | 260 class TabContentsTest : public RenderViewHostImplTestHarness { |
258 public: | 261 public: |
259 TabContentsTest() | 262 TabContentsTest() |
260 : ui_thread_(BrowserThread::UI, &message_loop_), | 263 : ui_thread_(BrowserThread::UI, &message_loop_), |
261 old_browser_client_(NULL) { | 264 old_browser_client_(NULL) { |
262 } | 265 } |
263 | 266 |
264 virtual void SetUp() { | 267 virtual void SetUp() { |
265 // These tests treat tabcontentstest as a privileged WebUI scheme. | 268 // These tests treat tabcontentstest as a privileged WebUI scheme. |
266 // We must register it similarly to kChromeUIScheme. | 269 // We must register it similarly to kChromeUIScheme. |
267 url_util::AddStandardScheme("tabcontentstest"); | 270 url_util::AddStandardScheme("tabcontentstest"); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 EXPECT_EQ(-1, contents()->GetMaxPageIDForSiteInstance(instance2)); | 346 EXPECT_EQ(-1, contents()->GetMaxPageIDForSiteInstance(instance2)); |
344 | 347 |
345 contents()->UpdateMaxPageIDForSiteInstance(instance2, 7); | 348 contents()->UpdateMaxPageIDForSiteInstance(instance2, 7); |
346 EXPECT_EQ(3, contents()->GetMaxPageID()); | 349 EXPECT_EQ(3, contents()->GetMaxPageID()); |
347 EXPECT_EQ(3, contents()->GetMaxPageIDForSiteInstance(instance1)); | 350 EXPECT_EQ(3, contents()->GetMaxPageIDForSiteInstance(instance1)); |
348 EXPECT_EQ(7, contents()->GetMaxPageIDForSiteInstance(instance2)); | 351 EXPECT_EQ(7, contents()->GetMaxPageIDForSiteInstance(instance2)); |
349 } | 352 } |
350 | 353 |
351 // Test simple same-SiteInstance navigation. | 354 // Test simple same-SiteInstance navigation. |
352 TEST_F(TabContentsTest, SimpleNavigation) { | 355 TEST_F(TabContentsTest, SimpleNavigation) { |
353 TestRenderViewHost* orig_rvh = rvh(); | 356 TestRenderViewHost* orig_rvh = test_rvh(); |
354 SiteInstance* instance1 = contents()->GetSiteInstance(); | 357 SiteInstance* instance1 = contents()->GetSiteInstance(); |
355 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 358 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
356 | 359 |
357 // Navigate to URL | 360 // Navigate to URL |
358 const GURL url("http://www.google.com"); | 361 const GURL url("http://www.google.com"); |
359 controller().LoadURL( | 362 controller().LoadURL( |
360 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 363 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
361 EXPECT_FALSE(contents()->cross_navigation_pending()); | 364 EXPECT_FALSE(contents()->cross_navigation_pending()); |
362 EXPECT_EQ(instance1, orig_rvh->GetSiteInstance()); | 365 EXPECT_EQ(instance1, orig_rvh->GetSiteInstance()); |
363 // Controller's pending entry will have a NULL site instance until we assign | 366 // Controller's pending entry will have a NULL site instance until we assign |
(...skipping 24 matching lines...) Expand all Loading... |
388 controller().LoadURL( | 391 controller().LoadURL( |
389 url, content::Referrer(), content::PAGE_TRANSITION_GENERATED, | 392 url, content::Referrer(), content::PAGE_TRANSITION_GENERATED, |
390 std::string()); | 393 std::string()); |
391 EXPECT_TRUE(controller().GetActiveEntry() == NULL); | 394 EXPECT_TRUE(controller().GetActiveEntry() == NULL); |
392 } | 395 } |
393 | 396 |
394 // Test that navigating across a site boundary creates a new RenderViewHost | 397 // Test that navigating across a site boundary creates a new RenderViewHost |
395 // with a new SiteInstance. Going back should do the same. | 398 // with a new SiteInstance. Going back should do the same. |
396 TEST_F(TabContentsTest, CrossSiteBoundaries) { | 399 TEST_F(TabContentsTest, CrossSiteBoundaries) { |
397 contents()->transition_cross_site = true; | 400 contents()->transition_cross_site = true; |
398 TestRenderViewHost* orig_rvh = rvh(); | 401 TestRenderViewHost* orig_rvh = test_rvh(); |
399 int orig_rvh_delete_count = 0; | 402 int orig_rvh_delete_count = 0; |
400 orig_rvh->set_delete_counter(&orig_rvh_delete_count); | 403 orig_rvh->set_delete_counter(&orig_rvh_delete_count); |
401 SiteInstance* instance1 = contents()->GetSiteInstance(); | 404 SiteInstance* instance1 = contents()->GetSiteInstance(); |
402 | 405 |
403 // Navigate to URL. First URL should use first RenderViewHost. | 406 // Navigate to URL. First URL should use first RenderViewHost. |
404 const GURL url("http://www.google.com"); | 407 const GURL url("http://www.google.com"); |
405 controller().LoadURL( | 408 controller().LoadURL( |
406 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 409 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
407 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 410 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
408 | 411 |
409 EXPECT_FALSE(contents()->cross_navigation_pending()); | 412 EXPECT_FALSE(contents()->cross_navigation_pending()); |
410 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 413 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
411 | 414 |
412 // Navigate to new site | 415 // Navigate to new site |
413 const GURL url2("http://www.yahoo.com"); | 416 const GURL url2("http://www.yahoo.com"); |
414 controller().LoadURL( | 417 controller().LoadURL( |
415 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 418 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
416 EXPECT_TRUE(contents()->cross_navigation_pending()); | 419 EXPECT_TRUE(contents()->cross_navigation_pending()); |
417 TestRenderViewHost* pending_rvh = contents()->pending_rvh(); | 420 TestRenderViewHost* pending_rvh = |
| 421 static_cast<TestRenderViewHost*>(contents()->pending_rvh()); |
418 int pending_rvh_delete_count = 0; | 422 int pending_rvh_delete_count = 0; |
419 pending_rvh->set_delete_counter(&pending_rvh_delete_count); | 423 pending_rvh->set_delete_counter(&pending_rvh_delete_count); |
420 | 424 |
421 // Navigations should be suspended in pending_rvh until ShouldCloseACK. | 425 // Navigations should be suspended in pending_rvh until ShouldCloseACK. |
422 EXPECT_TRUE(pending_rvh->are_navigations_suspended()); | 426 EXPECT_TRUE(pending_rvh->are_navigations_suspended()); |
423 orig_rvh->SendShouldCloseACK(true); | 427 orig_rvh->SendShouldCloseACK(true); |
424 EXPECT_FALSE(pending_rvh->are_navigations_suspended()); | 428 EXPECT_FALSE(pending_rvh->are_navigations_suspended()); |
425 | 429 |
426 // DidNavigate from the pending page | 430 // DidNavigate from the pending page |
427 contents()->TestDidNavigate( | 431 contents()->TestDidNavigate( |
428 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); | 432 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); |
429 SiteInstance* instance2 = contents()->GetSiteInstance(); | 433 SiteInstance* instance2 = contents()->GetSiteInstance(); |
430 | 434 |
431 EXPECT_FALSE(contents()->cross_navigation_pending()); | 435 EXPECT_FALSE(contents()->cross_navigation_pending()); |
432 EXPECT_EQ(pending_rvh, contents()->GetRenderViewHost()); | 436 EXPECT_EQ(pending_rvh, contents()->GetRenderViewHost()); |
433 EXPECT_NE(instance1, instance2); | 437 EXPECT_NE(instance1, instance2); |
434 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 438 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
435 // We keep the original RVH around, swapped out. | 439 // We keep the original RVH around, swapped out. |
436 EXPECT_TRUE(contents()->GetRenderManagerForTesting()->IsSwappedOut(orig_rvh)); | 440 EXPECT_TRUE(contents()->GetRenderManagerForTesting()->IsSwappedOut(orig_rvh)); |
437 EXPECT_EQ(orig_rvh_delete_count, 0); | 441 EXPECT_EQ(orig_rvh_delete_count, 0); |
438 | 442 |
439 // Going back should switch SiteInstances again. The first SiteInstance is | 443 // Going back should switch SiteInstances again. The first SiteInstance is |
440 // stored in the NavigationEntry, so it should be the same as at the start. | 444 // stored in the NavigationEntry, so it should be the same as at the start. |
441 // We should use the same RVH as before, swapping it back in. | 445 // We should use the same RVH as before, swapping it back in. |
442 controller().GoBack(); | 446 controller().GoBack(); |
443 TestRenderViewHost* goback_rvh = contents()->pending_rvh(); | 447 TestRenderViewHost* goback_rvh = |
| 448 static_cast<TestRenderViewHost*>(contents()->pending_rvh()); |
444 EXPECT_EQ(orig_rvh, goback_rvh); | 449 EXPECT_EQ(orig_rvh, goback_rvh); |
445 EXPECT_TRUE(contents()->cross_navigation_pending()); | 450 EXPECT_TRUE(contents()->cross_navigation_pending()); |
446 | 451 |
447 // Navigations should be suspended in goback_rvh until ShouldCloseACK. | 452 // Navigations should be suspended in goback_rvh until ShouldCloseACK. |
448 EXPECT_TRUE(goback_rvh->are_navigations_suspended()); | 453 EXPECT_TRUE(goback_rvh->are_navigations_suspended()); |
449 pending_rvh->SendShouldCloseACK(true); | 454 pending_rvh->SendShouldCloseACK(true); |
450 EXPECT_FALSE(goback_rvh->are_navigations_suspended()); | 455 EXPECT_FALSE(goback_rvh->are_navigations_suspended()); |
451 | 456 |
452 // DidNavigate from the back action | 457 // DidNavigate from the back action |
453 contents()->TestDidNavigate( | 458 contents()->TestDidNavigate( |
454 goback_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); | 459 goback_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); |
455 EXPECT_FALSE(contents()->cross_navigation_pending()); | 460 EXPECT_FALSE(contents()->cross_navigation_pending()); |
456 EXPECT_EQ(goback_rvh, contents()->GetRenderViewHost()); | 461 EXPECT_EQ(goback_rvh, contents()->GetRenderViewHost()); |
457 EXPECT_EQ(instance1, contents()->GetSiteInstance()); | 462 EXPECT_EQ(instance1, contents()->GetSiteInstance()); |
458 // The pending RVH should now be swapped out, not deleted. | 463 // The pending RVH should now be swapped out, not deleted. |
459 EXPECT_TRUE(contents()->GetRenderManagerForTesting()-> | 464 EXPECT_TRUE(contents()->GetRenderManagerForTesting()-> |
460 IsSwappedOut(pending_rvh)); | 465 IsSwappedOut(pending_rvh)); |
461 EXPECT_EQ(pending_rvh_delete_count, 0); | 466 EXPECT_EQ(pending_rvh_delete_count, 0); |
462 | 467 |
463 // Close tab and ensure RVHs are deleted. | 468 // Close tab and ensure RVHs are deleted. |
464 DeleteContents(); | 469 DeleteContents(); |
465 EXPECT_EQ(orig_rvh_delete_count, 1); | 470 EXPECT_EQ(orig_rvh_delete_count, 1); |
466 EXPECT_EQ(pending_rvh_delete_count, 1); | 471 EXPECT_EQ(pending_rvh_delete_count, 1); |
467 } | 472 } |
468 | 473 |
469 // Test that navigating across a site boundary after a crash creates a new | 474 // Test that navigating across a site boundary after a crash creates a new |
470 // RVH without requiring a cross-site transition (i.e., PENDING state). | 475 // RVH without requiring a cross-site transition (i.e., PENDING state). |
471 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) { | 476 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) { |
472 contents()->transition_cross_site = true; | 477 contents()->transition_cross_site = true; |
473 TestRenderViewHost* orig_rvh = rvh(); | 478 TestRenderViewHost* orig_rvh = test_rvh(); |
474 int orig_rvh_delete_count = 0; | 479 int orig_rvh_delete_count = 0; |
475 orig_rvh->set_delete_counter(&orig_rvh_delete_count); | 480 orig_rvh->set_delete_counter(&orig_rvh_delete_count); |
476 SiteInstance* instance1 = contents()->GetSiteInstance(); | 481 SiteInstance* instance1 = contents()->GetSiteInstance(); |
477 | 482 |
478 // Navigate to URL. First URL should use first RenderViewHost. | 483 // Navigate to URL. First URL should use first RenderViewHost. |
479 const GURL url("http://www.google.com"); | 484 const GURL url("http://www.google.com"); |
480 controller().LoadURL( | 485 controller().LoadURL( |
481 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 486 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
482 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 487 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
483 | 488 |
484 EXPECT_FALSE(contents()->cross_navigation_pending()); | 489 EXPECT_FALSE(contents()->cross_navigation_pending()); |
485 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 490 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
486 | 491 |
487 // Crash the renderer. | 492 // Crash the renderer. |
488 orig_rvh->set_render_view_created(false); | 493 orig_rvh->set_render_view_created(false); |
489 | 494 |
490 // Navigate to new site. We should not go into PENDING. | 495 // Navigate to new site. We should not go into PENDING. |
491 const GURL url2("http://www.yahoo.com"); | 496 const GURL url2("http://www.yahoo.com"); |
492 controller().LoadURL( | 497 controller().LoadURL( |
493 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 498 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
494 TestRenderViewHost* new_rvh = rvh(); | 499 RenderViewHost* new_rvh = rvh(); |
495 EXPECT_FALSE(contents()->cross_navigation_pending()); | 500 EXPECT_FALSE(contents()->cross_navigation_pending()); |
496 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 501 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
497 EXPECT_NE(orig_rvh, new_rvh); | 502 EXPECT_NE(orig_rvh, new_rvh); |
498 EXPECT_EQ(orig_rvh_delete_count, 1); | 503 EXPECT_EQ(orig_rvh_delete_count, 1); |
499 | 504 |
500 // DidNavigate from the new page | 505 // DidNavigate from the new page |
501 contents()->TestDidNavigate(new_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); | 506 contents()->TestDidNavigate(new_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); |
502 SiteInstance* instance2 = contents()->GetSiteInstance(); | 507 SiteInstance* instance2 = contents()->GetSiteInstance(); |
503 | 508 |
504 EXPECT_FALSE(contents()->cross_navigation_pending()); | 509 EXPECT_FALSE(contents()->cross_navigation_pending()); |
505 EXPECT_EQ(new_rvh, rvh()); | 510 EXPECT_EQ(new_rvh, rvh()); |
506 EXPECT_NE(instance1, instance2); | 511 EXPECT_NE(instance1, instance2); |
507 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 512 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
508 | 513 |
509 // Close tab and ensure RVHs are deleted. | 514 // Close tab and ensure RVHs are deleted. |
510 DeleteContents(); | 515 DeleteContents(); |
511 EXPECT_EQ(orig_rvh_delete_count, 1); | 516 EXPECT_EQ(orig_rvh_delete_count, 1); |
512 } | 517 } |
513 | 518 |
514 // Test that opening a new tab in the same SiteInstance and then navigating | 519 // Test that opening a new tab in the same SiteInstance and then navigating |
515 // both tabs to a new site will place both tabs in a single SiteInstance. | 520 // both tabs to a new site will place both tabs in a single SiteInstance. |
516 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) { | 521 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) { |
517 contents()->transition_cross_site = true; | 522 contents()->transition_cross_site = true; |
518 TestRenderViewHost* orig_rvh = rvh(); | 523 TestRenderViewHost* orig_rvh = test_rvh(); |
519 SiteInstance* instance1 = contents()->GetSiteInstance(); | 524 SiteInstance* instance1 = contents()->GetSiteInstance(); |
520 | 525 |
521 // Navigate to URL. First URL should use first RenderViewHost. | 526 // Navigate to URL. First URL should use first RenderViewHost. |
522 const GURL url("http://www.google.com"); | 527 const GURL url("http://www.google.com"); |
523 controller().LoadURL( | 528 controller().LoadURL( |
524 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 529 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
525 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 530 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
526 | 531 |
527 // Open a new tab with the same SiteInstance, navigated to the same site. | 532 // Open a new tab with the same SiteInstance, navigated to the same site. |
528 TestTabContents contents2(browser_context_.get(), instance1); | 533 TestTabContents contents2(browser_context_.get(), instance1); |
529 contents2.transition_cross_site = true; | 534 contents2.transition_cross_site = true; |
530 contents2.GetController().LoadURL(url, content::Referrer(), | 535 contents2.GetController().LoadURL(url, content::Referrer(), |
531 content::PAGE_TRANSITION_TYPED, | 536 content::PAGE_TRANSITION_TYPED, |
532 std::string()); | 537 std::string()); |
533 // Need this page id to be 2 since the site instance is the same (which is the | 538 // Need this page id to be 2 since the site instance is the same (which is the |
534 // scope of page IDs) and we want to consider this a new page. | 539 // scope of page IDs) and we want to consider this a new page. |
535 contents2.TestDidNavigate( | 540 contents2.TestDidNavigate( |
536 contents2.GetRenderViewHost(), 2, url, content::PAGE_TRANSITION_TYPED); | 541 contents2.GetRenderViewHost(), 2, url, content::PAGE_TRANSITION_TYPED); |
537 | 542 |
538 // Navigate first tab to a new site | 543 // Navigate first tab to a new site |
539 const GURL url2a("http://www.yahoo.com"); | 544 const GURL url2a("http://www.yahoo.com"); |
540 controller().LoadURL( | 545 controller().LoadURL( |
541 url2a, content::Referrer(), content::PAGE_TRANSITION_TYPED, | 546 url2a, content::Referrer(), content::PAGE_TRANSITION_TYPED, |
542 std::string()); | 547 std::string()); |
543 orig_rvh->SendShouldCloseACK(true); | 548 orig_rvh->SendShouldCloseACK(true); |
544 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh(); | 549 TestRenderViewHost* pending_rvh_a = |
| 550 static_cast<TestRenderViewHost*>(contents()->pending_rvh()); |
545 contents()->TestDidNavigate( | 551 contents()->TestDidNavigate( |
546 pending_rvh_a, 1, url2a, content::PAGE_TRANSITION_TYPED); | 552 pending_rvh_a, 1, url2a, content::PAGE_TRANSITION_TYPED); |
547 SiteInstance* instance2a = contents()->GetSiteInstance(); | 553 SiteInstance* instance2a = contents()->GetSiteInstance(); |
548 EXPECT_NE(instance1, instance2a); | 554 EXPECT_NE(instance1, instance2a); |
549 | 555 |
550 // Navigate second tab to the same site as the first tab | 556 // Navigate second tab to the same site as the first tab |
551 const GURL url2b("http://mail.yahoo.com"); | 557 const GURL url2b("http://mail.yahoo.com"); |
552 contents2.GetController().LoadURL(url2b, content::Referrer(), | 558 contents2.GetController().LoadURL(url2b, content::Referrer(), |
553 content::PAGE_TRANSITION_TYPED, | 559 content::PAGE_TRANSITION_TYPED, |
554 std::string()); | 560 std::string()); |
555 TestRenderViewHost* rvh2 = | 561 TestRenderViewHost* rvh2 = |
556 static_cast<TestRenderViewHost*>(contents2.GetRenderViewHost()); | 562 static_cast<TestRenderViewHost*>(contents2.GetRenderViewHost()); |
557 rvh2->SendShouldCloseACK(true); | 563 rvh2->SendShouldCloseACK(true); |
558 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh(); | 564 TestRenderViewHost* pending_rvh_b = |
| 565 static_cast<TestRenderViewHost*>(contents2.pending_rvh()); |
559 EXPECT_TRUE(pending_rvh_b != NULL); | 566 EXPECT_TRUE(pending_rvh_b != NULL); |
560 EXPECT_TRUE(contents2.cross_navigation_pending()); | 567 EXPECT_TRUE(contents2.cross_navigation_pending()); |
561 | 568 |
562 // NOTE(creis): We used to be in danger of showing a sad tab page here if the | 569 // NOTE(creis): We used to be in danger of showing a sad tab page here if the |
563 // second tab hadn't navigated somewhere first (bug 1145430). That case is | 570 // second tab hadn't navigated somewhere first (bug 1145430). That case is |
564 // now covered by the CrossSiteBoundariesAfterCrash test. | 571 // now covered by the CrossSiteBoundariesAfterCrash test. |
565 contents2.TestDidNavigate( | 572 contents2.TestDidNavigate( |
566 pending_rvh_b, 2, url2b, content::PAGE_TRANSITION_TYPED); | 573 pending_rvh_b, 2, url2b, content::PAGE_TRANSITION_TYPED); |
567 SiteInstance* instance2b = contents2.GetSiteInstance(); | 574 SiteInstance* instance2b = contents2.GetSiteInstance(); |
568 EXPECT_NE(instance1, instance2b); | 575 EXPECT_NE(instance1, instance2b); |
569 | 576 |
570 // Both tabs should now be in the same SiteInstance. | 577 // Both tabs should now be in the same SiteInstance. |
571 EXPECT_EQ(instance2a, instance2b); | 578 EXPECT_EQ(instance2a, instance2b); |
572 } | 579 } |
573 | 580 |
574 // Tests that TabContents uses the current URL, not the SiteInstance's site, to | 581 // Tests that TabContents uses the current URL, not the SiteInstance's site, to |
575 // determine whether a navigation is cross-site. | 582 // determine whether a navigation is cross-site. |
576 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) { | 583 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) { |
577 contents()->transition_cross_site = true; | 584 contents()->transition_cross_site = true; |
578 TestRenderViewHost* orig_rvh = rvh(); | 585 RenderViewHost* orig_rvh = rvh(); |
579 SiteInstance* instance1 = contents()->GetSiteInstance(); | 586 SiteInstance* instance1 = contents()->GetSiteInstance(); |
580 | 587 |
581 // Navigate to URL. | 588 // Navigate to URL. |
582 const GURL url("http://www.google.com"); | 589 const GURL url("http://www.google.com"); |
583 controller().LoadURL( | 590 controller().LoadURL( |
584 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 591 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
585 contents()->TestDidNavigate( | 592 contents()->TestDidNavigate( |
586 orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 593 orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
587 | 594 |
588 // Open a related tab to a second site. | 595 // Open a related tab to a second site. |
(...skipping 30 matching lines...) Expand all Loading... |
619 contents()->TestDidNavigate( | 626 contents()->TestDidNavigate( |
620 orig_rvh, 3, url3, content::PAGE_TRANSITION_TYPED); | 627 orig_rvh, 3, url3, content::PAGE_TRANSITION_TYPED); |
621 SiteInstance* instance4 = contents()->GetSiteInstance(); | 628 SiteInstance* instance4 = contents()->GetSiteInstance(); |
622 EXPECT_EQ(instance1, instance4); | 629 EXPECT_EQ(instance1, instance4); |
623 } | 630 } |
624 | 631 |
625 // Test that the onbeforeunload and onunload handlers run when navigating | 632 // Test that the onbeforeunload and onunload handlers run when navigating |
626 // across site boundaries. | 633 // across site boundaries. |
627 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) { | 634 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) { |
628 contents()->transition_cross_site = true; | 635 contents()->transition_cross_site = true; |
629 TestRenderViewHost* orig_rvh = rvh(); | 636 TestRenderViewHost* orig_rvh = test_rvh(); |
630 SiteInstance* instance1 = contents()->GetSiteInstance(); | 637 SiteInstance* instance1 = contents()->GetSiteInstance(); |
631 | 638 |
632 // Navigate to URL. First URL should use first RenderViewHost. | 639 // Navigate to URL. First URL should use first RenderViewHost. |
633 const GURL url("http://www.google.com"); | 640 const GURL url("http://www.google.com"); |
634 controller().LoadURL( | 641 controller().LoadURL( |
635 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 642 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
636 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 643 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
637 EXPECT_FALSE(contents()->cross_navigation_pending()); | 644 EXPECT_FALSE(contents()->cross_navigation_pending()); |
638 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 645 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
639 | 646 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 EXPECT_EQ(pending_rvh, rvh()); | 678 EXPECT_EQ(pending_rvh, rvh()); |
672 EXPECT_NE(instance1, instance2); | 679 EXPECT_NE(instance1, instance2); |
673 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 680 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
674 } | 681 } |
675 | 682 |
676 // Test that during a slow cross-site navigation, the original renderer can | 683 // Test that during a slow cross-site navigation, the original renderer can |
677 // navigate to a different URL and have it displayed, canceling the slow | 684 // navigate to a different URL and have it displayed, canceling the slow |
678 // navigation. | 685 // navigation. |
679 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) { | 686 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) { |
680 contents()->transition_cross_site = true; | 687 contents()->transition_cross_site = true; |
681 TestRenderViewHost* orig_rvh = rvh(); | 688 TestRenderViewHost* orig_rvh = test_rvh(); |
682 SiteInstance* instance1 = contents()->GetSiteInstance(); | 689 SiteInstance* instance1 = contents()->GetSiteInstance(); |
683 | 690 |
684 // Navigate to URL. First URL should use first RenderViewHost. | 691 // Navigate to URL. First URL should use first RenderViewHost. |
685 const GURL url("http://www.google.com"); | 692 const GURL url("http://www.google.com"); |
686 controller().LoadURL( | 693 controller().LoadURL( |
687 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 694 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
688 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 695 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
689 EXPECT_FALSE(contents()->cross_navigation_pending()); | 696 EXPECT_FALSE(contents()->cross_navigation_pending()); |
690 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 697 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
691 | 698 |
(...skipping 18 matching lines...) Expand all Loading... |
710 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 717 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
711 } | 718 } |
712 | 719 |
713 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) { | 720 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) { |
714 contents()->transition_cross_site = true; | 721 contents()->transition_cross_site = true; |
715 | 722 |
716 // Start with a web ui page, which gets a new RVH with WebUI bindings. | 723 // Start with a web ui page, which gets a new RVH with WebUI bindings. |
717 const GURL url1("tabcontentstest://blah"); | 724 const GURL url1("tabcontentstest://blah"); |
718 controller().LoadURL( | 725 controller().LoadURL( |
719 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 726 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
720 TestRenderViewHost* ntp_rvh = rvh(); | 727 TestRenderViewHost* ntp_rvh = test_rvh(); |
721 contents()->TestDidNavigate(ntp_rvh, 1, url1, content::PAGE_TRANSITION_TYPED); | 728 contents()->TestDidNavigate(ntp_rvh, 1, url1, content::PAGE_TRANSITION_TYPED); |
722 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); | 729 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); |
723 SiteInstance* instance1 = contents()->GetSiteInstance(); | 730 SiteInstance* instance1 = contents()->GetSiteInstance(); |
724 | 731 |
725 EXPECT_FALSE(contents()->cross_navigation_pending()); | 732 EXPECT_FALSE(contents()->cross_navigation_pending()); |
726 EXPECT_EQ(ntp_rvh, contents()->GetRenderViewHost()); | 733 EXPECT_EQ(ntp_rvh, contents()->GetRenderViewHost()); |
727 EXPECT_EQ(url1, entry1->GetURL()); | 734 EXPECT_EQ(url1, entry1->GetURL()); |
728 EXPECT_EQ(instance1, | 735 EXPECT_EQ(instance1, |
729 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance()); | 736 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance()); |
730 EXPECT_TRUE(ntp_rvh->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI); | 737 EXPECT_TRUE(ntp_rvh->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI); |
731 | 738 |
732 // Navigate to new site. | 739 // Navigate to new site. |
733 const GURL url2("http://www.google.com"); | 740 const GURL url2("http://www.google.com"); |
734 controller().LoadURL( | 741 controller().LoadURL( |
735 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 742 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
736 EXPECT_TRUE(contents()->cross_navigation_pending()); | 743 EXPECT_TRUE(contents()->cross_navigation_pending()); |
737 TestRenderViewHost* google_rvh = contents()->pending_rvh(); | 744 TestRenderViewHost* google_rvh = |
| 745 static_cast<TestRenderViewHost*>(contents()->pending_rvh()); |
738 | 746 |
739 // Simulate beforeunload approval. | 747 // Simulate beforeunload approval. |
740 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack()); | 748 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack()); |
741 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK( | 749 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK( |
742 0, true, base::TimeTicks(), base::TimeTicks())); | 750 0, true, base::TimeTicks(), base::TimeTicks())); |
743 | 751 |
744 // DidNavigate from the pending page. | 752 // DidNavigate from the pending page. |
745 contents()->TestDidNavigate( | 753 contents()->TestDidNavigate( |
746 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); | 754 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); |
747 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); | 755 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance()); | 816 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance()); |
809 EXPECT_EQ(instance1, | 817 EXPECT_EQ(instance1, |
810 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance()); | 818 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance()); |
811 EXPECT_EQ(url1, entry1->GetURL()); | 819 EXPECT_EQ(url1, entry1->GetURL()); |
812 } | 820 } |
813 | 821 |
814 // Test that during a slow cross-site navigation, a sub-frame navigation in the | 822 // Test that during a slow cross-site navigation, a sub-frame navigation in the |
815 // original renderer will not cancel the slow navigation (bug 42029). | 823 // original renderer will not cancel the slow navigation (bug 42029). |
816 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) { | 824 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) { |
817 contents()->transition_cross_site = true; | 825 contents()->transition_cross_site = true; |
818 TestRenderViewHost* orig_rvh = rvh(); | 826 TestRenderViewHost* orig_rvh = test_rvh(); |
819 | 827 |
820 // Navigate to URL. First URL should use first RenderViewHost. | 828 // Navigate to URL. First URL should use first RenderViewHost. |
821 const GURL url("http://www.google.com"); | 829 const GURL url("http://www.google.com"); |
822 controller().LoadURL( | 830 controller().LoadURL( |
823 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 831 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
824 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 832 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
825 EXPECT_FALSE(contents()->cross_navigation_pending()); | 833 EXPECT_FALSE(contents()->cross_navigation_pending()); |
826 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 834 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
827 | 835 |
828 // Start navigating to new site. | 836 // Start navigating to new site. |
(...skipping 19 matching lines...) Expand all Loading... |
848 // renderer sends a FrameNavigate message just before being told to stop. | 856 // renderer sends a FrameNavigate message just before being told to stop. |
849 // We should only preempt the cross-site navigation if the previous renderer | 857 // We should only preempt the cross-site navigation if the previous renderer |
850 // has started a new navigation. See http://crbug.com/79176. | 858 // has started a new navigation. See http://crbug.com/79176. |
851 TEST_F(TabContentsTest, CrossSiteNotPreemptedDuringBeforeUnload) { | 859 TEST_F(TabContentsTest, CrossSiteNotPreemptedDuringBeforeUnload) { |
852 contents()->transition_cross_site = true; | 860 contents()->transition_cross_site = true; |
853 | 861 |
854 // Navigate to NTP URL. | 862 // Navigate to NTP URL. |
855 const GURL url("tabcontentstest://blah"); | 863 const GURL url("tabcontentstest://blah"); |
856 controller().LoadURL( | 864 controller().LoadURL( |
857 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 865 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
858 TestRenderViewHost* orig_rvh = rvh(); | 866 TestRenderViewHost* orig_rvh = test_rvh(); |
859 EXPECT_FALSE(contents()->cross_navigation_pending()); | 867 EXPECT_FALSE(contents()->cross_navigation_pending()); |
860 | 868 |
861 // Navigate to new site, with the beforeunload request in flight. | 869 // Navigate to new site, with the beforeunload request in flight. |
862 const GURL url2("http://www.yahoo.com"); | 870 const GURL url2("http://www.yahoo.com"); |
863 controller().LoadURL( | 871 controller().LoadURL( |
864 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 872 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
865 TestRenderViewHost* pending_rvh = contents()->pending_rvh(); | 873 TestRenderViewHost* pending_rvh = |
| 874 static_cast<TestRenderViewHost*>(contents()->pending_rvh()); |
866 EXPECT_TRUE(contents()->cross_navigation_pending()); | 875 EXPECT_TRUE(contents()->cross_navigation_pending()); |
867 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); | 876 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); |
868 | 877 |
869 // Suppose the first navigation tries to commit now, with a | 878 // Suppose the first navigation tries to commit now, with a |
870 // ViewMsg_Stop in flight. This should not cancel the pending navigation, | 879 // ViewMsg_Stop in flight. This should not cancel the pending navigation, |
871 // but it should act as if the beforeunload ack arrived. | 880 // but it should act as if the beforeunload ack arrived. |
872 orig_rvh->SendNavigate(1, GURL("tabcontentstest://blah")); | 881 orig_rvh->SendNavigate(1, GURL("tabcontentstest://blah")); |
873 EXPECT_TRUE(contents()->cross_navigation_pending()); | 882 EXPECT_TRUE(contents()->cross_navigation_pending()); |
874 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 883 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
875 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); | 884 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); |
876 | 885 |
877 // The pending navigation should be able to commit successfully. | 886 // The pending navigation should be able to commit successfully. |
878 contents()->TestDidNavigate( | 887 contents()->TestDidNavigate( |
879 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); | 888 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); |
880 EXPECT_FALSE(contents()->cross_navigation_pending()); | 889 EXPECT_FALSE(contents()->cross_navigation_pending()); |
881 EXPECT_EQ(pending_rvh, contents()->GetRenderViewHost()); | 890 EXPECT_EQ(pending_rvh, contents()->GetRenderViewHost()); |
882 } | 891 } |
883 | 892 |
884 // Test that the original renderer cannot preempt a cross-site navigation once | 893 // Test that the original renderer cannot preempt a cross-site navigation once |
885 // the unload request has been made. At this point, the cross-site navigation | 894 // the unload request has been made. At this point, the cross-site navigation |
886 // is almost ready to be displayed, and the original renderer is only given a | 895 // is almost ready to be displayed, and the original renderer is only given a |
887 // short chance to run an unload handler. Prevents regression of bug 23942. | 896 // short chance to run an unload handler. Prevents regression of bug 23942. |
888 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) { | 897 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) { |
889 contents()->transition_cross_site = true; | 898 contents()->transition_cross_site = true; |
890 TestRenderViewHost* orig_rvh = rvh(); | 899 TestRenderViewHost* orig_rvh = test_rvh(); |
891 SiteInstance* instance1 = contents()->GetSiteInstance(); | 900 SiteInstance* instance1 = contents()->GetSiteInstance(); |
892 | 901 |
893 // Navigate to URL. First URL should use first RenderViewHost. | 902 // Navigate to URL. First URL should use first RenderViewHost. |
894 const GURL url("http://www.google.com"); | 903 const GURL url("http://www.google.com"); |
895 controller().LoadURL( | 904 controller().LoadURL( |
896 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 905 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
897 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 906 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
898 EXPECT_FALSE(contents()->cross_navigation_pending()); | 907 EXPECT_FALSE(contents()->cross_navigation_pending()); |
899 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 908 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
900 | 909 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 EXPECT_FALSE(contents()->cross_navigation_pending()); | 941 EXPECT_FALSE(contents()->cross_navigation_pending()); |
933 EXPECT_EQ(pending_rvh, rvh()); | 942 EXPECT_EQ(pending_rvh, rvh()); |
934 EXPECT_NE(instance1, instance2); | 943 EXPECT_NE(instance1, instance2); |
935 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 944 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
936 } | 945 } |
937 | 946 |
938 // Test that a cross-site navigation that doesn't commit after the unload | 947 // Test that a cross-site navigation that doesn't commit after the unload |
939 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562. | 948 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562. |
940 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) { | 949 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) { |
941 contents()->transition_cross_site = true; | 950 contents()->transition_cross_site = true; |
942 TestRenderViewHost* orig_rvh = rvh(); | 951 TestRenderViewHost* orig_rvh = test_rvh(); |
943 SiteInstance* instance1 = contents()->GetSiteInstance(); | 952 SiteInstance* instance1 = contents()->GetSiteInstance(); |
944 | 953 |
945 // Navigate to URL. First URL should use first RenderViewHost. | 954 // Navigate to URL. First URL should use first RenderViewHost. |
946 const GURL url("http://www.google.com"); | 955 const GURL url("http://www.google.com"); |
947 controller().LoadURL( | 956 controller().LoadURL( |
948 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 957 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
949 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 958 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
950 EXPECT_FALSE(contents()->cross_navigation_pending()); | 959 EXPECT_FALSE(contents()->cross_navigation_pending()); |
951 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); | 960 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); |
952 | 961 |
(...skipping 21 matching lines...) Expand all Loading... |
974 EXPECT_FALSE(contents()->cross_navigation_pending()); | 983 EXPECT_FALSE(contents()->cross_navigation_pending()); |
975 EXPECT_EQ(orig_rvh, rvh()); | 984 EXPECT_EQ(orig_rvh, rvh()); |
976 EXPECT_FALSE(orig_rvh->is_swapped_out()); | 985 EXPECT_FALSE(orig_rvh->is_swapped_out()); |
977 EXPECT_EQ(instance1, instance2); | 986 EXPECT_EQ(instance1, instance2); |
978 EXPECT_TRUE(contents()->pending_rvh() == NULL); | 987 EXPECT_TRUE(contents()->pending_rvh() == NULL); |
979 } | 988 } |
980 | 989 |
981 // Test that NavigationEntries have the correct content state after going | 990 // Test that NavigationEntries have the correct content state after going |
982 // forward and back. Prevents regression for bug 1116137. | 991 // forward and back. Prevents regression for bug 1116137. |
983 TEST_F(TabContentsTest, NavigationEntryContentState) { | 992 TEST_F(TabContentsTest, NavigationEntryContentState) { |
984 TestRenderViewHost* orig_rvh = rvh(); | 993 TestRenderViewHost* orig_rvh = test_rvh(); |
985 | 994 |
986 // Navigate to URL. There should be no committed entry yet. | 995 // Navigate to URL. There should be no committed entry yet. |
987 const GURL url("http://www.google.com"); | 996 const GURL url("http://www.google.com"); |
988 controller().LoadURL( | 997 controller().LoadURL( |
989 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); | 998 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); |
990 NavigationEntry* entry = controller().GetLastCommittedEntry(); | 999 NavigationEntry* entry = controller().GetLastCommittedEntry(); |
991 EXPECT_TRUE(entry == NULL); | 1000 EXPECT_TRUE(entry == NULL); |
992 | 1001 |
993 // Committed entry should have content state after DidNavigate. | 1002 // Committed entry should have content state after DidNavigate. |
994 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 1003 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
(...skipping 17 matching lines...) Expand all Loading... |
1012 controller().GoBack(); | 1021 controller().GoBack(); |
1013 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 1022 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
1014 entry = controller().GetLastCommittedEntry(); | 1023 entry = controller().GetLastCommittedEntry(); |
1015 EXPECT_FALSE(entry->GetContentState().empty()); | 1024 EXPECT_FALSE(entry->GetContentState().empty()); |
1016 } | 1025 } |
1017 | 1026 |
1018 // Test that NavigationEntries have the correct content state and SiteInstance | 1027 // Test that NavigationEntries have the correct content state and SiteInstance |
1019 // state after opening a new window to about:blank. Prevents regression for | 1028 // state after opening a new window to about:blank. Prevents regression for |
1020 // bugs b/1116137 and http://crbug.com/111975. | 1029 // bugs b/1116137 and http://crbug.com/111975. |
1021 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) { | 1030 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) { |
1022 TestRenderViewHost* orig_rvh = rvh(); | 1031 TestRenderViewHost* orig_rvh = test_rvh(); |
1023 | 1032 |
1024 // When opening a new window, it is navigated to about:blank internally. | 1033 // When opening a new window, it is navigated to about:blank internally. |
1025 // Currently, this results in two DidNavigate events. | 1034 // Currently, this results in two DidNavigate events. |
1026 const GURL url(chrome::kAboutBlankURL); | 1035 const GURL url(chrome::kAboutBlankURL); |
1027 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 1036 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
1028 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); | 1037 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); |
1029 | 1038 |
1030 // Should have a content state here. | 1039 // Should have a content state here. |
1031 NavigationEntry* entry = controller().GetLastCommittedEntry(); | 1040 NavigationEntry* entry = controller().GetLastCommittedEntry(); |
1032 EXPECT_FALSE(entry->GetContentState().empty()); | 1041 EXPECT_FALSE(entry->GetContentState().empty()); |
(...skipping 22 matching lines...) Expand all Loading... |
1055 // Interstitial Tests | 1064 // Interstitial Tests |
1056 //////////////////////////////////////////////////////////////////////////////// | 1065 //////////////////////////////////////////////////////////////////////////////// |
1057 | 1066 |
1058 // Test navigating to a page (with the navigation initiated from the browser, | 1067 // Test navigating to a page (with the navigation initiated from the browser, |
1059 // as when a URL is typed in the location bar) that shows an interstitial and | 1068 // as when a URL is typed in the location bar) that shows an interstitial and |
1060 // creates a new navigation entry, then hiding it without proceeding. | 1069 // creates a new navigation entry, then hiding it without proceeding. |
1061 TEST_F(TabContentsTest, | 1070 TEST_F(TabContentsTest, |
1062 ShowInterstitialFromBrowserWithNewNavigationDontProceed) { | 1071 ShowInterstitialFromBrowserWithNewNavigationDontProceed) { |
1063 // Navigate to a page. | 1072 // Navigate to a page. |
1064 GURL url1("http://www.google.com"); | 1073 GURL url1("http://www.google.com"); |
1065 rvh()->SendNavigate(1, url1); | 1074 test_rvh()->SendNavigate(1, url1); |
1066 EXPECT_EQ(1, controller().GetEntryCount()); | 1075 EXPECT_EQ(1, controller().GetEntryCount()); |
1067 | 1076 |
1068 // Initiate a browser navigation that will trigger the interstitial | 1077 // Initiate a browser navigation that will trigger the interstitial |
1069 controller().LoadURL(GURL("http://www.evil.com"), content::Referrer(), | 1078 controller().LoadURL(GURL("http://www.evil.com"), content::Referrer(), |
1070 content::PAGE_TRANSITION_TYPED, std::string()); | 1079 content::PAGE_TRANSITION_TYPED, std::string()); |
1071 | 1080 |
1072 // Show an interstitial. | 1081 // Show an interstitial. |
1073 TestInterstitialPage::InterstitialState state = | 1082 TestInterstitialPage::InterstitialState state = |
1074 TestInterstitialPage::UNDECIDED; | 1083 TestInterstitialPage::UNDECIDED; |
1075 bool deleted = false; | 1084 bool deleted = false; |
(...skipping 27 matching lines...) Expand all Loading... |
1103 EXPECT_EQ(1, controller().GetEntryCount()); | 1112 EXPECT_EQ(1, controller().GetEntryCount()); |
1104 } | 1113 } |
1105 | 1114 |
1106 // Test navigating to a page (with the navigation initiated from the renderer, | 1115 // Test navigating to a page (with the navigation initiated from the renderer, |
1107 // as when clicking on a link in the page) that shows an interstitial and | 1116 // as when clicking on a link in the page) that shows an interstitial and |
1108 // creates a new navigation entry, then hiding it without proceeding. | 1117 // creates a new navigation entry, then hiding it without proceeding. |
1109 TEST_F(TabContentsTest, | 1118 TEST_F(TabContentsTest, |
1110 ShowInterstitiaFromRendererlWithNewNavigationDontProceed) { | 1119 ShowInterstitiaFromRendererlWithNewNavigationDontProceed) { |
1111 // Navigate to a page. | 1120 // Navigate to a page. |
1112 GURL url1("http://www.google.com"); | 1121 GURL url1("http://www.google.com"); |
1113 rvh()->SendNavigate(1, url1); | 1122 test_rvh()->SendNavigate(1, url1); |
1114 EXPECT_EQ(1, controller().GetEntryCount()); | 1123 EXPECT_EQ(1, controller().GetEntryCount()); |
1115 | 1124 |
1116 // Show an interstitial (no pending entry, the interstitial would have been | 1125 // Show an interstitial (no pending entry, the interstitial would have been |
1117 // triggered by clicking on a link). | 1126 // triggered by clicking on a link). |
1118 TestInterstitialPage::InterstitialState state = | 1127 TestInterstitialPage::InterstitialState state = |
1119 TestInterstitialPage::UNDECIDED; | 1128 TestInterstitialPage::UNDECIDED; |
1120 bool deleted = false; | 1129 bool deleted = false; |
1121 GURL url2("http://interstitial"); | 1130 GURL url2("http://interstitial"); |
1122 TestInterstitialPage* interstitial = | 1131 TestInterstitialPage* interstitial = |
1123 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1132 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
(...skipping 23 matching lines...) Expand all Loading... |
1147 EXPECT_TRUE(entry->GetURL() == url1); | 1156 EXPECT_TRUE(entry->GetURL() == url1); |
1148 EXPECT_EQ(1, controller().GetEntryCount()); | 1157 EXPECT_EQ(1, controller().GetEntryCount()); |
1149 } | 1158 } |
1150 | 1159 |
1151 // Test navigating to a page that shows an interstitial without creating a new | 1160 // Test navigating to a page that shows an interstitial without creating a new |
1152 // navigation entry (this happens when the interstitial is triggered by a | 1161 // navigation entry (this happens when the interstitial is triggered by a |
1153 // sub-resource in the page), then hiding it without proceeding. | 1162 // sub-resource in the page), then hiding it without proceeding. |
1154 TEST_F(TabContentsTest, ShowInterstitialNoNewNavigationDontProceed) { | 1163 TEST_F(TabContentsTest, ShowInterstitialNoNewNavigationDontProceed) { |
1155 // Navigate to a page. | 1164 // Navigate to a page. |
1156 GURL url1("http://www.google.com"); | 1165 GURL url1("http://www.google.com"); |
1157 rvh()->SendNavigate(1, url1); | 1166 test_rvh()->SendNavigate(1, url1); |
1158 EXPECT_EQ(1, controller().GetEntryCount()); | 1167 EXPECT_EQ(1, controller().GetEntryCount()); |
1159 | 1168 |
1160 // Show an interstitial. | 1169 // Show an interstitial. |
1161 TestInterstitialPage::InterstitialState state = | 1170 TestInterstitialPage::InterstitialState state = |
1162 TestInterstitialPage::UNDECIDED; | 1171 TestInterstitialPage::UNDECIDED; |
1163 bool deleted = false; | 1172 bool deleted = false; |
1164 GURL url2("http://interstitial"); | 1173 GURL url2("http://interstitial"); |
1165 TestInterstitialPage* interstitial = | 1174 TestInterstitialPage* interstitial = |
1166 new TestInterstitialPage(contents(), false, url2, &state, &deleted); | 1175 new TestInterstitialPage(contents(), false, url2, &state, &deleted); |
1167 TestInterstitialPageStateGuard state_guard(interstitial); | 1176 TestInterstitialPageStateGuard state_guard(interstitial); |
(...skipping 24 matching lines...) Expand all Loading... |
1192 EXPECT_EQ(1, controller().GetEntryCount()); | 1201 EXPECT_EQ(1, controller().GetEntryCount()); |
1193 } | 1202 } |
1194 | 1203 |
1195 // Test navigating to a page (with the navigation initiated from the browser, | 1204 // Test navigating to a page (with the navigation initiated from the browser, |
1196 // as when a URL is typed in the location bar) that shows an interstitial and | 1205 // as when a URL is typed in the location bar) that shows an interstitial and |
1197 // creates a new navigation entry, then proceeding. | 1206 // creates a new navigation entry, then proceeding. |
1198 TEST_F(TabContentsTest, | 1207 TEST_F(TabContentsTest, |
1199 ShowInterstitialFromBrowserNewNavigationProceed) { | 1208 ShowInterstitialFromBrowserNewNavigationProceed) { |
1200 // Navigate to a page. | 1209 // Navigate to a page. |
1201 GURL url1("http://www.google.com"); | 1210 GURL url1("http://www.google.com"); |
1202 rvh()->SendNavigate(1, url1); | 1211 test_rvh()->SendNavigate(1, url1); |
1203 EXPECT_EQ(1, controller().GetEntryCount()); | 1212 EXPECT_EQ(1, controller().GetEntryCount()); |
1204 | 1213 |
1205 // Initiate a browser navigation that will trigger the interstitial | 1214 // Initiate a browser navigation that will trigger the interstitial |
1206 controller().LoadURL(GURL("http://www.evil.com"), content::Referrer(), | 1215 controller().LoadURL(GURL("http://www.evil.com"), content::Referrer(), |
1207 content::PAGE_TRANSITION_TYPED, std::string()); | 1216 content::PAGE_TRANSITION_TYPED, std::string()); |
1208 | 1217 |
1209 // Show an interstitial. | 1218 // Show an interstitial. |
1210 TestInterstitialPage::InterstitialState state = | 1219 TestInterstitialPage::InterstitialState state = |
1211 TestInterstitialPage::UNDECIDED; | 1220 TestInterstitialPage::UNDECIDED; |
1212 bool deleted = false; | 1221 bool deleted = false; |
(...skipping 19 matching lines...) Expand all Loading... |
1232 interstitial->Proceed(); | 1241 interstitial->Proceed(); |
1233 // The interstitial should show until the new navigation commits. | 1242 // The interstitial should show until the new navigation commits. |
1234 ASSERT_FALSE(deleted); | 1243 ASSERT_FALSE(deleted); |
1235 EXPECT_EQ(TestInterstitialPage::OKED, state); | 1244 EXPECT_EQ(TestInterstitialPage::OKED, state); |
1236 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1245 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
1237 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1246 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
1238 | 1247 |
1239 // Simulate the navigation to the page, that's when the interstitial gets | 1248 // Simulate the navigation to the page, that's when the interstitial gets |
1240 // hidden. | 1249 // hidden. |
1241 GURL url3("http://www.thepage.com"); | 1250 GURL url3("http://www.thepage.com"); |
1242 rvh()->SendNavigate(2, url3); | 1251 test_rvh()->SendNavigate(2, url3); |
1243 | 1252 |
1244 EXPECT_TRUE(deleted); | 1253 EXPECT_TRUE(deleted); |
1245 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1254 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
1246 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1255 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
1247 entry = controller().GetActiveEntry(); | 1256 entry = controller().GetActiveEntry(); |
1248 ASSERT_TRUE(entry != NULL); | 1257 ASSERT_TRUE(entry != NULL); |
1249 EXPECT_TRUE(entry->GetURL() == url3); | 1258 EXPECT_TRUE(entry->GetURL() == url3); |
1250 | 1259 |
1251 EXPECT_EQ(2, controller().GetEntryCount()); | 1260 EXPECT_EQ(2, controller().GetEntryCount()); |
1252 } | 1261 } |
1253 | 1262 |
1254 // Test navigating to a page (with the navigation initiated from the renderer, | 1263 // Test navigating to a page (with the navigation initiated from the renderer, |
1255 // as when clicking on a link in the page) that shows an interstitial and | 1264 // as when clicking on a link in the page) that shows an interstitial and |
1256 // creates a new navigation entry, then proceeding. | 1265 // creates a new navigation entry, then proceeding. |
1257 TEST_F(TabContentsTest, | 1266 TEST_F(TabContentsTest, |
1258 ShowInterstitialFromRendererNewNavigationProceed) { | 1267 ShowInterstitialFromRendererNewNavigationProceed) { |
1259 // Navigate to a page. | 1268 // Navigate to a page. |
1260 GURL url1("http://www.google.com"); | 1269 GURL url1("http://www.google.com"); |
1261 rvh()->SendNavigate(1, url1); | 1270 test_rvh()->SendNavigate(1, url1); |
1262 EXPECT_EQ(1, controller().GetEntryCount()); | 1271 EXPECT_EQ(1, controller().GetEntryCount()); |
1263 | 1272 |
1264 // Show an interstitial. | 1273 // Show an interstitial. |
1265 TestInterstitialPage::InterstitialState state = | 1274 TestInterstitialPage::InterstitialState state = |
1266 TestInterstitialPage::UNDECIDED; | 1275 TestInterstitialPage::UNDECIDED; |
1267 bool deleted = false; | 1276 bool deleted = false; |
1268 GURL url2("http://interstitial"); | 1277 GURL url2("http://interstitial"); |
1269 TestInterstitialPage* interstitial = | 1278 TestInterstitialPage* interstitial = |
1270 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1279 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
1271 TestInterstitialPageStateGuard state_guard(interstitial); | 1280 TestInterstitialPageStateGuard state_guard(interstitial); |
(...skipping 15 matching lines...) Expand all Loading... |
1287 interstitial->Proceed(); | 1296 interstitial->Proceed(); |
1288 // The interstitial should show until the new navigation commits. | 1297 // The interstitial should show until the new navigation commits. |
1289 ASSERT_FALSE(deleted); | 1298 ASSERT_FALSE(deleted); |
1290 EXPECT_EQ(TestInterstitialPage::OKED, state); | 1299 EXPECT_EQ(TestInterstitialPage::OKED, state); |
1291 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1300 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
1292 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1301 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
1293 | 1302 |
1294 // Simulate the navigation to the page, that's when the interstitial gets | 1303 // Simulate the navigation to the page, that's when the interstitial gets |
1295 // hidden. | 1304 // hidden. |
1296 GURL url3("http://www.thepage.com"); | 1305 GURL url3("http://www.thepage.com"); |
1297 rvh()->SendNavigate(2, url3); | 1306 test_rvh()->SendNavigate(2, url3); |
1298 | 1307 |
1299 EXPECT_TRUE(deleted); | 1308 EXPECT_TRUE(deleted); |
1300 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1309 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
1301 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1310 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
1302 entry = controller().GetActiveEntry(); | 1311 entry = controller().GetActiveEntry(); |
1303 ASSERT_TRUE(entry != NULL); | 1312 ASSERT_TRUE(entry != NULL); |
1304 EXPECT_TRUE(entry->GetURL() == url3); | 1313 EXPECT_TRUE(entry->GetURL() == url3); |
1305 | 1314 |
1306 EXPECT_EQ(2, controller().GetEntryCount()); | 1315 EXPECT_EQ(2, controller().GetEntryCount()); |
1307 } | 1316 } |
1308 | 1317 |
1309 // Test navigating to a page that shows an interstitial without creating a new | 1318 // Test navigating to a page that shows an interstitial without creating a new |
1310 // navigation entry (this happens when the interstitial is triggered by a | 1319 // navigation entry (this happens when the interstitial is triggered by a |
1311 // sub-resource in the page), then proceeding. | 1320 // sub-resource in the page), then proceeding. |
1312 TEST_F(TabContentsTest, ShowInterstitialNoNewNavigationProceed) { | 1321 TEST_F(TabContentsTest, ShowInterstitialNoNewNavigationProceed) { |
1313 // Navigate to a page so we have a navigation entry in the controller. | 1322 // Navigate to a page so we have a navigation entry in the controller. |
1314 GURL url1("http://www.google.com"); | 1323 GURL url1("http://www.google.com"); |
1315 rvh()->SendNavigate(1, url1); | 1324 test_rvh()->SendNavigate(1, url1); |
1316 EXPECT_EQ(1, controller().GetEntryCount()); | 1325 EXPECT_EQ(1, controller().GetEntryCount()); |
1317 | 1326 |
1318 // Show an interstitial. | 1327 // Show an interstitial. |
1319 TestInterstitialPage::InterstitialState state = | 1328 TestInterstitialPage::InterstitialState state = |
1320 TestInterstitialPage::UNDECIDED; | 1329 TestInterstitialPage::UNDECIDED; |
1321 bool deleted = false; | 1330 bool deleted = false; |
1322 GURL url2("http://interstitial"); | 1331 GURL url2("http://interstitial"); |
1323 TestInterstitialPage* interstitial = | 1332 TestInterstitialPage* interstitial = |
1324 new TestInterstitialPage(contents(), false, url2, &state, &deleted); | 1333 new TestInterstitialPage(contents(), false, url2, &state, &deleted); |
1325 TestInterstitialPageStateGuard state_guard(interstitial); | 1334 TestInterstitialPageStateGuard state_guard(interstitial); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1361 bool deleted = false; | 1370 bool deleted = false; |
1362 GURL url("http://interstitial"); | 1371 GURL url("http://interstitial"); |
1363 TestInterstitialPage* interstitial = | 1372 TestInterstitialPage* interstitial = |
1364 new TestInterstitialPage(contents(), true, url, &state, &deleted); | 1373 new TestInterstitialPage(contents(), true, url, &state, &deleted); |
1365 TestInterstitialPageStateGuard state_guard(interstitial); | 1374 TestInterstitialPageStateGuard state_guard(interstitial); |
1366 interstitial->Show(); | 1375 interstitial->Show(); |
1367 interstitial->TestDidNavigate(1, url); | 1376 interstitial->TestDidNavigate(1, url); |
1368 | 1377 |
1369 // While interstitial showing, navigate to a new URL. | 1378 // While interstitial showing, navigate to a new URL. |
1370 const GURL url2("http://www.yahoo.com"); | 1379 const GURL url2("http://www.yahoo.com"); |
1371 rvh()->SendNavigate(1, url2); | 1380 test_rvh()->SendNavigate(1, url2); |
1372 | 1381 |
1373 EXPECT_TRUE(deleted); | 1382 EXPECT_TRUE(deleted); |
1374 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1383 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
1375 } | 1384 } |
1376 | 1385 |
1377 // Test navigating to a page that shows an interstitial, then going back. | 1386 // Test navigating to a page that shows an interstitial, then going back. |
1378 TEST_F(TabContentsTest, ShowInterstitialThenGoBack) { | 1387 TEST_F(TabContentsTest, ShowInterstitialThenGoBack) { |
1379 // Navigate to a page so we have a navigation entry in the controller. | 1388 // Navigate to a page so we have a navigation entry in the controller. |
1380 GURL url1("http://www.google.com"); | 1389 GURL url1("http://www.google.com"); |
1381 rvh()->SendNavigate(1, url1); | 1390 test_rvh()->SendNavigate(1, url1); |
1382 EXPECT_EQ(1, controller().GetEntryCount()); | 1391 EXPECT_EQ(1, controller().GetEntryCount()); |
1383 | 1392 |
1384 // Show interstitial. | 1393 // Show interstitial. |
1385 TestInterstitialPage::InterstitialState state = | 1394 TestInterstitialPage::InterstitialState state = |
1386 TestInterstitialPage::UNDECIDED; | 1395 TestInterstitialPage::UNDECIDED; |
1387 bool deleted = false; | 1396 bool deleted = false; |
1388 GURL interstitial_url("http://interstitial"); | 1397 GURL interstitial_url("http://interstitial"); |
1389 TestInterstitialPage* interstitial = | 1398 TestInterstitialPage* interstitial = |
1390 new TestInterstitialPage(contents(), true, interstitial_url, | 1399 new TestInterstitialPage(contents(), true, interstitial_url, |
1391 &state, &deleted); | 1400 &state, &deleted); |
1392 TestInterstitialPageStateGuard state_guard(interstitial); | 1401 TestInterstitialPageStateGuard state_guard(interstitial); |
1393 interstitial->Show(); | 1402 interstitial->Show(); |
1394 interstitial->TestDidNavigate(2, interstitial_url); | 1403 interstitial->TestDidNavigate(2, interstitial_url); |
1395 | 1404 |
1396 // While the interstitial is showing, go back. | 1405 // While the interstitial is showing, go back. |
1397 controller().GoBack(); | 1406 controller().GoBack(); |
1398 rvh()->SendNavigate(1, url1); | 1407 test_rvh()->SendNavigate(1, url1); |
1399 | 1408 |
1400 // Make sure we are back to the original page and that the interstitial is | 1409 // Make sure we are back to the original page and that the interstitial is |
1401 // gone. | 1410 // gone. |
1402 EXPECT_TRUE(deleted); | 1411 EXPECT_TRUE(deleted); |
1403 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1412 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
1404 NavigationEntry* entry = controller().GetActiveEntry(); | 1413 NavigationEntry* entry = controller().GetActiveEntry(); |
1405 ASSERT_TRUE(entry); | 1414 ASSERT_TRUE(entry); |
1406 EXPECT_EQ(url1.spec(), entry->GetURL().spec()); | 1415 EXPECT_EQ(url1.spec(), entry->GetURL().spec()); |
1407 } | 1416 } |
1408 | 1417 |
1409 // Test navigating to a page that shows an interstitial, has a renderer crash, | 1418 // Test navigating to a page that shows an interstitial, has a renderer crash, |
1410 // and then goes back. | 1419 // and then goes back. |
1411 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenGoBack) { | 1420 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenGoBack) { |
1412 // Navigate to a page so we have a navigation entry in the controller. | 1421 // Navigate to a page so we have a navigation entry in the controller. |
1413 GURL url1("http://www.google.com"); | 1422 GURL url1("http://www.google.com"); |
1414 rvh()->SendNavigate(1, url1); | 1423 test_rvh()->SendNavigate(1, url1); |
1415 EXPECT_EQ(1, controller().GetEntryCount()); | 1424 EXPECT_EQ(1, controller().GetEntryCount()); |
1416 | 1425 |
1417 // Show interstitial. | 1426 // Show interstitial. |
1418 TestInterstitialPage::InterstitialState state = | 1427 TestInterstitialPage::InterstitialState state = |
1419 TestInterstitialPage::UNDECIDED; | 1428 TestInterstitialPage::UNDECIDED; |
1420 bool deleted = false; | 1429 bool deleted = false; |
1421 GURL interstitial_url("http://interstitial"); | 1430 GURL interstitial_url("http://interstitial"); |
1422 TestInterstitialPage* interstitial = | 1431 TestInterstitialPage* interstitial = |
1423 new TestInterstitialPage(contents(), true, interstitial_url, | 1432 new TestInterstitialPage(contents(), true, interstitial_url, |
1424 &state, &deleted); | 1433 &state, &deleted); |
1425 TestInterstitialPageStateGuard state_guard(interstitial); | 1434 TestInterstitialPageStateGuard state_guard(interstitial); |
1426 interstitial->Show(); | 1435 interstitial->Show(); |
1427 interstitial->TestDidNavigate(2, interstitial_url); | 1436 interstitial->TestDidNavigate(2, interstitial_url); |
1428 | 1437 |
1429 // Crash the renderer | 1438 // Crash the renderer |
1430 rvh()->TestOnMessageReceived( | 1439 test_rvh()->TestOnMessageReceived( |
1431 ViewHostMsg_RenderViewGone( | 1440 ViewHostMsg_RenderViewGone( |
1432 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1441 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
1433 | 1442 |
1434 // While the interstitial is showing, go back. | 1443 // While the interstitial is showing, go back. |
1435 controller().GoBack(); | 1444 controller().GoBack(); |
1436 rvh()->SendNavigate(1, url1); | 1445 test_rvh()->SendNavigate(1, url1); |
1437 | 1446 |
1438 // Make sure we are back to the original page and that the interstitial is | 1447 // Make sure we are back to the original page and that the interstitial is |
1439 // gone. | 1448 // gone. |
1440 EXPECT_TRUE(deleted); | 1449 EXPECT_TRUE(deleted); |
1441 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1450 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
1442 NavigationEntry* entry = controller().GetActiveEntry(); | 1451 NavigationEntry* entry = controller().GetActiveEntry(); |
1443 ASSERT_TRUE(entry); | 1452 ASSERT_TRUE(entry); |
1444 EXPECT_EQ(url1.spec(), entry->GetURL().spec()); | 1453 EXPECT_EQ(url1.spec(), entry->GetURL().spec()); |
1445 } | 1454 } |
1446 | 1455 |
1447 // Test navigating to a page that shows an interstitial, has the renderer crash, | 1456 // Test navigating to a page that shows an interstitial, has the renderer crash, |
1448 // and then navigates to the interstitial. | 1457 // and then navigates to the interstitial. |
1449 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenNavigate) { | 1458 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenNavigate) { |
1450 // Navigate to a page so we have a navigation entry in the controller. | 1459 // Navigate to a page so we have a navigation entry in the controller. |
1451 GURL url1("http://www.google.com"); | 1460 GURL url1("http://www.google.com"); |
1452 rvh()->SendNavigate(1, url1); | 1461 test_rvh()->SendNavigate(1, url1); |
1453 EXPECT_EQ(1, controller().GetEntryCount()); | 1462 EXPECT_EQ(1, controller().GetEntryCount()); |
1454 | 1463 |
1455 // Show interstitial. | 1464 // Show interstitial. |
1456 TestInterstitialPage::InterstitialState state = | 1465 TestInterstitialPage::InterstitialState state = |
1457 TestInterstitialPage::UNDECIDED; | 1466 TestInterstitialPage::UNDECIDED; |
1458 bool deleted = false; | 1467 bool deleted = false; |
1459 GURL interstitial_url("http://interstitial"); | 1468 GURL interstitial_url("http://interstitial"); |
1460 TestInterstitialPage* interstitial = | 1469 TestInterstitialPage* interstitial = |
1461 new TestInterstitialPage(contents(), true, interstitial_url, | 1470 new TestInterstitialPage(contents(), true, interstitial_url, |
1462 &state, &deleted); | 1471 &state, &deleted); |
1463 TestInterstitialPageStateGuard state_guard(interstitial); | 1472 TestInterstitialPageStateGuard state_guard(interstitial); |
1464 interstitial->Show(); | 1473 interstitial->Show(); |
1465 | 1474 |
1466 // Crash the renderer | 1475 // Crash the renderer |
1467 rvh()->TestOnMessageReceived( | 1476 test_rvh()->TestOnMessageReceived( |
1468 ViewHostMsg_RenderViewGone( | 1477 ViewHostMsg_RenderViewGone( |
1469 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1478 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
1470 | 1479 |
1471 interstitial->TestDidNavigate(2, interstitial_url); | 1480 interstitial->TestDidNavigate(2, interstitial_url); |
1472 } | 1481 } |
1473 | 1482 |
1474 // Test navigating to a page that shows an interstitial, then close the tab. | 1483 // Test navigating to a page that shows an interstitial, then close the tab. |
1475 TEST_F(TabContentsTest, ShowInterstitialThenCloseTab) { | 1484 TEST_F(TabContentsTest, ShowInterstitialThenCloseTab) { |
1476 // Show interstitial. | 1485 // Show interstitial. |
1477 TestInterstitialPage::InterstitialState state = | 1486 TestInterstitialPage::InterstitialState state = |
(...skipping 10 matching lines...) Expand all Loading... |
1488 DeleteContents(); | 1497 DeleteContents(); |
1489 EXPECT_TRUE(deleted); | 1498 EXPECT_TRUE(deleted); |
1490 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1499 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
1491 } | 1500 } |
1492 | 1501 |
1493 // Test that after Proceed is called and an interstitial is still shown, no more | 1502 // Test that after Proceed is called and an interstitial is still shown, no more |
1494 // commands get executed. | 1503 // commands get executed. |
1495 TEST_F(TabContentsTest, ShowInterstitialProceedMultipleCommands) { | 1504 TEST_F(TabContentsTest, ShowInterstitialProceedMultipleCommands) { |
1496 // Navigate to a page so we have a navigation entry in the controller. | 1505 // Navigate to a page so we have a navigation entry in the controller. |
1497 GURL url1("http://www.google.com"); | 1506 GURL url1("http://www.google.com"); |
1498 rvh()->SendNavigate(1, url1); | 1507 test_rvh()->SendNavigate(1, url1); |
1499 EXPECT_EQ(1, controller().GetEntryCount()); | 1508 EXPECT_EQ(1, controller().GetEntryCount()); |
1500 | 1509 |
1501 // Show an interstitial. | 1510 // Show an interstitial. |
1502 TestInterstitialPage::InterstitialState state = | 1511 TestInterstitialPage::InterstitialState state = |
1503 TestInterstitialPage::UNDECIDED; | 1512 TestInterstitialPage::UNDECIDED; |
1504 bool deleted = false; | 1513 bool deleted = false; |
1505 GURL url2("http://interstitial"); | 1514 GURL url2("http://interstitial"); |
1506 TestInterstitialPage* interstitial = | 1515 TestInterstitialPage* interstitial = |
1507 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1516 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
1508 TestInterstitialPageStateGuard state_guard(interstitial); | 1517 TestInterstitialPageStateGuard state_guard(interstitial); |
(...skipping 13 matching lines...) Expand all Loading... |
1522 // should be ignored. | 1531 // should be ignored. |
1523 interstitial->TestDomOperationResponse("hello"); | 1532 interstitial->TestDomOperationResponse("hello"); |
1524 interstitial->TestDomOperationResponse("hi"); | 1533 interstitial->TestDomOperationResponse("hi"); |
1525 EXPECT_EQ(1, interstitial->command_received_count()); | 1534 EXPECT_EQ(1, interstitial->command_received_count()); |
1526 } | 1535 } |
1527 | 1536 |
1528 // Test showing an interstitial while another interstitial is already showing. | 1537 // Test showing an interstitial while another interstitial is already showing. |
1529 TEST_F(TabContentsTest, ShowInterstitialOnInterstitial) { | 1538 TEST_F(TabContentsTest, ShowInterstitialOnInterstitial) { |
1530 // Navigate to a page so we have a navigation entry in the controller. | 1539 // Navigate to a page so we have a navigation entry in the controller. |
1531 GURL start_url("http://www.google.com"); | 1540 GURL start_url("http://www.google.com"); |
1532 rvh()->SendNavigate(1, start_url); | 1541 test_rvh()->SendNavigate(1, start_url); |
1533 EXPECT_EQ(1, controller().GetEntryCount()); | 1542 EXPECT_EQ(1, controller().GetEntryCount()); |
1534 | 1543 |
1535 // Show an interstitial. | 1544 // Show an interstitial. |
1536 TestInterstitialPage::InterstitialState state1 = | 1545 TestInterstitialPage::InterstitialState state1 = |
1537 TestInterstitialPage::UNDECIDED; | 1546 TestInterstitialPage::UNDECIDED; |
1538 bool deleted1 = false; | 1547 bool deleted1 = false; |
1539 GURL url1("http://interstitial1"); | 1548 GURL url1("http://interstitial1"); |
1540 TestInterstitialPage* interstitial1 = | 1549 TestInterstitialPage* interstitial1 = |
1541 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); | 1550 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); |
1542 TestInterstitialPageStateGuard state_guard1(interstitial1); | 1551 TestInterstitialPageStateGuard state_guard1(interstitial1); |
(...skipping 13 matching lines...) Expand all Loading... |
1556 | 1565 |
1557 // Showing interstitial2 should have caused interstitial1 to go away. | 1566 // Showing interstitial2 should have caused interstitial1 to go away. |
1558 EXPECT_TRUE(deleted1); | 1567 EXPECT_TRUE(deleted1); |
1559 EXPECT_EQ(TestInterstitialPage::CANCELED, state1); | 1568 EXPECT_EQ(TestInterstitialPage::CANCELED, state1); |
1560 | 1569 |
1561 // Let's make sure interstitial2 is working as intended. | 1570 // Let's make sure interstitial2 is working as intended. |
1562 ASSERT_FALSE(deleted2); | 1571 ASSERT_FALSE(deleted2); |
1563 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); | 1572 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
1564 interstitial2->Proceed(); | 1573 interstitial2->Proceed(); |
1565 GURL landing_url("http://www.thepage.com"); | 1574 GURL landing_url("http://www.thepage.com"); |
1566 rvh()->SendNavigate(2, landing_url); | 1575 test_rvh()->SendNavigate(2, landing_url); |
1567 | 1576 |
1568 EXPECT_TRUE(deleted2); | 1577 EXPECT_TRUE(deleted2); |
1569 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1578 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
1570 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1579 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
1571 NavigationEntry* entry = controller().GetActiveEntry(); | 1580 NavigationEntry* entry = controller().GetActiveEntry(); |
1572 ASSERT_TRUE(entry != NULL); | 1581 ASSERT_TRUE(entry != NULL); |
1573 EXPECT_TRUE(entry->GetURL() == landing_url); | 1582 EXPECT_TRUE(entry->GetURL() == landing_url); |
1574 EXPECT_EQ(2, controller().GetEntryCount()); | 1583 EXPECT_EQ(2, controller().GetEntryCount()); |
1575 } | 1584 } |
1576 | 1585 |
1577 // Test showing an interstitial, proceeding and then navigating to another | 1586 // Test showing an interstitial, proceeding and then navigating to another |
1578 // interstitial. | 1587 // interstitial. |
1579 TEST_F(TabContentsTest, ShowInterstitialProceedShowInterstitial) { | 1588 TEST_F(TabContentsTest, ShowInterstitialProceedShowInterstitial) { |
1580 // Navigate to a page so we have a navigation entry in the controller. | 1589 // Navigate to a page so we have a navigation entry in the controller. |
1581 GURL start_url("http://www.google.com"); | 1590 GURL start_url("http://www.google.com"); |
1582 rvh()->SendNavigate(1, start_url); | 1591 test_rvh()->SendNavigate(1, start_url); |
1583 EXPECT_EQ(1, controller().GetEntryCount()); | 1592 EXPECT_EQ(1, controller().GetEntryCount()); |
1584 | 1593 |
1585 // Show an interstitial. | 1594 // Show an interstitial. |
1586 TestInterstitialPage::InterstitialState state1 = | 1595 TestInterstitialPage::InterstitialState state1 = |
1587 TestInterstitialPage::UNDECIDED; | 1596 TestInterstitialPage::UNDECIDED; |
1588 bool deleted1 = false; | 1597 bool deleted1 = false; |
1589 GURL url1("http://interstitial1"); | 1598 GURL url1("http://interstitial1"); |
1590 TestInterstitialPage* interstitial1 = | 1599 TestInterstitialPage* interstitial1 = |
1591 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); | 1600 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); |
1592 TestInterstitialPageStateGuard state_guard1(interstitial1); | 1601 TestInterstitialPageStateGuard state_guard1(interstitial1); |
(...skipping 18 matching lines...) Expand all Loading... |
1611 interstitial2->TestDidNavigate(1, url2); | 1620 interstitial2->TestDidNavigate(1, url2); |
1612 | 1621 |
1613 // Showing interstitial2 should have caused interstitial1 to go away. | 1622 // Showing interstitial2 should have caused interstitial1 to go away. |
1614 EXPECT_TRUE(deleted1); | 1623 EXPECT_TRUE(deleted1); |
1615 | 1624 |
1616 // Let's make sure interstitial2 is working as intended. | 1625 // Let's make sure interstitial2 is working as intended. |
1617 ASSERT_FALSE(deleted2); | 1626 ASSERT_FALSE(deleted2); |
1618 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); | 1627 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
1619 interstitial2->Proceed(); | 1628 interstitial2->Proceed(); |
1620 GURL landing_url("http://www.thepage.com"); | 1629 GURL landing_url("http://www.thepage.com"); |
1621 rvh()->SendNavigate(2, landing_url); | 1630 test_rvh()->SendNavigate(2, landing_url); |
1622 | 1631 |
1623 EXPECT_TRUE(deleted2); | 1632 EXPECT_TRUE(deleted2); |
1624 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1633 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
1625 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1634 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
1626 NavigationEntry* entry = controller().GetActiveEntry(); | 1635 NavigationEntry* entry = controller().GetActiveEntry(); |
1627 ASSERT_TRUE(entry != NULL); | 1636 ASSERT_TRUE(entry != NULL); |
1628 EXPECT_TRUE(entry->GetURL() == landing_url); | 1637 EXPECT_TRUE(entry->GetURL() == landing_url); |
1629 EXPECT_EQ(2, controller().GetEntryCount()); | 1638 EXPECT_EQ(2, controller().GetEntryCount()); |
1630 } | 1639 } |
1631 | 1640 |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1809 kGURL, ui::JAVASCRIPT_MESSAGE_TYPE_ALERT, dummy_message, | 1818 kGURL, ui::JAVASCRIPT_MESSAGE_TYPE_ALERT, dummy_message, |
1810 &did_suppress_message); | 1819 &did_suppress_message); |
1811 EXPECT_TRUE(did_suppress_message); | 1820 EXPECT_TRUE(did_suppress_message); |
1812 } | 1821 } |
1813 | 1822 |
1814 // Makes sure that if the source passed to CopyStateFromAndPrune has an | 1823 // Makes sure that if the source passed to CopyStateFromAndPrune has an |
1815 // interstitial it isn't copied over to the destination. | 1824 // interstitial it isn't copied over to the destination. |
1816 TEST_F(TabContentsTest, CopyStateFromAndPruneSourceInterstitial) { | 1825 TEST_F(TabContentsTest, CopyStateFromAndPruneSourceInterstitial) { |
1817 // Navigate to a page. | 1826 // Navigate to a page. |
1818 GURL url1("http://www.google.com"); | 1827 GURL url1("http://www.google.com"); |
1819 rvh()->SendNavigate(1, url1); | 1828 test_rvh()->SendNavigate(1, url1); |
1820 EXPECT_EQ(1, controller().GetEntryCount()); | 1829 EXPECT_EQ(1, controller().GetEntryCount()); |
1821 | 1830 |
1822 // Initiate a browser navigation that will trigger the interstitial | 1831 // Initiate a browser navigation that will trigger the interstitial |
1823 controller().LoadURL(GURL("http://www.evil.com"), content::Referrer(), | 1832 controller().LoadURL(GURL("http://www.evil.com"), content::Referrer(), |
1824 content::PAGE_TRANSITION_TYPED, std::string()); | 1833 content::PAGE_TRANSITION_TYPED, std::string()); |
1825 | 1834 |
1826 // Show an interstitial. | 1835 // Show an interstitial. |
1827 TestInterstitialPage::InterstitialState state = | 1836 TestInterstitialPage::InterstitialState state = |
1828 TestInterstitialPage::UNDECIDED; | 1837 TestInterstitialPage::UNDECIDED; |
1829 bool deleted = false; | 1838 bool deleted = false; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1902 // It should have a transient entry. | 1911 // It should have a transient entry. |
1903 EXPECT_TRUE(other_controller.GetTransientEntry()); | 1912 EXPECT_TRUE(other_controller.GetTransientEntry()); |
1904 | 1913 |
1905 // And the interstitial should be showing. | 1914 // And the interstitial should be showing. |
1906 EXPECT_TRUE(other_contents->ShowingInterstitialPage()); | 1915 EXPECT_TRUE(other_contents->ShowingInterstitialPage()); |
1907 | 1916 |
1908 // And the interstitial should do a reload on don't proceed. | 1917 // And the interstitial should do a reload on don't proceed. |
1909 EXPECT_TRUE(static_cast<InterstitialPageImpl*>( | 1918 EXPECT_TRUE(static_cast<InterstitialPageImpl*>( |
1910 other_contents->GetInterstitialPage())->reload_on_dont_proceed()); | 1919 other_contents->GetInterstitialPage())->reload_on_dont_proceed()); |
1911 } | 1920 } |
OLD | NEW |