| 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 |