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

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

Issue 2561983002: NavigationController: Reload methods migration (Closed)
Patch Set: one more mac build fix Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 1211 matching lines...) Expand 10 before | Expand all | Expand 10 after
1222 1222
1223 // This should not clear the pending entry or notify of a navigation state 1223 // This should not clear the pending entry or notify of a navigation state
1224 // change, so that we keep displaying kNewURL (until the user clears it). 1224 // change, so that we keep displaying kNewURL (until the user clears it).
1225 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 1225 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
1226 EXPECT_TRUE(controller.GetPendingEntry()); 1226 EXPECT_TRUE(controller.GetPendingEntry());
1227 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); 1227 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex());
1228 EXPECT_EQ(1, delegate->navigation_state_change_count()); 1228 EXPECT_EQ(1, delegate->navigation_state_change_count());
1229 NavigationEntry* pending_entry = controller.GetPendingEntry(); 1229 NavigationEntry* pending_entry = controller.GetPendingEntry();
1230 1230
1231 // Ensure that a reload keeps the same pending entry. 1231 // Ensure that a reload keeps the same pending entry.
1232 controller.Reload(true); 1232 controller.Reload(ReloadType::NORMAL, true);
1233 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 1233 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
1234 EXPECT_TRUE(controller.GetPendingEntry()); 1234 EXPECT_TRUE(controller.GetPendingEntry());
1235 EXPECT_EQ(pending_entry, controller.GetPendingEntry()); 1235 EXPECT_EQ(pending_entry, controller.GetPendingEntry());
1236 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); 1236 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex());
1237 1237
1238 contents()->SetDelegate(NULL); 1238 contents()->SetDelegate(NULL);
1239 } 1239 }
1240 1240
1241 // Tests that the pending URL is not visible during a renderer-initiated 1241 // Tests that the pending URL is not visible during a renderer-initiated
1242 // redirect and abort. See http://crbug.com/83031. 1242 // redirect and abort. See http://crbug.com/83031.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 int entry_id = controller.GetPendingEntry()->GetUniqueID(); 1369 int entry_id = controller.GetPendingEntry()->GetUniqueID();
1370 EXPECT_EQ(0U, notifications.size()); 1370 EXPECT_EQ(0U, notifications.size());
1371 main_test_rfh()->PrepareForCommit(); 1371 main_test_rfh()->PrepareForCommit();
1372 main_test_rfh()->SendNavigate(entry_id, true, url1); 1372 main_test_rfh()->SendNavigate(entry_id, true, url1);
1373 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1373 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1374 navigation_entry_committed_counter_ = 0; 1374 navigation_entry_committed_counter_ = 0;
1375 ASSERT_TRUE(controller.GetVisibleEntry()); 1375 ASSERT_TRUE(controller.GetVisibleEntry());
1376 controller.GetVisibleEntry()->SetTitle(base::ASCIIToUTF16("Title")); 1376 controller.GetVisibleEntry()->SetTitle(base::ASCIIToUTF16("Title"));
1377 entry_id = controller.GetLastCommittedEntry()->GetUniqueID(); 1377 entry_id = controller.GetLastCommittedEntry()->GetUniqueID();
1378 1378
1379 controller.Reload(true); 1379 controller.Reload(ReloadType::NORMAL, true);
1380 EXPECT_EQ(0U, notifications.size()); 1380 EXPECT_EQ(0U, notifications.size());
1381 1381
1382 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp(); 1382 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp();
1383 EXPECT_FALSE(timestamp.is_null()); 1383 EXPECT_FALSE(timestamp.is_null());
1384 1384
1385 // The reload is pending. 1385 // The reload is pending.
1386 EXPECT_EQ(controller.GetEntryCount(), 1); 1386 EXPECT_EQ(controller.GetEntryCount(), 1);
1387 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 1387 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
1388 EXPECT_EQ(controller.GetPendingEntryIndex(), 0); 1388 EXPECT_EQ(controller.GetPendingEntryIndex(), 0);
1389 EXPECT_TRUE(controller.GetLastCommittedEntry()); 1389 EXPECT_TRUE(controller.GetLastCommittedEntry());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1425 1425
1426 controller.LoadURL( 1426 controller.LoadURL(
1427 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); 1427 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1428 int entry_id = controller.GetPendingEntry()->GetUniqueID(); 1428 int entry_id = controller.GetPendingEntry()->GetUniqueID();
1429 main_test_rfh()->PrepareForCommit(); 1429 main_test_rfh()->PrepareForCommit();
1430 main_test_rfh()->SendNavigate(entry_id, true, url1); 1430 main_test_rfh()->SendNavigate(entry_id, true, url1);
1431 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1431 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1432 navigation_entry_committed_counter_ = 0; 1432 navigation_entry_committed_counter_ = 0;
1433 entry_id = controller.GetLastCommittedEntry()->GetUniqueID(); 1433 entry_id = controller.GetLastCommittedEntry()->GetUniqueID();
1434 1434
1435 controller.Reload(true); 1435 controller.Reload(ReloadType::NORMAL, true);
1436 EXPECT_EQ(0U, notifications.size()); 1436 EXPECT_EQ(0U, notifications.size());
1437 1437
1438 main_test_rfh()->PrepareForCommitWithServerRedirect(url2); 1438 main_test_rfh()->PrepareForCommitWithServerRedirect(url2);
1439 main_test_rfh()->SendNavigate(entry_id, true, url2); 1439 main_test_rfh()->SendNavigate(entry_id, true, url2);
1440 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1440 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1441 navigation_entry_committed_counter_ = 0; 1441 navigation_entry_committed_counter_ = 0;
1442 1442
1443 // Now the reload is committed. 1443 // Now the reload is committed.
1444 EXPECT_EQ(controller.GetEntryCount(), 2); 1444 EXPECT_EQ(controller.GetEntryCount(), 2);
1445 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1); 1445 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1);
(...skipping 17 matching lines...) Expand all
1463 main_test_rfh()->PrepareForCommit(); 1463 main_test_rfh()->PrepareForCommit();
1464 main_test_rfh()->SendNavigate(entry_id, true, url1); 1464 main_test_rfh()->SendNavigate(entry_id, true, url1);
1465 ASSERT_TRUE(controller.GetVisibleEntry()); 1465 ASSERT_TRUE(controller.GetVisibleEntry());
1466 1466
1467 // Make the entry believe its RenderProcessHost is a guest. 1467 // Make the entry believe its RenderProcessHost is a guest.
1468 NavigationEntryImpl* entry1 = controller.GetVisibleEntry(); 1468 NavigationEntryImpl* entry1 = controller.GetVisibleEntry();
1469 reinterpret_cast<MockRenderProcessHost*>( 1469 reinterpret_cast<MockRenderProcessHost*>(
1470 entry1->site_instance()->GetProcess())->set_is_for_guests_only(true); 1470 entry1->site_instance()->GetProcess())->set_is_for_guests_only(true);
1471 1471
1472 // And reload. 1472 // And reload.
1473 controller.Reload(true); 1473 controller.Reload(ReloadType::NORMAL, true);
1474 1474
1475 // The reload is pending. Check that the NavigationEntry didn't get replaced 1475 // The reload is pending. Check that the NavigationEntry didn't get replaced
1476 // because of having the wrong process. 1476 // because of having the wrong process.
1477 EXPECT_EQ(controller.GetEntryCount(), 1); 1477 EXPECT_EQ(controller.GetEntryCount(), 1);
1478 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 1478 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
1479 EXPECT_EQ(controller.GetPendingEntryIndex(), 0); 1479 EXPECT_EQ(controller.GetPendingEntryIndex(), 0);
1480 1480
1481 NavigationEntryImpl* entry2 = controller.GetPendingEntry(); 1481 NavigationEntryImpl* entry2 = controller.GetPendingEntry();
1482 EXPECT_EQ(entry1, entry2); 1482 EXPECT_EQ(entry1, entry2);
1483 } 1483 }
(...skipping 28 matching lines...) Expand all
1512 entry_id = controller.GetLastCommittedEntry()->GetUniqueID(); 1512 entry_id = controller.GetLastCommittedEntry()->GetUniqueID();
1513 1513
1514 // The NavigationEntry should save both the original URL and the final 1514 // The NavigationEntry should save both the original URL and the final
1515 // redirected URL. 1515 // redirected URL.
1516 EXPECT_EQ( 1516 EXPECT_EQ(
1517 original_url, controller.GetVisibleEntry()->GetOriginalRequestURL()); 1517 original_url, controller.GetVisibleEntry()->GetOriginalRequestURL());
1518 EXPECT_EQ(final_url, controller.GetVisibleEntry()->GetURL()); 1518 EXPECT_EQ(final_url, controller.GetVisibleEntry()->GetURL());
1519 1519
1520 // Reload using the original URL. 1520 // Reload using the original URL.
1521 controller.GetVisibleEntry()->SetTitle(base::ASCIIToUTF16("Title")); 1521 controller.GetVisibleEntry()->SetTitle(base::ASCIIToUTF16("Title"));
1522 controller.ReloadOriginalRequestURL(false); 1522 controller.Reload(ReloadType::ORIGINAL_REQUEST_URL, false);
Takashi Toyoshima 2016/12/15 06:21:52 testing
1523 EXPECT_EQ(0U, notifications.size()); 1523 EXPECT_EQ(0U, notifications.size());
1524 1524
1525 // The reload is pending. The request should point to the original URL. 1525 // The reload is pending. The request should point to the original URL.
1526 EXPECT_EQ(original_url, navigated_url()); 1526 EXPECT_EQ(original_url, navigated_url());
1527 EXPECT_EQ(controller.GetEntryCount(), 1); 1527 EXPECT_EQ(controller.GetEntryCount(), 1);
1528 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 1528 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
1529 EXPECT_EQ(controller.GetPendingEntryIndex(), 0); 1529 EXPECT_EQ(controller.GetPendingEntryIndex(), 0);
1530 EXPECT_TRUE(controller.GetLastCommittedEntry()); 1530 EXPECT_TRUE(controller.GetLastCommittedEntry());
1531 EXPECT_TRUE(controller.GetPendingEntry()); 1531 EXPECT_TRUE(controller.GetPendingEntry());
1532 EXPECT_FALSE(controller.CanGoBack()); 1532 EXPECT_FALSE(controller.CanGoBack());
(...skipping 1918 matching lines...) Expand 10 before | Expand all | Expand 10 after
3451 // A transient entry is added, interrupting the navigation. 3451 // A transient entry is added, interrupting the navigation.
3452 std::unique_ptr<NavigationEntry> transient_entry(new NavigationEntryImpl); 3452 std::unique_ptr<NavigationEntry> transient_entry(new NavigationEntryImpl);
3453 transient_entry->SetURL(transient_url); 3453 transient_entry->SetURL(transient_url);
3454 controller.SetTransientEntry(std::move(transient_entry)); 3454 controller.SetTransientEntry(std::move(transient_entry));
3455 EXPECT_TRUE(controller.GetTransientEntry()); 3455 EXPECT_TRUE(controller.GetTransientEntry());
3456 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL()); 3456 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
3457 3457
3458 // The page is reloaded, which should remove the pending entry for |url1| and 3458 // The page is reloaded, which should remove the pending entry for |url1| and
3459 // the transient entry for |transient_url|, and start a navigation to 3459 // the transient entry for |transient_url|, and start a navigation to
3460 // |transient_url|. 3460 // |transient_url|.
3461 controller.Reload(true); 3461 controller.Reload(ReloadType::NORMAL, true);
3462 entry_id = controller.GetPendingEntry()->GetUniqueID(); 3462 entry_id = controller.GetPendingEntry()->GetUniqueID();
3463 EXPECT_FALSE(controller.GetTransientEntry()); 3463 EXPECT_FALSE(controller.GetTransientEntry());
3464 EXPECT_TRUE(controller.GetPendingEntry()); 3464 EXPECT_TRUE(controller.GetPendingEntry());
3465 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL()); 3465 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
3466 ASSERT_EQ(controller.GetEntryCount(), 1); 3466 ASSERT_EQ(controller.GetEntryCount(), 1);
3467 EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), url0); 3467 EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), url0);
3468 3468
3469 // Load of |transient_url| completes. 3469 // Load of |transient_url| completes.
3470 main_test_rfh()->PrepareForCommit(); 3470 main_test_rfh()->PrepareForCommit();
3471 main_test_rfh()->SendNavigate(entry_id, true, transient_url); 3471 main_test_rfh()->SendNavigate(entry_id, true, transient_url);
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
3974 NavigateAndCommit(url1); 3974 NavigateAndCommit(url1);
3975 controller.GetVisibleEntry()->SetTitle(title); 3975 controller.GetVisibleEntry()->SetTitle(title);
3976 NavigateAndCommit(url2); 3976 NavigateAndCommit(url2);
3977 3977
3978 std::unique_ptr<WebContents> clone(controller.GetWebContents()->Clone()); 3978 std::unique_ptr<WebContents> clone(controller.GetWebContents()->Clone());
3979 clone->GetController().LoadIfNecessary(); 3979 clone->GetController().LoadIfNecessary();
3980 3980
3981 ASSERT_EQ(2, clone->GetController().GetEntryCount()); 3981 ASSERT_EQ(2, clone->GetController().GetEntryCount());
3982 EXPECT_EQ(1, clone->GetController().GetPendingEntryIndex()); 3982 EXPECT_EQ(1, clone->GetController().GetPendingEntryIndex());
3983 3983
3984 clone->GetController().Reload(true); 3984 clone->GetController().Reload(ReloadType::NORMAL, true);
3985 EXPECT_EQ(1, clone->GetController().GetPendingEntryIndex()); 3985 EXPECT_EQ(1, clone->GetController().GetPendingEntryIndex());
3986 } 3986 }
3987 3987
3988 // Make sure that cloning a WebContentsImpl doesn't copy interstitials. 3988 // Make sure that cloning a WebContentsImpl doesn't copy interstitials.
3989 TEST_F(NavigationControllerTest, CloneOmitsInterstitials) { 3989 TEST_F(NavigationControllerTest, CloneOmitsInterstitials) {
3990 NavigationControllerImpl& controller = controller_impl(); 3990 NavigationControllerImpl& controller = controller_impl();
3991 const GURL url1("http://foo1"); 3991 const GURL url1("http://foo1");
3992 const GURL url2("http://foo2"); 3992 const GURL url2("http://foo2");
3993 3993
3994 NavigateAndCommit(url1); 3994 NavigateAndCommit(url1);
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
5069 params.page_state = PageState::CreateFromURL(replace_url); 5069 params.page_state = PageState::CreateFromURL(replace_url);
5070 params.was_within_same_page = true; 5070 params.was_within_same_page = true;
5071 params.method = "GET"; 5071 params.method = "GET";
5072 params.post_id = -1; 5072 params.post_id = -1;
5073 main_test_rfh()->SendRendererInitiatedNavigationRequest(replace_url, false); 5073 main_test_rfh()->SendRendererInitiatedNavigationRequest(replace_url, false);
5074 main_test_rfh()->PrepareForCommit(); 5074 main_test_rfh()->PrepareForCommit();
5075 contents()->GetMainFrame()->SendNavigateWithParams(&params); 5075 contents()->GetMainFrame()->SendNavigateWithParams(&params);
5076 5076
5077 // Now reload. replaceState overrides the POST, so we should not show a 5077 // Now reload. replaceState overrides the POST, so we should not show a
5078 // repost warning dialog. 5078 // repost warning dialog.
5079 controller_impl().Reload(true); 5079 controller_impl().Reload(ReloadType::NORMAL, true);
5080 EXPECT_EQ(0, delegate->repost_form_warning_count()); 5080 EXPECT_EQ(0, delegate->repost_form_warning_count());
5081 } 5081 }
5082 5082
5083 TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) { 5083 TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) {
5084 GURL url("http://foo"); 5084 GURL url("http://foo");
5085 controller().LoadURL(url, Referrer(), ui::PAGE_TRANSITION_TYPED, 5085 controller().LoadURL(url, Referrer(), ui::PAGE_TRANSITION_TYPED,
5086 std::string()); 5086 std::string());
5087 FrameHostMsg_DidCommitProvisionalLoad_Params params; 5087 FrameHostMsg_DidCommitProvisionalLoad_Params params;
5088 params.nav_entry_id = 0; 5088 params.nav_entry_id = 0;
5089 params.did_create_new_entry = true; 5089 params.did_create_new_entry = true;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
5205 // means that occasionally a navigation conflict will end up with one entry 5205 // means that occasionally a navigation conflict will end up with one entry
5206 // bubbling to the end of the entry list, but that's the least-bad option. 5206 // bubbling to the end of the entry list, but that's the least-bad option.
5207 EXPECT_EQ(3, controller.GetEntryCount()); 5207 EXPECT_EQ(3, controller.GetEntryCount());
5208 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); 5208 EXPECT_EQ(2, controller.GetCurrentEntryIndex());
5209 EXPECT_EQ(url_a, controller.GetEntryAtIndex(0)->GetURL()); 5209 EXPECT_EQ(url_a, controller.GetEntryAtIndex(0)->GetURL());
5210 EXPECT_EQ(url_c, controller.GetEntryAtIndex(1)->GetURL()); 5210 EXPECT_EQ(url_c, controller.GetEntryAtIndex(1)->GetURL());
5211 EXPECT_EQ(url_b, controller.GetEntryAtIndex(2)->GetURL()); 5211 EXPECT_EQ(url_b, controller.GetEntryAtIndex(2)->GetURL());
5212 } 5212 }
5213 5213
5214 } // namespace content 5214 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698