Chromium Code Reviews| 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()->AddUserInitiatedPendingItem( |
| 66 referrer:Referrer() | 67 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 67 transition:ui::PAGE_TRANSITION_TYPED | |
| 68 rendererInitiated:NO]; | |
| 69 [session_controller() commitPendingItem]; | 68 [session_controller() commitPendingItem]; |
| 70 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 69 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 71 } | 70 } |
| 72 | 71 |
| 73 // Tests that GetPendingItemIndex() returns current item index if there is a | 72 // Tests that GetPendingItemIndex() returns current item index if there is a |
| 74 // pending entry. | 73 // pending entry. |
| 75 TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { | 74 TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { |
| 76 [session_controller() addPendingItem:GURL("http://www.url.com") | 75 navigation_manager()->AddUserInitiatedPendingItem( |
| 77 referrer:Referrer() | 76 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 78 transition:ui::PAGE_TRANSITION_TYPED | |
| 79 rendererInitiated:NO]; | |
| 80 [session_controller() commitPendingItem]; | 77 [session_controller() commitPendingItem]; |
| 81 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 78 navigation_manager()->AddUserInitiatedPendingItem( |
| 82 referrer:Referrer() | 79 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 83 transition:ui::PAGE_TRANSITION_TYPED | |
| 84 rendererInitiated:NO]; | |
| 85 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); | 80 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); |
| 86 } | 81 } |
| 87 | 82 |
| 88 // Tests that GetPendingItemIndex() returns same index as was set by | 83 // Tests that GetPendingItemIndex() returns same index as was set by |
| 89 // -[CRWSessionController setPendingItemIndex:]. | 84 // -[CRWSessionController setPendingItemIndex:]. |
| 90 TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { | 85 TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { |
| 91 [session_controller() addPendingItem:GURL("http://www.url.com") | 86 navigation_manager()->AddUserInitiatedPendingItem( |
| 92 referrer:Referrer() | 87 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 93 transition:ui::PAGE_TRANSITION_TYPED | |
| 94 rendererInitiated:NO]; | |
| 95 [session_controller() commitPendingItem]; | 88 [session_controller() commitPendingItem]; |
| 96 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 89 navigation_manager()->AddUserInitiatedPendingItem( |
| 97 referrer:Referrer() | 90 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 98 transition:ui::PAGE_TRANSITION_TYPED | |
| 99 rendererInitiated:NO]; | |
| 100 [session_controller() commitPendingItem]; | 91 [session_controller() commitPendingItem]; |
| 101 | 92 |
| 102 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 93 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 103 [session_controller() setPendingItemIndex:0]; | 94 [session_controller() setPendingItemIndex:0]; |
| 104 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); | 95 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); |
| 105 } | 96 } |
| 106 | 97 |
| 107 // Tests that going back or negative offset is not possible without a committed | 98 // Tests that going back or negative offset is not possible without a committed |
| 108 // item. | 99 // item. |
| 109 TEST_F(NavigationManagerTest, CanGoBackWithoutCommitedItem) { | 100 TEST_F(NavigationManagerTest, CanGoBackWithoutCommitedItem) { |
| 110 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 101 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 111 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 102 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 112 } | 103 } |
| 113 | 104 |
| 114 // Tests that going back or negative offset is not possible if there is a | 105 // Tests that going back or negative offset is not possible if there is a |
| 115 // transient item, but not committed items. | 106 // transient item, but not committed items. |
| 116 TEST_F(NavigationManagerTest, CanGoBackWithTransientItem) { | 107 TEST_F(NavigationManagerTest, CanGoBackWithTransientItem) { |
| 117 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; | 108 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; |
| 118 | 109 |
| 119 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 110 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 120 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 111 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 121 } | 112 } |
| 122 | 113 |
| 123 // Tests that going back or negative offset is possible if there is a transient | 114 // Tests that going back or negative offset is possible if there is a transient |
| 124 // item and at least one committed item. | 115 // item and at least one committed item. |
| 125 TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { | 116 TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { |
| 126 [session_controller() addPendingItem:GURL("http://www.url.com") | 117 navigation_manager()->AddUserInitiatedPendingItem( |
| 127 referrer:Referrer() | 118 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 128 transition:ui::PAGE_TRANSITION_TYPED | |
| 129 rendererInitiated:NO]; | |
| 130 [session_controller() commitPendingItem]; | 119 [session_controller() commitPendingItem]; |
| 131 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; | 120 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; |
| 132 | 121 |
| 133 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 122 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 134 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 123 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 135 } | 124 } |
| 136 | 125 |
| 137 // Tests that going back or negative offset is not possible if there is ony one | 126 // Tests that going back or negative offset is not possible if there is ony one |
| 138 // committed item and no transient item. | 127 // committed item and no transient item. |
| 139 TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { | 128 TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { |
| 140 [session_controller() addPendingItem:GURL("http://www.url.com") | 129 navigation_manager()->AddUserInitiatedPendingItem( |
| 141 referrer:Referrer() | 130 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 142 transition:ui::PAGE_TRANSITION_TYPED | |
| 143 rendererInitiated:NO]; | |
| 144 [session_controller() commitPendingItem]; | 131 [session_controller() commitPendingItem]; |
| 145 | 132 |
| 146 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 133 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 147 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 134 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 148 } | 135 } |
| 149 | 136 |
| 150 // Tests going back possibility with multiple committed items. | 137 // Tests going back possibility with multiple committed items. |
| 151 TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { | 138 TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { |
| 152 [session_controller() addPendingItem:GURL("http://www.url.com") | 139 navigation_manager()->AddUserInitiatedPendingItem( |
| 153 referrer:Referrer() | 140 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 154 transition:ui::PAGE_TRANSITION_TYPED | |
| 155 rendererInitiated:NO]; | |
| 156 [session_controller() commitPendingItem]; | 141 [session_controller() commitPendingItem]; |
| 157 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 142 navigation_manager()->AddUserInitiatedPendingItem( |
| 158 referrer:Referrer() | 143 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 159 transition:ui::PAGE_TRANSITION_TYPED | |
| 160 rendererInitiated:NO]; | |
| 161 [session_controller() commitPendingItem]; | 144 [session_controller() commitPendingItem]; |
| 162 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 145 navigation_manager()->AddUserInitiatedPendingItem( |
| 163 referrer:Referrer() | 146 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 164 transition:ui::PAGE_TRANSITION_TYPED | |
| 165 rendererInitiated:NO]; | |
| 166 [session_controller() commitPendingItem]; | 147 [session_controller() commitPendingItem]; |
| 167 | 148 |
| 168 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 149 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 169 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 150 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 170 | 151 |
| 171 [session_controller() goToItemAtIndex:1]; | 152 [session_controller() goToItemAtIndex:1]; |
| 172 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 153 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 173 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 154 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 174 | 155 |
| 175 [session_controller() goToItemAtIndex:0]; | 156 [session_controller() goToItemAtIndex:0]; |
| 176 EXPECT_FALSE(navigation_manager()->CanGoBack()); | 157 EXPECT_FALSE(navigation_manager()->CanGoBack()); |
| 177 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 158 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 178 | 159 |
| 179 [session_controller() goToItemAtIndex:1]; | 160 [session_controller() goToItemAtIndex:1]; |
| 180 EXPECT_TRUE(navigation_manager()->CanGoBack()); | 161 EXPECT_TRUE(navigation_manager()->CanGoBack()); |
| 181 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 162 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 182 } | 163 } |
| 183 | 164 |
| 184 // Tests that going forward or positive offset is not possible if there is a | 165 // Tests that going forward or positive offset is not possible if there is a |
| 185 // pending entry. | 166 // pending entry. |
| 186 TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) { | 167 TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) { |
| 187 [session_controller() addPendingItem:GURL("http://www.url.com") | 168 navigation_manager()->AddUserInitiatedPendingItem( |
| 188 referrer:Referrer() | 169 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 189 transition:ui::PAGE_TRANSITION_TYPED | |
| 190 rendererInitiated:NO]; | |
| 191 [session_controller() commitPendingItem]; | 170 [session_controller() commitPendingItem]; |
| 192 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 171 navigation_manager()->AddUserInitiatedPendingItem( |
| 193 referrer:Referrer() | 172 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 194 transition:ui::PAGE_TRANSITION_TYPED | |
| 195 rendererInitiated:NO]; | |
| 196 [session_controller() commitPendingItem]; | 173 [session_controller() commitPendingItem]; |
| 197 [session_controller() goToItemAtIndex:0]; | 174 [session_controller() goToItemAtIndex:0]; |
| 198 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 175 navigation_manager()->AddUserInitiatedPendingItem( |
| 199 referrer:Referrer() | 176 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 200 transition:ui::PAGE_TRANSITION_TYPED | |
| 201 rendererInitiated:NO]; | |
| 202 | 177 |
| 203 // Pending entry should not allow going forward. | 178 // Pending entry should not allow going forward. |
| 204 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 179 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 205 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 180 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 206 } | 181 } |
| 207 | 182 |
| 208 // Tests that going forward or positive offset is not possible without a | 183 // Tests that going forward or positive offset is not possible without a |
| 209 // committed item. | 184 // committed item. |
| 210 TEST_F(NavigationManagerTest, CanGoForwardWithoutCommitedItem) { | 185 TEST_F(NavigationManagerTest, CanGoForwardWithoutCommitedItem) { |
| 211 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 186 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 212 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 187 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 213 } | 188 } |
| 214 | 189 |
| 215 // Tests that going forward or positive offset is not possible if there is ony | 190 // Tests that going forward or positive offset is not possible if there is ony |
| 216 // one committed item and no transient item. | 191 // one committed item and no transient item. |
| 217 TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { | 192 TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { |
| 218 [session_controller() addPendingItem:GURL("http://www.url.com") | 193 navigation_manager()->AddUserInitiatedPendingItem( |
| 219 referrer:Referrer() | 194 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 220 transition:ui::PAGE_TRANSITION_TYPED | |
| 221 rendererInitiated:NO]; | |
| 222 [session_controller() commitPendingItem]; | 195 [session_controller() commitPendingItem]; |
| 223 | 196 |
| 224 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 197 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 225 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 198 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 226 } | 199 } |
| 227 | 200 |
| 228 // Tests going forward possibility with multiple committed items. | 201 // Tests going forward possibility with multiple committed items. |
| 229 TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { | 202 TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { |
| 230 [session_controller() addPendingItem:GURL("http://www.url.com") | 203 navigation_manager()->AddUserInitiatedPendingItem( |
| 231 referrer:Referrer() | 204 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 232 transition:ui::PAGE_TRANSITION_TYPED | |
| 233 rendererInitiated:NO]; | |
| 234 [session_controller() commitPendingItem]; | 205 [session_controller() commitPendingItem]; |
| 235 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 206 navigation_manager()->AddUserInitiatedPendingItem( |
| 236 referrer:Referrer() | 207 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 237 transition:ui::PAGE_TRANSITION_TYPED | |
| 238 rendererInitiated:NO]; | |
| 239 [session_controller() commitPendingItem]; | 208 [session_controller() commitPendingItem]; |
| 240 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 209 navigation_manager()->AddUserInitiatedPendingItem( |
| 241 referrer:Referrer() | 210 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED); |
| 242 transition:ui::PAGE_TRANSITION_TYPED | |
| 243 rendererInitiated:NO]; | |
| 244 [session_controller() commitPendingItem]; | 211 [session_controller() commitPendingItem]; |
| 245 | 212 |
| 246 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 213 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 247 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 214 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 248 | 215 |
| 249 [session_controller() goToItemAtIndex:1]; | 216 [session_controller() goToItemAtIndex:1]; |
| 250 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 217 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 251 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 218 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 252 | 219 |
| 253 [session_controller() goToItemAtIndex:0]; | 220 [session_controller() goToItemAtIndex:0]; |
| 254 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 221 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 255 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 222 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 256 | 223 |
| 257 [session_controller() goToItemAtIndex:1]; | 224 [session_controller() goToItemAtIndex:1]; |
| 258 EXPECT_TRUE(navigation_manager()->CanGoForward()); | 225 EXPECT_TRUE(navigation_manager()->CanGoForward()); |
| 259 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 226 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 260 | 227 |
| 261 [session_controller() goToItemAtIndex:2]; | 228 [session_controller() goToItemAtIndex:2]; |
| 262 EXPECT_FALSE(navigation_manager()->CanGoForward()); | 229 EXPECT_FALSE(navigation_manager()->CanGoForward()); |
| 263 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 230 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 264 } | 231 } |
| 265 | 232 |
| 266 // Tests CanGoToOffset API for positive, negative and zero delta. Tested | 233 // Tests CanGoToOffset API for positive, negative and zero delta. Tested |
| 267 // navigation manager will have redirect entries to make sure they are | 234 // navigation manager will have redirect entries to make sure they are |
| 268 // appropriately skipped. | 235 // appropriately skipped. |
| 269 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { | 236 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { |
| 270 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 237 navigation_manager()->AddUserInitiatedPendingItem( |
| 271 referrer:Referrer() | 238 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK); |
| 272 transition:ui::PAGE_TRANSITION_LINK | |
| 273 rendererInitiated:NO]; | |
| 274 [session_controller() commitPendingItem]; | 239 [session_controller() commitPendingItem]; |
| 275 [session_controller() addPendingItem:GURL("http://www.url.com/redirect") | 240 navigation_manager()->AddUserInitiatedPendingItem( |
| 276 referrer:Referrer() | 241 GURL("http://www.url.com/redirect"), Referrer(), |
| 277 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK | 242 ui::PAGE_TRANSITION_IS_REDIRECT_MASK); |
| 278 rendererInitiated:NO]; | |
| 279 [session_controller() commitPendingItem]; | 243 [session_controller() commitPendingItem]; |
| 280 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 244 navigation_manager()->AddUserInitiatedPendingItem( |
| 281 referrer:Referrer() | 245 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK); |
| 282 transition:ui::PAGE_TRANSITION_LINK | |
| 283 rendererInitiated:NO]; | |
| 284 [session_controller() commitPendingItem]; | 246 [session_controller() commitPendingItem]; |
| 285 [session_controller() addPendingItem:GURL("http://www.url.com/2") | 247 navigation_manager()->AddUserInitiatedPendingItem( |
| 286 referrer:Referrer() | 248 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK); |
| 287 transition:ui::PAGE_TRANSITION_LINK | |
| 288 rendererInitiated:NO]; | |
| 289 [session_controller() commitPendingItem]; | 249 [session_controller() commitPendingItem]; |
| 290 [session_controller() addPendingItem:GURL("http://www.url.com/redirect") | 250 navigation_manager()->AddUserInitiatedPendingItem( |
| 291 referrer:Referrer() | 251 GURL("http://www.url.com/redirect"), Referrer(), |
| 292 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK | 252 ui::PAGE_TRANSITION_IS_REDIRECT_MASK); |
| 293 rendererInitiated:NO]; | |
| 294 [session_controller() commitPendingItem]; | 253 [session_controller() commitPendingItem]; |
| 295 ASSERT_EQ(5, navigation_manager()->GetItemCount()); | 254 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 296 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 255 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); |
| 297 | 256 |
| 298 // Go to entry at index 1 and test API from that state. | 257 // Go to entry at index 1 and test API from that state. |
| 299 [session_controller() goToItemAtIndex:1]; | 258 [session_controller() goToItemAtIndex:1]; |
| 300 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); | 259 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); |
| 301 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 260 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 302 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 261 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 303 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); | 262 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)); | 446 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 488 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); | 447 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); |
| 489 } | 448 } |
| 490 | 449 |
| 491 // Tests offsets with pending transient entries (specifically gong back and | 450 // 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 | 451 // forward from a pending navigation entry that is added to the middle of the |
| 493 // navigation stack). | 452 // navigation stack). |
| 494 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) { | 453 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) { |
| 495 // Create a transient item in the middle of the navigation stack and go back | 454 // 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). | 455 // to it (pending index is 1, current index is 2). |
| 497 [session_controller() addPendingItem:GURL("http://www.url.com/0") | 456 navigation_manager()->AddUserInitiatedPendingItem( |
| 498 referrer:Referrer() | 457 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK); |
| 499 transition:ui::PAGE_TRANSITION_LINK | |
| 500 rendererInitiated:NO]; | |
| 501 [session_controller() commitPendingItem]; | 458 [session_controller() commitPendingItem]; |
| 502 [session_controller() addPendingItem:GURL("http://www.url.com/1") | 459 navigation_manager()->AddUserInitiatedPendingItem( |
| 503 referrer:Referrer() | 460 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK); |
| 504 transition:ui::PAGE_TRANSITION_LINK | |
| 505 rendererInitiated:NO]; | |
| 506 [session_controller() commitPendingItem]; | 461 [session_controller() commitPendingItem]; |
| 507 [session_controller() addPendingItem:GURL("http://www.url.com/2") | 462 navigation_manager()->AddUserInitiatedPendingItem( |
| 508 referrer:Referrer() | 463 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK); |
| 509 transition:ui::PAGE_TRANSITION_LINK | |
| 510 rendererInitiated:NO]; | |
| 511 [session_controller() commitPendingItem]; | 464 [session_controller() commitPendingItem]; |
| 512 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; | 465 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; |
| 513 [session_controller() setPendingItemIndex:1]; | 466 [session_controller() setPendingItemIndex:1]; |
| 514 | 467 |
| 515 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 468 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
| 516 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); | 469 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); |
| 517 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 470 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 518 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 471 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 519 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 472 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| 520 | 473 |
| 521 // Now go forward to that middle transient item (pending index is 1, | 474 // Now go forward to that middle transient item (pending index is 1, |
| 522 // current index is 0). | 475 // current index is 0). |
| 523 [session_controller() goToItemAtIndex:0]; | 476 [session_controller() goToItemAtIndex:0]; |
| 524 [session_controller() setPendingItemIndex:1]; | 477 [session_controller() setPendingItemIndex:1]; |
| 525 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 478 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
| 526 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex()); | 479 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex()); |
| 527 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 480 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 528 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 481 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 529 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 482 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| 530 } | 483 } |
| 531 | 484 |
| 485 // Tests that desktop user agent can be properly enforced to use for the next | |
| 486 // and only next pending item. | |
| 487 TEST_F(NavigationManagerTest, OverrideDesktopUserAgent) { | |
| 488 navigation_manager()->OverrideDesktopUserAgentForNextPendingItem(); | |
| 489 navigation_manager()->AddUserInitiatedPendingItem( | |
| 490 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED); | |
| 491 [session_controller() commitPendingItem]; | |
| 492 NavigationItem* visible_item = navigation_manager()->GetVisibleItem(); | |
| 493 EXPECT_TRUE(visible_item->IsOverridingUserAgent()); | |
| 494 | |
| 495 navigation_manager()->AddUserInitiatedPendingItem( | |
| 496 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED); | |
| 497 [session_controller() commitPendingItem]; | |
| 498 visible_item = navigation_manager()->GetVisibleItem(); | |
| 499 EXPECT_FALSE(visible_item->IsOverridingUserAgent()); | |
|
kkhorimoto
2017/02/15 23:02:06
Does this pass? Shouldn't the second piece of log
liaoyuke
2017/02/16 22:04:29
Done.
| |
| 500 } | |
| 501 | |
| 532 } // namespace web | 502 } // namespace web |
| OLD | NEW |