| Index: ios/web/navigation/crw_session_controller_unittest.mm
|
| diff --git a/ios/web/navigation/crw_session_controller_unittest.mm b/ios/web/navigation/crw_session_controller_unittest.mm
|
| index 7c7d017788ad1598d5cdca3fba267d1c5bf536d0..087aa4b0cb56e4dd90b07002b702cbaf8c292a1d 100644
|
| --- a/ios/web/navigation/crw_session_controller_unittest.mm
|
| +++ b/ios/web/navigation/crw_session_controller_unittest.mm
|
| @@ -473,7 +473,7 @@ void SetUp() override {
|
| }
|
|
|
| // Tests inserting session controller state.
|
| -TEST_F(CRWSessionControllerTest, InsertState) {
|
| +TEST_F(CRWSessionControllerTest, CopyState) {
|
| // Add 1 committed and 1 pending item to target controller.
|
| [session_controller_
|
| addPendingItem:GURL("http://www.url.com/2")
|
| @@ -504,8 +504,9 @@ void SetUp() override {
|
| initiationType:web::NavigationInitiationType::USER_INITIATED];
|
|
|
| // Insert and verify the state of target session controller.
|
| + EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]);
|
| [session_controller_
|
| - insertStateFromSessionController:other_session_controller.get()];
|
| + copyStateFromSessionControllerAndPrune:other_session_controller.get()];
|
|
|
| EXPECT_EQ(2U, [session_controller_ items].size());
|
| EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
|
| @@ -521,7 +522,7 @@ void SetUp() override {
|
| }
|
|
|
| // Tests inserting session controller state from empty session controller.
|
| -TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) {
|
| +TEST_F(CRWSessionControllerTest, CopyStateFromEmptySessionController) {
|
| // Add 2 committed items to target controller.
|
| [session_controller_
|
| addPendingItem:GURL("http://www.url.com/0")
|
| @@ -542,8 +543,9 @@ void SetUp() override {
|
| openedByDOM:NO]);
|
|
|
| // Insert and verify the state of target session controller.
|
| + EXPECT_TRUE([session_controller_ canPruneAllButLastCommittedItem]);
|
| [session_controller_
|
| - insertStateFromSessionController:other_session_controller.get()];
|
| + copyStateFromSessionControllerAndPrune:other_session_controller.get()];
|
| EXPECT_EQ(2U, [session_controller_ items].size());
|
| EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
|
| EXPECT_EQ(0, [session_controller_ previousNavigationIndex]);
|
| @@ -555,10 +557,12 @@ void SetUp() override {
|
| [session_controller_ URLForItemAtIndex:1]);
|
| }
|
|
|
| -// Tests inserting session controller state to empty session controller.
|
| -TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) {
|
| - // Create source session controller with 2 committed items and one
|
| - // pending item.
|
| +// Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op when the
|
| +// receiver has no last committed item.
|
| +TEST_F(CRWSessionControllerTest, CopyStateToEmptySessionController) {
|
| + EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
|
| +
|
| + // Create source session controller with 1 committed item.
|
| base::scoped_nsobject<CRWSessionController> other_session_controller(
|
| [[CRWSessionController alloc] initWithBrowserState:&browser_state_
|
| openedByDOM:NO]);
|
| @@ -573,46 +577,86 @@ void SetUp() override {
|
| referrer:web::Referrer()
|
| transition:ui::PAGE_TRANSITION_TYPED
|
| initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| +
|
| + // Attempt to copy |other_session_controller|'s state and verify that
|
| + // |session_controller_| is unchanged.
|
| + [session_controller_
|
| + copyStateFromSessionControllerAndPrune:other_session_controller];
|
| + EXPECT_TRUE([session_controller_ items].empty());
|
| + EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]);
|
| + EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
|
| + EXPECT_FALSE([session_controller_ currentItem]);
|
| + EXPECT_FALSE([session_controller_ pendingItem]);
|
| + EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
|
| +}
|
| +
|
| +// Tests that |-copyStateFromSessionControllerAndPrune:| is a no-op during a
|
| +// pending history navigation.
|
| +TEST_F(CRWSessionControllerTest, CopyStateDuringPendingHistoryNavigation) {
|
| + // Add 1 committed and 1 pending item to target controller.
|
| + [session_controller_
|
| + addPendingItem:GURL("http://www.url.com/1")
|
| + referrer:web::Referrer()
|
| + transition:ui::PAGE_TRANSITION_TYPED
|
| + initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| + [session_controller_ commitPendingItem];
|
| + [session_controller_
|
| + addPendingItem:GURL("http://www.url.com/2")
|
| + referrer:web::Referrer()
|
| + transition:ui::PAGE_TRANSITION_TYPED
|
| + initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| + [session_controller_ commitPendingItem];
|
| +
|
| + // Create source session controller with 1 committed item.
|
| + base::scoped_nsobject<CRWSessionController> other_session_controller(
|
| + [[CRWSessionController alloc] initWithBrowserState:&browser_state_
|
| + openedByDOM:NO]);
|
| + [other_session_controller
|
| + addPendingItem:GURL("http://www.url.com/0")
|
| + referrer:web::Referrer()
|
| + transition:ui::PAGE_TRANSITION_TYPED
|
| + initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| [other_session_controller commitPendingItem];
|
| [other_session_controller
|
| - addPendingItem:GURL("http://www.url.com/2")
|
| + addPendingItem:GURL("http://www.url.com/1")
|
| referrer:web::Referrer()
|
| transition:ui::PAGE_TRANSITION_TYPED
|
| initiationType:web::NavigationInitiationType::USER_INITIATED];
|
|
|
| - // Insert and verify the state of target session controller.
|
| - [session_controller_
|
| - insertStateFromSessionController:other_session_controller.get()];
|
| + // Set the pending item index to the first item.
|
| + [session_controller_ setPendingItemIndex:0];
|
| + EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
|
|
|
| + // Attempt to copy |other_session_controller|'s state and verify that
|
| + // |session_controller_| is unchanged.
|
| + [session_controller_
|
| + copyStateFromSessionControllerAndPrune:other_session_controller];
|
| EXPECT_EQ(2U, [session_controller_ items].size());
|
| EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
|
| - EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
|
| - EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
|
| - EXPECT_FALSE([session_controller_ pendingItem]);
|
| - EXPECT_EQ(GURL("http://www.url.com/0"),
|
| - [session_controller_ URLForItemAtIndex:0]);
|
| - EXPECT_EQ(GURL("http://www.url.com/1"),
|
| - [session_controller_ URLForItemAtIndex:1]);
|
| + EXPECT_EQ(0, [session_controller_ previousNavigationIndex]);
|
| + EXPECT_EQ(0, [session_controller_ pendingItemIndex]);
|
| + EXPECT_TRUE([session_controller_ pendingItem]);
|
| + EXPECT_EQ([session_controller_ previousItem],
|
| + [session_controller_ pendingItem]);
|
| }
|
|
|
| -// Tests inserting session controller state. Verifies that pending item index
|
| -// remains valid.
|
| -TEST_F(CRWSessionControllerTest,
|
| - InsertStateWithPendingItemIndexInTargetController) {
|
| - // Add 2 committed items and make the first item pending.
|
| +// Tests that |-copyStateFromSessionControllerAndPrune:| is a when a transient
|
| +// NavigationItem exists.
|
| +TEST_F(CRWSessionControllerTest, CopyStateWithTransientItem) {
|
| + // Add 1 committed and 1 pending item to target controller.
|
| [session_controller_
|
| - addPendingItem:GURL("http://www.url.com/2")
|
| + addPendingItem:GURL("http://www.url.com/1")
|
| referrer:web::Referrer()
|
| transition:ui::PAGE_TRANSITION_TYPED
|
| initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| [session_controller_ commitPendingItem];
|
| + GURL second_url = GURL("http://www.url.com/2");
|
| [session_controller_
|
| - addPendingItem:GURL("http://www.url.com/3")
|
| + addPendingItem:second_url
|
| referrer:web::Referrer()
|
| transition:ui::PAGE_TRANSITION_TYPED
|
| initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| - [session_controller_ commitPendingItem];
|
| - [session_controller_ setPendingItemIndex:0];
|
| + [session_controller_ addTransientItemWithURL:second_url];
|
|
|
| // Create source session controller with 1 committed item.
|
| base::scoped_nsobject<CRWSessionController> other_session_controller(
|
| @@ -624,21 +668,25 @@ void SetUp() override {
|
| transition:ui::PAGE_TRANSITION_TYPED
|
| initiationType:web::NavigationInitiationType::USER_INITIATED];
|
| [other_session_controller commitPendingItem];
|
| + [other_session_controller
|
| + addPendingItem:GURL("http://www.url.com/1")
|
| + referrer:web::Referrer()
|
| + transition:ui::PAGE_TRANSITION_TYPED
|
| + initiationType:web::NavigationInitiationType::USER_INITIATED];
|
|
|
| - // Insert and verify the state of target session controller.
|
| + // Attempt to copy |other_session_controller|'s state and verify that
|
| + // |session_controller_| is unchanged.
|
| + EXPECT_FALSE([session_controller_ canPruneAllButLastCommittedItem]);
|
| [session_controller_
|
| - insertStateFromSessionController:other_session_controller.get()];
|
| -
|
| - EXPECT_EQ(3U, [session_controller_ items].size());
|
| - EXPECT_EQ(2, [session_controller_ currentNavigationIndex]);
|
| + copyStateFromSessionControllerAndPrune:other_session_controller];
|
| + EXPECT_EQ(1U, [session_controller_ items].size());
|
| + EXPECT_EQ(0, [session_controller_ currentNavigationIndex]);
|
| EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
|
| - EXPECT_EQ(1, [session_controller_ pendingItemIndex]);
|
| - EXPECT_EQ(GURL("http://www.url.com/0"),
|
| - [session_controller_ URLForItemAtIndex:0]);
|
| - EXPECT_EQ(GURL("http://www.url.com/2"),
|
| - [session_controller_ URLForItemAtIndex:1]);
|
| - EXPECT_EQ(GURL("http://www.url.com/2"),
|
| - [session_controller_ pendingItem]->GetURL());
|
| + EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
|
| + EXPECT_TRUE([session_controller_ pendingItem]);
|
| + EXPECT_TRUE([session_controller_ transientItem]);
|
| + EXPECT_EQ([session_controller_ transientItem],
|
| + [session_controller_ currentItem]);
|
| }
|
|
|
| // Tests state of an empty session controller.
|
|
|