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

Side by Side Diff: content/browser/frame_host/navigation_controller_impl_browsertest.cc

Issue 2225053002: Fix tests to behave properly with ISNs/DSNs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | content/test/test_render_frame_host.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/frame_host/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 472
473 namespace { 473 namespace {
474 474
475 int RendererHistoryLength(Shell* shell) { 475 int RendererHistoryLength(Shell* shell) {
476 int value = 0; 476 int value = 0;
477 EXPECT_TRUE(ExecuteScriptAndExtractInt( 477 EXPECT_TRUE(ExecuteScriptAndExtractInt(
478 shell, "domAutomationController.send(history.length)", &value)); 478 shell, "domAutomationController.send(history.length)", &value));
479 return value; 479 return value;
480 } 480 }
481 481
482 // Similar to the ones from content_browser_test_utils. 482 // Does a renderer-initiated location.replace navigation to |url|, replacing the
483 bool NavigateToURLAndReplace(Shell* shell, const GURL& url) { 483 // current entry.
484 bool RendererLocationReplace(Shell* shell, const GURL& url) {
484 WebContents* web_contents = shell->web_contents(); 485 WebContents* web_contents = shell->web_contents();
485 WaitForLoadStop(web_contents); 486 WaitForLoadStop(web_contents);
486 TestNavigationObserver same_tab_observer(web_contents, 1); 487 TestNavigationObserver same_tab_observer(web_contents, 1);
487 NavigationController::LoadURLParams params(url); 488 EXPECT_TRUE(
488 params.should_replace_current_entry = true; 489 ExecuteScript(shell, "window.location.replace('" + url.spec() + "');"));
489 web_contents->GetController().LoadURLWithParams(params);
490 web_contents->Focus();
491 same_tab_observer.Wait(); 490 same_tab_observer.Wait();
492 if (!IsLastCommittedEntryOfPageType(web_contents, PAGE_TYPE_NORMAL)) 491 if (!IsLastCommittedEntryOfPageType(web_contents, PAGE_TYPE_NORMAL))
493 return false; 492 return false;
494 return web_contents->GetLastCommittedURL() == url; 493 return web_contents->GetLastCommittedURL() == url;
495 } 494 }
496 495
497 } // namespace 496 } // namespace
498 497
499 // When loading a new page to replace an old page in the history list, make sure 498 // When loading a new page to replace an old page in the history list, make sure
500 // that the browser and renderer agree, and that both get it right. 499 // that the browser and renderer agree, and that both get it right.
501 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, 500 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
502 CorrectLengthWithCurrentItemReplacement) { 501 CorrectLengthWithCurrentItemReplacement) {
503 NavigationController& controller = 502 NavigationController& controller =
504 shell()->web_contents()->GetController(); 503 shell()->web_contents()->GetController();
505 504
506 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page1"))); 505 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page1")));
507 EXPECT_EQ(1, controller.GetEntryCount()); 506 EXPECT_EQ(1, controller.GetEntryCount());
508 EXPECT_EQ(1, RendererHistoryLength(shell())); 507 EXPECT_EQ(1, RendererHistoryLength(shell()));
509 508
510 EXPECT_TRUE(NavigateToURLAndReplace(shell(), GURL("data:text/html,page1a"))); 509 EXPECT_TRUE(RendererLocationReplace(shell(), GURL("data:text/html,page1a")));
511 EXPECT_EQ(1, controller.GetEntryCount()); 510 EXPECT_EQ(1, controller.GetEntryCount());
512 EXPECT_EQ(1, RendererHistoryLength(shell())); 511 EXPECT_EQ(1, RendererHistoryLength(shell()));
513 512
514 // Now create two more entries and go back, to test replacing an entry without 513 // Now create two more entries and go back, to test replacing an entry without
515 // pruning the forward history. 514 // pruning the forward history.
516 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page2"))); 515 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page2")));
517 EXPECT_EQ(2, controller.GetEntryCount()); 516 EXPECT_EQ(2, controller.GetEntryCount());
518 EXPECT_EQ(2, RendererHistoryLength(shell())); 517 EXPECT_EQ(2, RendererHistoryLength(shell()));
519 518
520 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page3"))); 519 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page3")));
521 EXPECT_EQ(3, controller.GetEntryCount()); 520 EXPECT_EQ(3, controller.GetEntryCount());
522 EXPECT_EQ(3, RendererHistoryLength(shell())); 521 EXPECT_EQ(3, RendererHistoryLength(shell()));
523 522
524 controller.GoBack(); 523 controller.GoBack();
525 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 524 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
526 controller.GoBack(); 525 controller.GoBack();
527 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 526 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
528 EXPECT_TRUE(controller.CanGoForward()); 527 EXPECT_TRUE(controller.CanGoForward());
529 528
530 EXPECT_TRUE(NavigateToURLAndReplace(shell(), GURL("data:text/html,page1b"))); 529 EXPECT_TRUE(RendererLocationReplace(shell(), GURL("data:text/html,page1b")));
531 EXPECT_EQ(3, controller.GetEntryCount()); 530 EXPECT_EQ(3, controller.GetEntryCount());
532 EXPECT_EQ(3, RendererHistoryLength(shell())); 531 EXPECT_EQ(3, RendererHistoryLength(shell()));
533 EXPECT_TRUE(controller.CanGoForward()); 532 EXPECT_TRUE(controller.CanGoForward());
534 533
535 // Note that there's no way to access the renderer's notion of the history 534 // Note that there's no way to access the renderer's notion of the history
536 // offset via JavaScript. Checking just the history length, though, is enough; 535 // offset via JavaScript. Checking just the history length, though, is enough;
537 // if the replacement failed, there would be a new history entry and thus an 536 // if the replacement failed, there would be a new history entry and thus an
538 // incorrect length. 537 // incorrect length.
539 } 538 }
540 539
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 const GURL page_url = embedded_test_server()->GetURL( 573 const GURL page_url = embedded_test_server()->GetURL(
575 "/navigation_controller/simple_page_1.html"); 574 "/navigation_controller/simple_page_1.html");
576 575
577 // Use data scheme first so that the next page will be loaded 576 // Use data scheme first so that the next page will be loaded
578 // in a separate site instance. 577 // in a separate site instance.
579 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page1"))); 578 EXPECT_TRUE(NavigateToURL(shell(), GURL("data:text/html,page1")));
580 EXPECT_EQ(1, controller.GetEntryCount()); 579 EXPECT_EQ(1, controller.GetEntryCount());
581 EXPECT_NE(-1, shell()->web_contents()->GetMaxPageID()); 580 EXPECT_NE(-1, shell()->web_contents()->GetMaxPageID());
582 581
583 // Now navigate and replace the current entry. 582 // Now navigate and replace the current entry.
584 NavigateToURLAndReplace(shell(), page_url); 583 RendererLocationReplace(shell(), page_url);
585 EXPECT_EQ(1, controller.GetEntryCount()); 584 EXPECT_EQ(1, controller.GetEntryCount());
586 585
587 // Page ID should be updated. 586 // Page ID should be updated.
588 EXPECT_NE(-1, shell()->web_contents()->GetMaxPageID()); 587 EXPECT_NE(-1, shell()->web_contents()->GetMaxPageID());
589 588
590 // Reload the page and verify that we don't hit 589 // Reload the page and verify that we don't hit
591 // a DCHECK in |RenderFrameImpl::NavigateInternal|. 590 // a DCHECK in |RenderFrameImpl::NavigateInternal|.
592 controller.Reload(false); 591 controller.Reload(false);
593 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 592 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
594 593
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 // Make a new entry ... 967 // Make a new entry ...
969 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 968 NavigateToURL(shell(), GURL(url::kAboutBlankURL));
970 EXPECT_EQ(3, controller.GetEntryCount()); 969 EXPECT_EQ(3, controller.GetEntryCount());
971 970
972 // ... and replace it with a failed load. 971 // ... and replace it with a failed load.
973 // TODO(creis): Make this be NEW_PAGE along with the other location.replace 972 // TODO(creis): Make this be NEW_PAGE along with the other location.replace
974 // cases. There isn't much impact to having this be EXISTING_PAGE for now. 973 // cases. There isn't much impact to having this be EXISTING_PAGE for now.
975 // See https://crbug.com/596707. 974 // See https://crbug.com/596707.
976 { 975 {
977 FrameNavigateParamsCapturer capturer(root); 976 FrameNavigateParamsCapturer capturer(root);
978 NavigateToURLAndReplace(shell(), error_url); 977 RendererLocationReplace(shell(), error_url);
979 capturer.Wait(); 978 capturer.Wait();
980 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 979 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
981 NavigationEntry* entry = controller.GetLastCommittedEntry(); 980 NavigationEntry* entry = controller.GetLastCommittedEntry();
982 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); 981 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
983 EXPECT_EQ(3, controller.GetEntryCount()); 982 EXPECT_EQ(3, controller.GetEntryCount());
984 } 983 }
985 984
986 // Make a new web ui page to force a process swap ... 985 // Make a new web ui page to force a process swap ...
987 GURL web_ui_page(std::string(kChromeUIScheme) + "://" + 986 GURL web_ui_page(std::string(kChromeUIScheme) + "://" +
988 std::string(kChromeUIGpuHost)); 987 std::string(kChromeUIGpuHost));
989 NavigateToURL(shell(), web_ui_page); 988 NavigateToURL(shell(), web_ui_page);
990 EXPECT_EQ(4, controller.GetEntryCount()); 989 EXPECT_EQ(4, controller.GetEntryCount());
991 990
992 // ... and replace it with a failed load. (It is NEW_PAGE for the reason noted 991 // ... and replace it with a failed load. (It is NEW_PAGE for the reason noted
993 // above.) 992 // above.)
994 { 993 {
995 FrameNavigateParamsCapturer capturer(root); 994 FrameNavigateParamsCapturer capturer(root);
996 NavigateToURLAndReplace(shell(), error_url); 995 RendererLocationReplace(shell(), error_url);
997 capturer.Wait(); 996 capturer.Wait();
998 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 997 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
999 NavigationEntry* entry = controller.GetLastCommittedEntry(); 998 NavigationEntry* entry = controller.GetLastCommittedEntry();
1000 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); 999 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
1001 EXPECT_EQ(4, controller.GetEntryCount()); 1000 EXPECT_EQ(4, controller.GetEntryCount());
1002 } 1001 }
1003 } 1002 }
1004 1003
1005 // Various tests for navigation type classifications. TODO(avi): It's rather 1004 // Various tests for navigation type classifications. TODO(avi): It's rather
1006 // bogus that the same info is in two different enums; http://crbug.com/453555. 1005 // bogus that the same info is in two different enums; http://crbug.com/453555.
(...skipping 4603 matching lines...) Expand 10 before | Expand all | Expand 10 after
5610 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { 5609 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
5611 EXPECT_EQ(1U, nav_entry->root_node()->children.size()); 5610 EXPECT_EQ(1U, nav_entry->root_node()->children.size());
5612 EXPECT_EQ(tree_node, nav_entry->root_node()->children[0]); 5611 EXPECT_EQ(tree_node, nav_entry->root_node()->children[0]);
5613 } 5612 }
5614 5613
5615 EXPECT_TRUE(ExecuteScript(root, kRemoveFrameScript)); 5614 EXPECT_TRUE(ExecuteScript(root, kRemoveFrameScript));
5616 EXPECT_EQ(0U, root->child_count()); 5615 EXPECT_EQ(0U, root->child_count());
5617 } 5616 }
5618 5617
5619 } // namespace content 5618 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/test/test_render_frame_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698