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

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

Issue 1661423002: Solidify Entry discarding logic (NavigationHandle keeps its ID) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix check that's invalid when base url has invalid url. Added TODO Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include <utility> 9 #include <utility>
10 10
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 navigation_entry_committed_counter_ = 0; 376 navigation_entry_committed_counter_ = 0;
377 // Check that we can go to any valid offset into the history. 377 // Check that we can go to any valid offset into the history.
378 for (size_t j = 0; j < urls.size(); ++j) 378 for (size_t j = 0; j < urls.size(); ++j)
379 EXPECT_TRUE(controller.CanGoToOffset(j - url_index)); 379 EXPECT_TRUE(controller.CanGoToOffset(j - url_index));
380 // Check that we can't go beyond the beginning or end of the history. 380 // Check that we can't go beyond the beginning or end of the history.
381 EXPECT_FALSE(controller.CanGoToOffset(-(url_index + 1))); 381 EXPECT_FALSE(controller.CanGoToOffset(-(url_index + 1)));
382 EXPECT_FALSE(controller.CanGoToOffset(urls.size() - url_index)); 382 EXPECT_FALSE(controller.CanGoToOffset(urls.size() - url_index));
383 } 383 }
384 } 384 }
385 385
386 // This test case was added to reproduce crbug.com/513742. The repro steps are
387 // as follows:
388 // 1. Pending entry for A is created.
389 // 2. DidStartProvisionalLoad message for A arrives.
390 // 3. Pending entry for B is created.
391 // 4. DidFailProvisionalLoad message for A arrives. The logic here discards.
392 // 5. DidStartProvisionalLoad message for B arrives.
393 //
394 // At step (4), the pending entry for B is discarded, when A is the one that
395 // is being aborted. This caused the last committed entry to be displayed in
396 // the omnibox, which is the entry before A was created.
397 TEST_F(NavigationControllerTest, DontDiscardWrongPendingEntry) {
398 NavigationControllerImpl& controller = controller_impl();
399 GURL initial_url("http://www.google.com");
400 GURL url_1("http://foo.com");
401 GURL url_2("http://foo2.com");
402
403 // Navigate inititally. This is the url that could erroneously be the visible
404 // entry when url_1 fails.
405 NavigateAndCommit(initial_url);
406
407 // Set the pending entry as url_1 and receive the DidStartProvisionalLoad
408 // message, creating the NavigationHandle.
409 controller.LoadURL(url_1, Referrer(), ui::PAGE_TRANSITION_TYPED,
410 std::string());
411 EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_1);
412 main_test_rfh()->SimulateNavigationStart(url_1);
413 EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_1);
414
415 // Navigate to url_2, aborting url_1 before the DidStartProvisionalLoad
416 // message is received for url_2. Do not discard the pending entry for url_2
417 // here.
418 controller.LoadURL(url_2, Referrer(), ui::PAGE_TRANSITION_TYPED,
419 std::string());
420 EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_2);
421 main_test_rfh()->SimulateNavigationError(url_1, net::ERR_ABORTED);
422 EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_2);
423
424 // Get the DidStartProvisionalLoad message for url_2.
425 main_test_rfh()->SimulateNavigationStart(url_2);
426
427 EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_2);
428 }
429
386 TEST_F(NavigationControllerTest, LoadURL) { 430 TEST_F(NavigationControllerTest, LoadURL) {
387 NavigationControllerImpl& controller = controller_impl(); 431 NavigationControllerImpl& controller = controller_impl();
388 TestNotificationTracker notifications; 432 TestNotificationTracker notifications;
389 RegisterForAllNavNotifications(&notifications, &controller); 433 RegisterForAllNavNotifications(&notifications, &controller);
390 434
391 const GURL url1("http://foo1"); 435 const GURL url1("http://foo1");
392 const GURL url2("http://foo2"); 436 const GURL url2("http://foo2");
393 437
394 controller.LoadURL( 438 controller.LoadURL(
395 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); 439 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
(...skipping 4726 matching lines...) Expand 10 before | Expand all | Expand 10 after
5122 EXPECT_EQ(default_ssl_status.connection_status, 5166 EXPECT_EQ(default_ssl_status.connection_status,
5123 details.ssl_status.connection_status); 5167 details.ssl_status.connection_status);
5124 EXPECT_EQ(default_ssl_status.content_status, 5168 EXPECT_EQ(default_ssl_status.content_status,
5125 details.ssl_status.content_status); 5169 details.ssl_status.content_status);
5126 EXPECT_EQ(0u, details.ssl_status.signed_certificate_timestamp_ids.size()); 5170 EXPECT_EQ(0u, details.ssl_status.signed_certificate_timestamp_ids.size());
5127 5171
5128 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count()); 5172 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count());
5129 } 5173 }
5130 5174
5131 } // namespace content 5175 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_controller_impl.cc ('k') | content/browser/frame_host/navigation_handle_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698