| 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" |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 | 244 |
| 245 [session_controller() goToEntryAtIndex:1]; | 245 [session_controller() goToEntryAtIndex:1]; |
| 246 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 246 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 247 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 247 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 248 | 248 |
| 249 [session_controller() goToEntryAtIndex:2]; | 249 [session_controller() goToEntryAtIndex:2]; |
| 250 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 250 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 251 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 251 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 252 } | 252 } |
| 253 | 253 |
| 254 // Tests CanGoToOffset API for positive, negative and zero delta. Tested |
| 255 // navigation manager will have redirect entries to make sure they are |
| 256 // appropriately skipped. |
| 257 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { |
| 258 [session_controller() addPendingEntry:GURL("http://www.url.com/0") |
| 259 referrer:Referrer() |
| 260 transition:ui::PAGE_TRANSITION_LINK |
| 261 rendererInitiated:NO]; |
| 262 [session_controller() commitPendingEntry]; |
| 263 [session_controller() addPendingEntry:GURL("http://www.url.com/redirect") |
| 264 referrer:Referrer() |
| 265 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 266 rendererInitiated:NO]; |
| 267 [session_controller() commitPendingEntry]; |
| 268 [session_controller() addPendingEntry:GURL("http://www.url.com/1") |
| 269 referrer:Referrer() |
| 270 transition:ui::PAGE_TRANSITION_LINK |
| 271 rendererInitiated:NO]; |
| 272 [session_controller() commitPendingEntry]; |
| 273 [session_controller() addPendingEntry:GURL("http://www.url.com/2") |
| 274 referrer:Referrer() |
| 275 transition:ui::PAGE_TRANSITION_LINK |
| 276 rendererInitiated:NO]; |
| 277 [session_controller() commitPendingEntry]; |
| 278 [session_controller() addPendingEntry:GURL("http://www.url.com/redirect") |
| 279 referrer:Referrer() |
| 280 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 281 rendererInitiated:NO]; |
| 282 [session_controller() commitPendingEntry]; |
| 283 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 284 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 285 |
| 286 // Go to entry at index 1 and test API from that state. |
| 287 [session_controller() goToEntryAtIndex:1]; |
| 288 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); |
| 289 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 290 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 291 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 292 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 293 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); |
| 294 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); |
| 295 |
| 296 // Go to entry at index 2 and test API from that state. |
| 297 [session_controller() goToEntryAtIndex:2]; |
| 298 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); |
| 299 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 300 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 301 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 302 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 303 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 304 |
| 305 // Go to entry at index 4 and test API from that state. |
| 306 [session_controller() goToEntryAtIndex:4]; |
| 307 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 308 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 309 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 310 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 311 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 312 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 313 |
| 314 // Test with existing transient entry. |
| 315 [session_controller() addTransientEntryWithURL:GURL("http://www.url.com")]; |
| 316 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 317 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 318 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 319 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 320 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 321 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); |
| 322 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 323 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 324 |
| 325 // Now test with pending item index. |
| 326 [session_controller() discardNonCommittedEntries]; |
| 327 |
| 328 // Set pending index to 1 and test API from that state. |
| 329 [session_controller() setPendingEntryIndex:1]; |
| 330 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 331 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 332 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 333 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 334 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 335 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); |
| 336 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); |
| 337 |
| 338 // Set pending index to 2 and test API from that state. |
| 339 [session_controller() setPendingEntryIndex:2]; |
| 340 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 341 ASSERT_EQ(2, navigation_manager()->GetPendingItemIndex()); |
| 342 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 343 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 344 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 345 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 346 |
| 347 // Set pending index to 4 and committed entry to 1 and test. |
| 348 [session_controller() goToEntryAtIndex:1]; |
| 349 [session_controller() setPendingEntryIndex:4]; |
| 350 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); |
| 351 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex()); |
| 352 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 353 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 354 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 355 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 356 |
| 357 // Test with existing transient entry. |
| 358 [session_controller() addTransientEntryWithURL:GURL("http://www.url.com")]; |
| 359 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 360 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); |
| 361 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex()); |
| 362 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 363 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 364 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); |
| 365 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 366 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 367 } |
| 368 |
| 254 } // namespace web | 369 } // namespace web |
| OLD | NEW |