| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/navigation_manager_impl.h" | 5 #import "ios/web/navigation/navigation_manager_impl.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #import "base/mac/scoped_nsobject.h" | 8 #import "base/mac/scoped_nsobject.h" |
| 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" | 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" |
| 10 #import "ios/web/navigation/navigation_manager_delegate.h" | 10 #import "ios/web/navigation/navigation_manager_delegate.h" |
| 11 #include "ios/web/public/navigation_item.h" |
| 11 #include "ios/web/public/test/fakes/test_browser_state.h" | 12 #include "ios/web/public/test/fakes/test_browser_state.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 13 #include "testing/platform_test.h" | 14 #include "testing/platform_test.h" |
| 14 | 15 |
| 15 namespace web { | 16 namespace web { |
| 16 namespace { | 17 namespace { |
| 17 // Stub class for NavigationManagerDelegate. | 18 // Stub class for NavigationManagerDelegate. |
| 18 class TestNavigationManagerDelegate : public NavigationManagerDelegate { | 19 class TestNavigationManagerDelegate : public NavigationManagerDelegate { |
| 19 void GoToIndex(int index) override {} | 20 void GoToIndex(int index) override {} |
| 20 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override {} | 21 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override {} |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); | 56 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); |
| 56 EXPECT_FALSE(navigation_manager()->GetPreviousItem()); | 57 EXPECT_FALSE(navigation_manager()->GetPreviousItem()); |
| 57 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); | 58 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); |
| 58 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | 59 EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| 59 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 60 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 60 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); | 61 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); |
| 61 } | 62 } |
| 62 | 63 |
| 63 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. | 64 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. |
| 64 TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { | 65 TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { |
| 65 [session_controller() addPendingItem:GURL("http://www.url.com") | 66 navigation_manager()->AddPendingItem( |
| 66 referrer:Referrer() | 67 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 67 transition:ui::PAGE_TRANSITION_TYPED | 68 web::NavigationInitiationType::USER_INITIATED); |
| 68 rendererInitiated:NO]; | |
| 69 [session_controller() commitPendingItem]; | 69 [session_controller() commitPendingItem]; |
| 70 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 70 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 71 } | 71 } |
| 72 | 72 |
| 73 // Tests that GetPendingItemIndex() returns current item index if there is a | 73 // Tests that GetPendingItemIndex() returns current item index if there is a |
| 74 // pending entry. | 74 // pending entry. |
| 75 TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { | 75 TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { |
| 76 [session_controller() addPendingItem:GURL("http://www.url.com") | 76 navigation_manager()->AddPendingItem( |
| 77 referrer:Referrer() | 77 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 78 transition:ui::PAGE_TRANSITION_TYPED | 78 web::NavigationInitiationType::USER_INITIATED); |
| 79 rendererInitiated:NO]; | |
| 80 [session_controller() commitPendingItem]; | 79 [session_controller() commitPendingItem]; |
| 81 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 80 navigation_manager()->AddPendingItem( |
| 82 referrer:Referrer() | 81 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 83 transition:ui::PAGE_TRANSITION_TYPED | 82 web::NavigationInitiationType::USER_INITIATED); |
| 84 rendererInitiated:NO]; | |
| 85 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); | 83 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); |
| 86 } | 84 } |
| 87 | 85 |
| 88 // Tests that GetPendingItemIndex() returns same index as was set by | 86 // Tests that GetPendingItemIndex() returns same index as was set by |
| 89 // -[CRWSessionController setPendingItemIndex:]. | 87 // -[CRWSessionController setPendingItemIndex:]. |
| 90 TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { | 88 TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { |
| 91 [session_controller() addPendingItem:GURL("http://www.url.com") | 89 navigation_manager()->AddPendingItem( |
| 92 referrer:Referrer() | 90 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 93 transition:ui::PAGE_TRANSITION_TYPED | 91 web::NavigationInitiationType::USER_INITIATED); |
| 94 rendererInitiated:NO]; | |
| 95 [session_controller() commitPendingItem]; | 92 [session_controller() commitPendingItem]; |
| 96 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 93 navigation_manager()->AddPendingItem( |
| 97 referrer:Referrer() | 94 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 98 transition:ui::PAGE_TRANSITION_TYPED | 95 web::NavigationInitiationType::USER_INITIATED); |
| 99 rendererInitiated:NO]; | |
| 100 [session_controller() commitPendingItem]; | 96 [session_controller() commitPendingItem]; |
| 101 | 97 |
| 102 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 98 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 103 [session_controller() setPendingItemIndex:0]; | 99 [session_controller() setPendingItemIndex:0]; |
| 104 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); | 100 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); |
| 105 } | 101 } |
| 106 | 102 |
| 107 // Tests that going back or negative offset is not possible without a committed | 103 // Tests that going back or negative offset is not possible without a committed |
| 108 // item. | 104 // item. |
| 109 TEST_F(NavigationManagerTest, CanGoBackWithoutCommitedItem) { | 105 TEST_F(NavigationManagerTest, CanGoBackWithoutCommitedItem) { |
| 110 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 106 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 111 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 107 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 112 } | 108 } |
| 113 | 109 |
| 114 // Tests that going back or negative offset is not possible if there is a | 110 // Tests that going back or negative offset is not possible if there is a |
| 115 // transient item, but not committed items. | 111 // transient item, but not committed items. |
| 116 TEST_F(NavigationManagerTest, CanGoBackWithTransientItem) { | 112 TEST_F(NavigationManagerTest, CanGoBackWithTransientItem) { |
| 117 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; | 113 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; |
| 118 | 114 |
| 119 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 115 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 120 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 116 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 121 } | 117 } |
| 122 | 118 |
| 123 // Tests that going back or negative offset is possible if there is a transient | 119 // Tests that going back or negative offset is possible if there is a transient |
| 124 // item and at least one committed item. | 120 // item and at least one committed item. |
| 125 TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { | 121 TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { |
| 126 [session_controller() addPendingItem:GURL("http://www.url.com") | 122 navigation_manager()->AddPendingItem( |
| 127 referrer:Referrer() | 123 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 128 transition:ui::PAGE_TRANSITION_TYPED | 124 web::NavigationInitiationType::USER_INITIATED); |
| 129 rendererInitiated:NO]; | |
| 130 [session_controller() commitPendingItem]; | 125 [session_controller() commitPendingItem]; |
| 131 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; | 126 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; |
| 132 | 127 |
| 133 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 128 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 134 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 129 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 135 } | 130 } |
| 136 | 131 |
| 137 // Tests that going back or negative offset is not possible if there is ony one | 132 // Tests that going back or negative offset is not possible if there is ony one |
| 138 // committed item and no transient item. | 133 // committed item and no transient item. |
| 139 TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { | 134 TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { |
| 140 [session_controller() addPendingItem:GURL("http://www.url.com") | 135 navigation_manager()->AddPendingItem( |
| 141 referrer:Referrer() | 136 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 142 transition:ui::PAGE_TRANSITION_TYPED | 137 web::NavigationInitiationType::USER_INITIATED); |
| 143 rendererInitiated:NO]; | |
| 144 [session_controller() commitPendingItem]; | 138 [session_controller() commitPendingItem]; |
| 145 | 139 |
| 146 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 140 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 147 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 141 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 148 } | 142 } |
| 149 | 143 |
| 150 // Tests going back possibility with multiple committed items. | 144 // Tests going back possibility with multiple committed items. |
| 151 TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { | 145 TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { |
| 152 [session_controller() addPendingItem:GURL("http://www.url.com") | 146 navigation_manager()->AddPendingItem( |
| 153 referrer:Referrer() | 147 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 154 transition:ui::PAGE_TRANSITION_TYPED | 148 web::NavigationInitiationType::USER_INITIATED); |
| 155 rendererInitiated:NO]; | |
| 156 [session_controller() commitPendingItem]; | 149 [session_controller() commitPendingItem]; |
| 157 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 150 navigation_manager()->AddPendingItem( |
| 158 referrer:Referrer() | 151 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 159 transition:ui::PAGE_TRANSITION_TYPED | 152 web::NavigationInitiationType::USER_INITIATED); |
| 160 rendererInitiated:NO]; | |
| 161 [session_controller() commitPendingItem]; | 153 [session_controller() commitPendingItem]; |
| 162 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 154 navigation_manager()->AddPendingItem( |
| 163 referrer:Referrer() | 155 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 164 transition:ui::PAGE_TRANSITION_TYPED | 156 web::NavigationInitiationType::USER_INITIATED); |
| 165 rendererInitiated:NO]; | |
| 166 [session_controller() commitPendingItem]; | 157 [session_controller() commitPendingItem]; |
| 167 | 158 |
| 168 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 159 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 169 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 160 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 170 | 161 |
| 171 [session_controller() goToItemAtIndex:1]; | 162 [session_controller() goToItemAtIndex:1]; |
| 172 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 163 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 173 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 164 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 174 | 165 |
| 175 [session_controller() goToItemAtIndex:0]; | 166 [session_controller() goToItemAtIndex:0]; |
| 176 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 167 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 177 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 168 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 178 | 169 |
| 179 [session_controller() goToItemAtIndex:1]; | 170 [session_controller() goToItemAtIndex:1]; |
| 180 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 171 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 181 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 172 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 182 } | 173 } |
| 183 | 174 |
| 184 // Tests that going forward or positive offset is not possible if there is a | 175 // Tests that going forward or positive offset is not possible if there is a |
| 185 // pending entry. | 176 // pending entry. |
| 186 TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) { | 177 TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) { |
| 187 [session_controller() addPendingItem:GURL("http://www.url.com") | 178 navigation_manager()->AddPendingItem( |
| 188 referrer:Referrer() | 179 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 189 transition:ui::PAGE_TRANSITION_TYPED | 180 web::NavigationInitiationType::USER_INITIATED); |
| 190 rendererInitiated:NO]; | |
| 191 [session_controller() commitPendingItem]; | 181 [session_controller() commitPendingItem]; |
| 192 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 182 navigation_manager()->AddPendingItem( |
| 193 referrer:Referrer() | 183 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 194 transition:ui::PAGE_TRANSITION_TYPED | 184 web::NavigationInitiationType::USER_INITIATED); |
| 195 rendererInitiated:NO]; | |
| 196 [session_controller() commitPendingItem]; | 185 [session_controller() commitPendingItem]; |
| 197 [session_controller() goToItemAtIndex:0]; | 186 [session_controller() goToItemAtIndex:0]; |
| 198 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 187 navigation_manager()->AddPendingItem( |
| 199 referrer:Referrer() | 188 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 200 transition:ui::PAGE_TRANSITION_TYPED | 189 web::NavigationInitiationType::USER_INITIATED); |
| 201 rendererInitiated:NO]; | |
| 202 | 190 |
| 203 // Pending entry should not allow going forward. | 191 // Pending entry should not allow going forward. |
| 204 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 192 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 205 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 193 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 206 } | 194 } |
| 207 | 195 |
| 208 // Tests that going forward or positive offset is not possible without a | 196 // Tests that going forward or positive offset is not possible without a |
| 209 // committed item. | 197 // committed item. |
| 210 TEST_F(NavigationManagerTest, CanGoForwardWithoutCommitedItem) { | 198 TEST_F(NavigationManagerTest, CanGoForwardWithoutCommitedItem) { |
| 211 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 199 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 212 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 200 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 213 } | 201 } |
| 214 | 202 |
| 215 // Tests that going forward or positive offset is not possible if there is ony | 203 // Tests that going forward or positive offset is not possible if there is ony |
| 216 // one committed item and no transient item. | 204 // one committed item and no transient item. |
| 217 TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { | 205 TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { |
| 218 [session_controller() addPendingItem:GURL("http://www.url.com") | 206 navigation_manager()->AddPendingItem( |
| 219 referrer:Referrer() | 207 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 220 transition:ui::PAGE_TRANSITION_TYPED | 208 web::NavigationInitiationType::USER_INITIATED); |
| 221 rendererInitiated:NO]; | |
| 222 [session_controller() commitPendingItem]; | 209 [session_controller() commitPendingItem]; |
| 223 | 210 |
| 224 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 211 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 225 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 212 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 226 } | 213 } |
| 227 | 214 |
| 228 // Tests going forward possibility with multiple committed items. | 215 // Tests going forward possibility with multiple committed items. |
| 229 TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { | 216 TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { |
| 230 [session_controller() addPendingItem:GURL("http://www.url.com") | 217 navigation_manager()->AddPendingItem( |
| 231 referrer:Referrer() | 218 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 232 transition:ui::PAGE_TRANSITION_TYPED | 219 web::NavigationInitiationType::USER_INITIATED); |
| 233 rendererInitiated:NO]; | |
| 234 [session_controller() commitPendingItem]; | 220 [session_controller() commitPendingItem]; |
| 235 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 221 navigation_manager()->AddPendingItem( |
| 236 referrer:Referrer() | 222 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 237 transition:ui::PAGE_TRANSITION_TYPED | 223 web::NavigationInitiationType::USER_INITIATED); |
| 238 rendererInitiated:NO]; | |
| 239 [session_controller() commitPendingItem]; | 224 [session_controller() commitPendingItem]; |
| 240 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 225 navigation_manager()->AddPendingItem( |
| 241 referrer:Referrer() | 226 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 242 transition:ui::PAGE_TRANSITION_TYPED | 227 web::NavigationInitiationType::USER_INITIATED); |
| 243 rendererInitiated:NO]; | |
| 244 [session_controller() commitPendingItem]; | 228 [session_controller() commitPendingItem]; |
| 245 | 229 |
| 246 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 230 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 247 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 231 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 248 | 232 |
| 249 [session_controller() goToItemAtIndex:1]; | 233 [session_controller() goToItemAtIndex:1]; |
| 250 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 234 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 251 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 235 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 252 | 236 |
| 253 [session_controller() goToItemAtIndex:0]; | 237 [session_controller() goToItemAtIndex:0]; |
| 254 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 238 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 255 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 239 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 256 | 240 |
| 257 [session_controller() goToItemAtIndex:1]; | 241 [session_controller() goToItemAtIndex:1]; |
| 258 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 242 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 259 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 243 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 260 | 244 |
| 261 [session_controller() goToItemAtIndex:2]; | 245 [session_controller() goToItemAtIndex:2]; |
| 262 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 246 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 263 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 247 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 264 } | 248 } |
| 265 | 249 |
| 266 // Tests CanGoToOffset API for positive, negative and zero delta. Tested | 250 // Tests CanGoToOffset API for positive, negative and zero delta. Tested |
| 267 // navigation manager will have redirect entries to make sure they are | 251 // navigation manager will have redirect entries to make sure they are |
| 268 // appropriately skipped. | 252 // appropriately skipped. |
| 269 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { | 253 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { |
| 270 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 254 navigation_manager()->AddPendingItem( |
| 271 referrer:Referrer() | 255 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 272 transition:ui::PAGE_TRANSITION_LINK | 256 web::NavigationInitiationType::USER_INITIATED); |
| 273 rendererInitiated:NO]; | |
| 274 [session_controller() commitPendingItem]; | 257 [session_controller() commitPendingItem]; |
| 275 [session_controller() addPendingItem:GURL("http://www.url.com/redirect") | 258 navigation_manager()->AddPendingItem( |
| 276 referrer:Referrer() | 259 GURL("http://www.url.com/redirect"), Referrer(), |
| 277 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK | 260 ui::PAGE_TRANSITION_IS_REDIRECT_MASK, |
| 278 rendererInitiated:NO]; | 261 web::NavigationInitiationType::USER_INITIATED); |
| 279 [session_controller() commitPendingItem]; | 262 [session_controller() commitPendingItem]; |
| 280 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 263 navigation_manager()->AddPendingItem( |
| 281 referrer:Referrer() | 264 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 282 transition:ui::PAGE_TRANSITION_LINK | 265 web::NavigationInitiationType::USER_INITIATED); |
| 283 rendererInitiated:NO]; | |
| 284 [session_controller() commitPendingItem]; | 266 [session_controller() commitPendingItem]; |
| 285 [session_controller() addPendingItem:GURL("http://www.url.com/2") | 267 navigation_manager()->AddPendingItem( |
| 286 referrer:Referrer() | 268 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 287 transition:ui::PAGE_TRANSITION_LINK | 269 web::NavigationInitiationType::USER_INITIATED); |
| 288 rendererInitiated:NO]; | |
| 289 [session_controller() commitPendingItem]; | 270 [session_controller() commitPendingItem]; |
| 290 [session_controller() addPendingItem:GURL("http://www.url.com/redirect") | 271 navigation_manager()->AddPendingItem( |
| 291 referrer:Referrer() | 272 GURL("http://www.url.com/redirect"), Referrer(), |
| 292 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK | 273 ui::PAGE_TRANSITION_IS_REDIRECT_MASK, |
| 293 rendererInitiated:NO]; | 274 web::NavigationInitiationType::USER_INITIATED); |
| 294 [session_controller() commitPendingItem]; | 275 [session_controller() commitPendingItem]; |
| 295 ASSERT_EQ(5, navigation_manager()->GetItemCount()); | 276 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 296 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 277 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 297 | 278 |
| 298 // Go to entry at index 1 and test API from that state. | 279 // Go to entry at index 1 and test API from that state. |
| 299 [session_controller() goToItemAtIndex:1]; | 280 [session_controller() goToItemAtIndex:1]; |
| 300 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); | 281 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); |
| 301 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 282 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 302 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 283 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 303 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); | 284 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); | 468 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 488 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); | 469 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); |
| 489 } | 470 } |
| 490 | 471 |
| 491 // Tests offsets with pending transient entries (specifically gong back and | 472 // Tests offsets with pending transient entries (specifically gong back and |
| 492 // forward from a pending navigation entry that is added to the middle of the | 473 // forward from a pending navigation entry that is added to the middle of the |
| 493 // navigation stack). | 474 // navigation stack). |
| 494 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) { | 475 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) { |
| 495 // Create a transient item in the middle of the navigation stack and go back | 476 // Create a transient item in the middle of the navigation stack and go back |
| 496 // to it (pending index is 1, current index is 2). | 477 // to it (pending index is 1, current index is 2). |
| 497 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 478 navigation_manager()->AddPendingItem( |
| 498 referrer:Referrer() | 479 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 499 transition:ui::PAGE_TRANSITION_LINK | 480 web::NavigationInitiationType::USER_INITIATED); |
| 500 rendererInitiated:NO]; | |
| 501 [session_controller() commitPendingItem]; | 481 [session_controller() commitPendingItem]; |
| 502 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 482 navigation_manager()->AddPendingItem( |
| 503 referrer:Referrer() | 483 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 504 transition:ui::PAGE_TRANSITION_LINK | 484 web::NavigationInitiationType::USER_INITIATED); |
| 505 rendererInitiated:NO]; | |
| 506 [session_controller() commitPendingItem]; | 485 [session_controller() commitPendingItem]; |
| 507 [session_controller() addPendingItem:GURL("http://www.url.com/2") | 486 navigation_manager()->AddPendingItem( |
| 508 referrer:Referrer() | 487 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 509 transition:ui::PAGE_TRANSITION_LINK | 488 web::NavigationInitiationType::USER_INITIATED); |
| 510 rendererInitiated:NO]; | |
| 511 [session_controller() commitPendingItem]; | 489 [session_controller() commitPendingItem]; |
| 512 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; | 490 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; |
| 513 [session_controller() setPendingItemIndex:1]; | 491 [session_controller() setPendingItemIndex:1]; |
| 514 | 492 |
| 515 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 493 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
| 516 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); | 494 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); |
| 517 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 495 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 518 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 496 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 519 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 497 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| 520 | 498 |
| 521 // Now go forward to that middle transient item (pending index is 1, | 499 // Now go forward to that middle transient item (pending index is 1, |
| 522 // current index is 0). | 500 // current index is 0). |
| 523 [session_controller() goToItemAtIndex:0]; | 501 [session_controller() goToItemAtIndex:0]; |
| 524 [session_controller() setPendingItemIndex:1]; | 502 [session_controller() setPendingItemIndex:1]; |
| 525 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 503 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
| 526 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex()); | 504 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex()); |
| 527 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 505 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 528 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 506 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 529 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 507 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| 530 } | 508 } |
| 531 | 509 |
| 510 // Tests that desktop user agent can be enforced to use for next pending item. |
| 511 TEST_F(NavigationManagerTest, OverrideDesktopUserAgent) { |
| 512 navigation_manager()->OverrideDesktopUserAgentForNextPendingItem(); |
| 513 navigation_manager()->AddPendingItem( |
| 514 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 515 web::NavigationInitiationType::USER_INITIATED); |
| 516 [session_controller() commitPendingItem]; |
| 517 NavigationItem* visible_item = navigation_manager()->GetVisibleItem(); |
| 518 EXPECT_TRUE(visible_item->IsOverridingUserAgent()); |
| 519 } |
| 520 |
| 532 } // namespace web | 521 } // namespace web |
| OLD | NEW |