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

Side by Side Diff: ios/web/navigation/crw_session_controller_unittest.mm

Issue 2838003002: Fix missing back navigation item when pending item is displayed. (Closed)
Patch Set: Fix edge case (no committed item) and added unit test to cover. Created 3 years, 7 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 | « ios/web/navigation/crw_session_controller.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 #import "ios/web/navigation/crw_session_controller.h" 5 #import "ios/web/navigation/crw_session_controller.h"
6 6
7 #import <Foundation/Foundation.h> 7 #import <Foundation/Foundation.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 [session_controller_ commitPendingItem]; 987 [session_controller_ commitPendingItem];
988 [session_controller_ 988 [session_controller_
989 addPendingItem:GURL("http://www.example.com/2") 989 addPendingItem:GURL("http://www.example.com/2")
990 referrer:MakeReferrer("http://www.example.com/c") 990 referrer:MakeReferrer("http://www.example.com/c")
991 transition:ui::PAGE_TRANSITION_LINK 991 transition:ui::PAGE_TRANSITION_LINK
992 initiationType:web::NavigationInitiationType::USER_INITIATED 992 initiationType:web::NavigationInitiationType::USER_INITIATED
993 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 993 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
994 [session_controller_ commitPendingItem]; 994 [session_controller_ commitPendingItem];
995 995
996 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); 996 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex);
997 web::NavigationItemList backItems = [session_controller_ backwardItems]; 997 web::NavigationItemList back_items = [session_controller_ backwardItems];
998 EXPECT_EQ(2U, backItems.size()); 998 EXPECT_EQ(2U, back_items.size());
999 EXPECT_TRUE([session_controller_ forwardItems].empty()); 999 EXPECT_TRUE([session_controller_ forwardItems].empty());
1000 EXPECT_EQ("http://www.example.com/redirect", backItems[0]->GetURL().spec()); 1000 EXPECT_EQ("http://www.example.com/redirect", back_items[0]->GetURL().spec());
1001 1001
1002 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO]; 1002 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
1003 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); 1003 EXPECT_EQ(1U, [session_controller_ backwardItems].size());
1004 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); 1004 EXPECT_EQ(1U, [session_controller_ forwardItems].size());
1005 1005
1006 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO]; 1006 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO];
1007 web::NavigationItemList forwardItems = [session_controller_ forwardItems]; 1007 web::NavigationItemList forwardItems = [session_controller_ forwardItems];
1008 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); 1008 EXPECT_EQ(0U, [session_controller_ backwardItems].size());
1009 EXPECT_EQ(2U, forwardItems.size()); 1009 EXPECT_EQ(2U, forwardItems.size());
1010 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec()); 1010 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec());
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 [session_controller_ 1229 [session_controller_
1230 addPendingItem:GURL("http://www.example.com/0") 1230 addPendingItem:GURL("http://www.example.com/0")
1231 referrer:MakeReferrer("http://www.example.com/b") 1231 referrer:MakeReferrer("http://www.example.com/b")
1232 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT 1232 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT
1233 initiationType:web::NavigationInitiationType::RENDERER_INITIATED 1233 initiationType:web::NavigationInitiationType::RENDERER_INITIATED
1234 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1234 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1235 [session_controller_ commitPendingItem]; 1235 [session_controller_ commitPendingItem];
1236 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); 1236 EXPECT_EQ(0U, [session_controller_ backwardItems].size());
1237 } 1237 }
1238 1238
1239 // Tests that |-pendingItem| is not considered part of session history so that
1240 // |-backwardItems| returns the second last committed item even if there is a
1241 // pendign item.
1242 TEST_F(CRWSessionControllerTest, NewPendingItemIsHiddenFromHistory) {
1243 [session_controller_
1244 addPendingItem:GURL("http://www.example.com/0")
1245 referrer:MakeReferrer("http://www.example.com/a")
1246 transition:ui::PAGE_TRANSITION_LINK
1247 initiationType:web::NavigationInitiationType::USER_INITIATED
1248 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1249 [session_controller_ commitPendingItem];
1250 [session_controller_
1251 addPendingItem:GURL("http://www.example.com/1")
1252 referrer:MakeReferrer("http://www.example.com/b")
1253 transition:ui::PAGE_TRANSITION_LINK
1254 initiationType:web::NavigationInitiationType::USER_INITIATED
1255 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1256 [session_controller_ commitPendingItem];
1257 [session_controller_
1258 addPendingItem:GURL("http://www.example.com/2")
1259 referrer:MakeReferrer("http://www.example.com/c")
1260 transition:ui::PAGE_TRANSITION_LINK
1261 initiationType:web::NavigationInitiationType::USER_INITIATED
1262 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1263
1264 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex);
1265 EXPECT_TRUE([session_controller_ pendingItem]);
1266 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
1267 EXPECT_EQ(GURL("http://www.example.com/2"), [session_controller_ currentURL]);
1268
1269 web::NavigationItemList back_items = [session_controller_ backwardItems];
1270 ASSERT_EQ(1U, back_items.size());
1271 EXPECT_EQ("http://www.example.com/0", back_items[0]->GetURL().spec());
1272 }
1273
1274 // Tests that |-backwardItems| returns all committed items if there is a
1275 // transient item. This can happen if an intersitial was loaded for SSL error.
1276 // See crbug.com/691311.
1277 TEST_F(CRWSessionControllerTest,
1278 BackwardItemsShouldContainAllCommittedIfCurrentIsTransient) {
1279 [session_controller_
1280 addPendingItem:GURL("http://www.example.com/0")
1281 referrer:MakeReferrer("http://www.example.com/a")
1282 transition:ui::PAGE_TRANSITION_LINK
1283 initiationType:web::NavigationInitiationType::USER_INITIATED
1284 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1285 [session_controller_ commitPendingItem];
1286 [session_controller_
1287 addTransientItemWithURL:GURL("http://www.example.com/1")];
1288
1289 EXPECT_EQ(0, session_controller_.get().lastCommittedItemIndex);
1290 EXPECT_TRUE([session_controller_ transientItem]);
1291 EXPECT_EQ(GURL("http://www.example.com/1"), [session_controller_ currentURL]);
1292
1293 web::NavigationItemList back_items = [session_controller_ backwardItems];
1294 ASSERT_EQ(1U, back_items.size());
1295 EXPECT_EQ("http://www.example.com/0", back_items[0]->GetURL().spec());
1296 }
1297
1298 // Tests that |-backwardItems| works as expected when the transient item is the
1299 // only item in history.
1300 TEST_F(CRWSessionControllerTest, BackwardItemsShouldBeEmptyIfFirstIsTransient) {
1301 [session_controller_
1302 addTransientItemWithURL:GURL("http://www.example.com/1")];
1303
1304 EXPECT_EQ(-1, session_controller_.get().lastCommittedItemIndex);
1305 EXPECT_TRUE([session_controller_ transientItem]);
1306 EXPECT_EQ(GURL("http://www.example.com/1"), [session_controller_ currentURL]);
1307
1308 web::NavigationItemList back_items = [session_controller_ backwardItems];
1309 EXPECT_TRUE(back_items.empty());
1310 }
1311
1239 } // anonymous namespace 1312 } // anonymous namespace
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698