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

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

Issue 2832853002: Handle correctly start and commit of non-latest navigations. (Closed)
Patch Set: Created 3 years, 8 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 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 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 [session_controller_ commitPendingItem]; 365 [session_controller_ commitPendingItem];
366 [session_controller_ 366 [session_controller_
367 addPendingItem:GURL("http://www.example.com/2") 367 addPendingItem:GURL("http://www.example.com/2")
368 referrer:MakeReferrer("http://www.example.com/c") 368 referrer:MakeReferrer("http://www.example.com/c")
369 transition:ui::PAGE_TRANSITION_LINK 369 transition:ui::PAGE_TRANSITION_LINK
370 initiationType:web::NavigationInitiationType::RENDERER_INITIATED 370 initiationType:web::NavigationInitiationType::RENDERER_INITIATED
371 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 371 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
372 [session_controller_ commitPendingItem]; 372 [session_controller_ commitPendingItem];
373 373
374 // Go back to the first item. 374 // Go back to the first item.
375 [session_controller_ goToItemAtIndex:0]; 375 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO];
376 376
377 // Create and commit a new pending item. 377 // Create and commit a new pending item.
378 [session_controller_ 378 [session_controller_
379 addPendingItem:GURL("http://www.example.com/2") 379 addPendingItem:GURL("http://www.example.com/2")
380 referrer:MakeReferrer("http://www.example.com/c") 380 referrer:MakeReferrer("http://www.example.com/c")
381 transition:ui::PAGE_TRANSITION_LINK 381 transition:ui::PAGE_TRANSITION_LINK
382 initiationType:web::NavigationInitiationType::RENDERER_INITIATED 382 initiationType:web::NavigationInitiationType::RENDERER_INITIATED
383 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 383 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
384 [session_controller_ commitPendingItem]; 384 [session_controller_ commitPendingItem];
385 385
(...skipping 23 matching lines...) Expand all
409 [session_controller_ 409 [session_controller_
410 addPendingItem:GURL("http://www.example.com/2") 410 addPendingItem:GURL("http://www.example.com/2")
411 referrer:web::Referrer() 411 referrer:web::Referrer()
412 transition:ui::PAGE_TRANSITION_TYPED 412 transition:ui::PAGE_TRANSITION_TYPED
413 initiationType:web::NavigationInitiationType::USER_INITIATED 413 initiationType:web::NavigationInitiationType::USER_INITIATED
414 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 414 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
415 [session_controller_ commitPendingItem]; 415 [session_controller_ commitPendingItem];
416 ASSERT_EQ(3U, [session_controller_ items].size()); 416 ASSERT_EQ(3U, [session_controller_ items].size());
417 417
418 // Go to the middle, and commit first pending item index. 418 // Go to the middle, and commit first pending item index.
419 [session_controller_ goToItemAtIndex:1]; 419 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
420 [session_controller_ setPendingItemIndex:0]; 420 [session_controller_ setPendingItemIndex:0];
421 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); 421 ASSERT_EQ(0, [session_controller_ pendingItemIndex]);
422 web::NavigationItem* pending_item = [session_controller_ pendingItem]; 422 web::NavigationItem* pending_item = [session_controller_ pendingItem];
423 ASSERT_TRUE(pending_item); 423 ASSERT_TRUE(pending_item);
424 ASSERT_EQ(1, [session_controller_ lastCommittedItemIndex]); 424 ASSERT_EQ(1, [session_controller_ lastCommittedItemIndex]);
425 EXPECT_EQ(2, [session_controller_ previousItemIndex]); 425 EXPECT_EQ(2, [session_controller_ previousItemIndex]);
426 [session_controller_ commitPendingItem]; 426 [session_controller_ commitPendingItem];
427 427
428 // Verify that pending item has been committed and current and previous item 428 // Verify that pending item has been committed and current and previous item
429 // indices updated. 429 // indices updated.
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 [session_controller_ 817 [session_controller_
818 addPendingItem:GURL("http://www.url2.com") 818 addPendingItem:GURL("http://www.url2.com")
819 referrer:MakeReferrer("http://www.referer.com") 819 referrer:MakeReferrer("http://www.referer.com")
820 transition:ui::PAGE_TRANSITION_TYPED 820 transition:ui::PAGE_TRANSITION_TYPED
821 initiationType:web::NavigationInitiationType::USER_INITIATED 821 initiationType:web::NavigationInitiationType::USER_INITIATED
822 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 822 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
823 [session_controller_ commitPendingItem]; 823 [session_controller_ commitPendingItem];
824 824
825 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); 825 EXPECT_EQ(session_controller_.get().previousItemIndex, 1);
826 826
827 [session_controller_ goToItemAtIndex:1]; 827 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
828 EXPECT_EQ(session_controller_.get().previousItemIndex, 2); 828 EXPECT_EQ(session_controller_.get().previousItemIndex, 2);
829 829
830 [session_controller_ goToItemAtIndex:0]; 830 [session_controller_ goToItemAtIndex:0 discardNonCommittedItems:NO];
831 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); 831 EXPECT_EQ(session_controller_.get().previousItemIndex, 1);
832 832
833 [session_controller_ goToItemAtIndex:1]; 833 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
834 EXPECT_EQ(session_controller_.get().previousItemIndex, 0); 834 EXPECT_EQ(session_controller_.get().previousItemIndex, 0);
835 835
836 [session_controller_ goToItemAtIndex:2]; 836 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:NO];
837 EXPECT_EQ(session_controller_.get().previousItemIndex, 1); 837 EXPECT_EQ(session_controller_.get().previousItemIndex, 1);
838 } 838 }
839 839
840 TEST_F(CRWSessionControllerTest, PushNewItem) { 840 TEST_F(CRWSessionControllerTest, PushNewItem) {
841 std::vector<std::unique_ptr<web::NavigationItem>> items; 841 std::vector<std::unique_ptr<web::NavigationItem>> items;
842 items.push_back(CreateNavigationItem("http://www.firstpage.com", 842 items.push_back(CreateNavigationItem("http://www.firstpage.com",
843 "http://www.starturl.com", @"First")); 843 "http://www.starturl.com", @"First"));
844 items.push_back(CreateNavigationItem("http://www.secondpage.com", 844 items.push_back(CreateNavigationItem("http://www.secondpage.com",
845 "http://www.firstpage.com", @"Second")); 845 "http://www.firstpage.com", @"Second"));
846 items.push_back(CreateNavigationItem("http://www.thirdpage.com", 846 items.push_back(CreateNavigationItem("http://www.thirdpage.com",
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 backItems = [session_controller_ backwardItems];
998 EXPECT_EQ(2U, backItems.size()); 998 EXPECT_EQ(2U, backItems.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", backItems[0]->GetURL().spec());
1001 1001
1002 [session_controller_ goToItemAtIndex:1]; 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]; 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());
1011 } 1011 }
1012 1012
1013 // Tests going to items with existing and non-existing indices. 1013 // Tests going to items with existing and non-existing indices.
1014 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) { 1014 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) {
1015 [session_controller_ 1015 [session_controller_
1016 addPendingItem:GURL("http://www.example.com/0") 1016 addPendingItem:GURL("http://www.example.com/0")
(...skipping 28 matching lines...) Expand all
1045 referrer:MakeReferrer("http://www.example.com/d") 1045 referrer:MakeReferrer("http://www.example.com/d")
1046 transition:ui::PAGE_TRANSITION_LINK 1046 transition:ui::PAGE_TRANSITION_LINK
1047 initiationType:web::NavigationInitiationType::USER_INITIATED 1047 initiationType:web::NavigationInitiationType::USER_INITIATED
1048 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1048 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1049 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 1049 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1050 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex); 1050 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex);
1051 EXPECT_EQ(2, session_controller_.get().previousItemIndex); 1051 EXPECT_EQ(2, session_controller_.get().previousItemIndex);
1052 EXPECT_TRUE([session_controller_ pendingItem]); 1052 EXPECT_TRUE([session_controller_ pendingItem]);
1053 EXPECT_TRUE([session_controller_ transientItem]); 1053 EXPECT_TRUE([session_controller_ transientItem]);
1054 1054
1055 // Going back and forth without discaring transient and pending items.
1056 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:NO];
1057 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex);
1058 EXPECT_EQ(3, session_controller_.get().previousItemIndex);
1059 EXPECT_TRUE(session_controller_.get().pendingItem);
1060 EXPECT_TRUE(session_controller_.get().transientItem);
1061 [session_controller_ goToItemAtIndex:3 discardNonCommittedItems:NO];
1062 EXPECT_EQ(3, session_controller_.get().lastCommittedItemIndex);
1063 EXPECT_EQ(1, session_controller_.get().previousItemIndex);
1064 EXPECT_TRUE(session_controller_.get().pendingItem);
1065 EXPECT_TRUE(session_controller_.get().transientItem);
1066
1055 // Going back should discard transient and pending items. 1067 // Going back should discard transient and pending items.
1056 [session_controller_ goToItemAtIndex:1]; 1068 [session_controller_ goToItemAtIndex:1 discardNonCommittedItems:YES];
1057 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex); 1069 EXPECT_EQ(1, session_controller_.get().lastCommittedItemIndex);
1058 EXPECT_EQ(3, session_controller_.get().previousItemIndex); 1070 EXPECT_EQ(3, session_controller_.get().previousItemIndex);
1059 EXPECT_FALSE(session_controller_.get().pendingItem); 1071 EXPECT_FALSE(session_controller_.get().pendingItem);
1060 EXPECT_FALSE(session_controller_.get().transientItem); 1072 EXPECT_FALSE(session_controller_.get().transientItem);
1061 1073
1062 // Going forward should discard transient item. 1074 // Going forward should discard transient item.
1063 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 1075 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1064 EXPECT_TRUE(session_controller_.get().transientItem); 1076 EXPECT_TRUE(session_controller_.get().transientItem);
1065 [session_controller_ goToItemAtIndex:2]; 1077 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:YES];
1066 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1078 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex);
1067 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1079 EXPECT_EQ(1, session_controller_.get().previousItemIndex);
1068 EXPECT_FALSE(session_controller_.get().transientItem); 1080 EXPECT_FALSE(session_controller_.get().transientItem);
1069 1081
1070 // Out of bounds navigations should be no-op. 1082 // Out of bounds navigations should be no-op.
1071 [session_controller_ goToItemAtIndex:-1]; 1083 [session_controller_ goToItemAtIndex:-1 discardNonCommittedItems:NO];
1072 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1084 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex);
1073 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1085 EXPECT_EQ(1, session_controller_.get().previousItemIndex);
1074 [session_controller_ goToItemAtIndex:NSIntegerMax]; 1086 [session_controller_ goToItemAtIndex:NSIntegerMax
1087 discardNonCommittedItems:NO];
1075 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1088 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex);
1076 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1089 EXPECT_EQ(1, session_controller_.get().previousItemIndex);
1077 1090
1078 // Going to current index should not change the previous index. 1091 // Going to current index should not change the previous index.
1079 [session_controller_ goToItemAtIndex:2]; 1092 [session_controller_ goToItemAtIndex:2 discardNonCommittedItems:NO];
1080 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex); 1093 EXPECT_EQ(2, session_controller_.get().lastCommittedItemIndex);
1081 EXPECT_EQ(1, session_controller_.get().previousItemIndex); 1094 EXPECT_EQ(1, session_controller_.get().previousItemIndex);
1082 } 1095 }
1083 1096
1084 // Tests that visible URL is the same as transient URL if there are no committed 1097 // Tests that visible URL is the same as transient URL if there are no committed
1085 // items. 1098 // items.
1086 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { 1099 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) {
1087 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 1100 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1088 web::NavigationItem* visible_item = [session_controller_ visibleItem]; 1101 web::NavigationItem* visible_item = [session_controller_ visibleItem];
1089 ASSERT_TRUE(visible_item); 1102 ASSERT_TRUE(visible_item);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 addPendingItem:GURL("http://www.example.com/0") 1230 addPendingItem:GURL("http://www.example.com/0")
1218 referrer:MakeReferrer("http://www.example.com/b") 1231 referrer:MakeReferrer("http://www.example.com/b")
1219 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT 1232 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT
1220 initiationType:web::NavigationInitiationType::RENDERER_INITIATED 1233 initiationType:web::NavigationInitiationType::RENDERER_INITIATED
1221 userAgentOverrideOption:UserAgentOverrideOption::INHERIT]; 1234 userAgentOverrideOption:UserAgentOverrideOption::INHERIT];
1222 [session_controller_ commitPendingItem]; 1235 [session_controller_ commitPendingItem];
1223 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); 1236 EXPECT_EQ(0U, [session_controller_ backwardItems].size());
1224 } 1237 }
1225 1238
1226 } // anonymous namespace 1239 } // anonymous namespace
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_controller.mm ('k') | ios/web/navigation/navigation_manager_impl_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698