OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |