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 12 matching lines...) Expand all Loading... |
23 #import "testing/gtest_mac.h" | 23 #import "testing/gtest_mac.h" |
24 #include "testing/platform_test.h" | 24 #include "testing/platform_test.h" |
25 | 25 |
26 @interface CRWSessionController (Testing) | 26 @interface CRWSessionController (Testing) |
27 - (const GURL&)URLForItemAtIndex:(size_t)index; | 27 - (const GURL&)URLForItemAtIndex:(size_t)index; |
28 - (const GURL&)currentURL; | 28 - (const GURL&)currentURL; |
29 @end | 29 @end |
30 | 30 |
31 @implementation CRWSessionController (Testing) | 31 @implementation CRWSessionController (Testing) |
32 - (const GURL&)URLForItemAtIndex:(size_t)index { | 32 - (const GURL&)URLForItemAtIndex:(size_t)index { |
33 web::NavigationItemList items = self.items; | 33 if (index < self.items.size()) |
34 if (index < items.size()) | 34 return self.items[index]->GetURL(); |
35 return items[index]->GetURL(); | |
36 return GURL::EmptyGURL(); | 35 return GURL::EmptyGURL(); |
37 } | 36 } |
38 | 37 |
39 - (const GURL&)currentURL { | 38 - (const GURL&)currentURL { |
40 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); | 39 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); |
41 } | 40 } |
42 @end | 41 @end |
43 | 42 |
44 namespace { | 43 namespace { |
45 | 44 |
(...skipping 25 matching lines...) Expand all Loading... |
71 [session_controller_ | 70 [session_controller_ |
72 addPendingItem:GURL("http://www.example.com") | 71 addPendingItem:GURL("http://www.example.com") |
73 referrer:web::Referrer() | 72 referrer:web::Referrer() |
74 transition:ui::PAGE_TRANSITION_TYPED | 73 transition:ui::PAGE_TRANSITION_TYPED |
75 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 74 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
76 [session_controller_ commitPendingItem]; | 75 [session_controller_ commitPendingItem]; |
77 | 76 |
78 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 77 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
79 [session_controller_ setPendingItemIndex:0]; | 78 [session_controller_ setPendingItemIndex:0]; |
80 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); | 79 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); |
81 EXPECT_EQ([session_controller_ items].back(), | 80 EXPECT_EQ([session_controller_ items].back().get(), |
82 [session_controller_ pendingItem]); | 81 [session_controller_ pendingItem]); |
83 } | 82 } |
84 | 83 |
85 TEST_F(CRWSessionControllerTest, addPendingItem) { | 84 TEST_F(CRWSessionControllerTest, addPendingItem) { |
86 [session_controller_ | 85 [session_controller_ |
87 addPendingItem:GURL("http://www.url.com") | 86 addPendingItem:GURL("http://www.url.com") |
88 referrer:MakeReferrer("http://www.referer.com") | 87 referrer:MakeReferrer("http://www.referer.com") |
89 transition:ui::PAGE_TRANSITION_TYPED | 88 transition:ui::PAGE_TRANSITION_TYPED |
90 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 89 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
91 | 90 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 [session_controller_ | 170 [session_controller_ |
172 addPendingItem:GURL("http://www.url.com") | 171 addPendingItem:GURL("http://www.url.com") |
173 referrer:MakeReferrer("http://www.referer.com") | 172 referrer:MakeReferrer("http://www.referer.com") |
174 transition:ui::PAGE_TRANSITION_TYPED | 173 transition:ui::PAGE_TRANSITION_TYPED |
175 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 174 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
176 [session_controller_ commitPendingItem]; | 175 [session_controller_ commitPendingItem]; |
177 | 176 |
178 EXPECT_EQ(1U, [session_controller_ items].size()); | 177 EXPECT_EQ(1U, [session_controller_ items].size()); |
179 EXPECT_EQ(GURL("http://www.url.com/"), | 178 EXPECT_EQ(GURL("http://www.url.com/"), |
180 [session_controller_ URLForItemAtIndex:0U]); | 179 [session_controller_ URLForItemAtIndex:0U]); |
181 EXPECT_EQ([session_controller_ items].front(), | 180 EXPECT_EQ([session_controller_ items].front().get(), |
182 [session_controller_ currentItem]); | 181 [session_controller_ currentItem]); |
183 } | 182 } |
184 | 183 |
185 TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) { | 184 TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) { |
186 [session_controller_ | 185 [session_controller_ |
187 addPendingItem:GURL("http://www.url.com") | 186 addPendingItem:GURL("http://www.url.com") |
188 referrer:MakeReferrer("http://www.referer.com") | 187 referrer:MakeReferrer("http://www.referer.com") |
189 transition:ui::PAGE_TRANSITION_TYPED | 188 transition:ui::PAGE_TRANSITION_TYPED |
190 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 189 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
191 [session_controller_ | 190 [session_controller_ |
192 addPendingItem:GURL("http://www.another.url.com") | 191 addPendingItem:GURL("http://www.another.url.com") |
193 referrer:MakeReferrer("http://www.another.referer.com") | 192 referrer:MakeReferrer("http://www.another.referer.com") |
194 transition:ui::PAGE_TRANSITION_TYPED | 193 transition:ui::PAGE_TRANSITION_TYPED |
195 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 194 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
196 [session_controller_ commitPendingItem]; | 195 [session_controller_ commitPendingItem]; |
197 | 196 |
198 EXPECT_EQ(1U, [session_controller_ items].size()); | 197 EXPECT_EQ(1U, [session_controller_ items].size()); |
199 EXPECT_EQ(GURL("http://www.another.url.com/"), | 198 EXPECT_EQ(GURL("http://www.another.url.com/"), |
200 [session_controller_ URLForItemAtIndex:0U]); | 199 [session_controller_ URLForItemAtIndex:0U]); |
201 EXPECT_EQ([session_controller_ items].front(), | 200 EXPECT_EQ([session_controller_ items].front().get(), |
202 [session_controller_ currentItem]); | 201 [session_controller_ currentItem]); |
203 } | 202 } |
204 | 203 |
205 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) { | 204 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) { |
206 [session_controller_ | 205 [session_controller_ |
207 addPendingItem:GURL("http://www.url.com") | 206 addPendingItem:GURL("http://www.url.com") |
208 referrer:MakeReferrer("http://www.referer.com") | 207 referrer:MakeReferrer("http://www.referer.com") |
209 transition:ui::PAGE_TRANSITION_TYPED | 208 transition:ui::PAGE_TRANSITION_TYPED |
210 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 209 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
211 [session_controller_ commitPendingItem]; | 210 [session_controller_ commitPendingItem]; |
212 | 211 |
213 [session_controller_ | 212 [session_controller_ |
214 addPendingItem:GURL("http://www.another.url.com") | 213 addPendingItem:GURL("http://www.another.url.com") |
215 referrer:MakeReferrer("http://www.another.referer.com") | 214 referrer:MakeReferrer("http://www.another.referer.com") |
216 transition:ui::PAGE_TRANSITION_TYPED | 215 transition:ui::PAGE_TRANSITION_TYPED |
217 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 216 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
218 [session_controller_ commitPendingItem]; | 217 [session_controller_ commitPendingItem]; |
219 | 218 |
220 EXPECT_EQ(2U, [session_controller_ items].size()); | 219 EXPECT_EQ(2U, [session_controller_ items].size()); |
221 EXPECT_EQ(GURL("http://www.url.com/"), | 220 EXPECT_EQ(GURL("http://www.url.com/"), |
222 [session_controller_ URLForItemAtIndex:0U]); | 221 [session_controller_ URLForItemAtIndex:0U]); |
223 EXPECT_EQ(GURL("http://www.another.url.com/"), | 222 EXPECT_EQ(GURL("http://www.another.url.com/"), |
224 [session_controller_ URLForItemAtIndex:1U]); | 223 [session_controller_ URLForItemAtIndex:1U]); |
225 EXPECT_EQ([session_controller_ items][1U], [session_controller_ currentItem]); | 224 EXPECT_EQ([session_controller_ items][1U].get(), |
| 225 [session_controller_ currentItem]); |
226 } | 226 } |
227 | 227 |
228 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) { | 228 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) { |
229 [session_controller_ | 229 [session_controller_ |
230 addPendingItem:GURL("http://www.url.com") | 230 addPendingItem:GURL("http://www.url.com") |
231 referrer:MakeReferrer("http://www.referer.com") | 231 referrer:MakeReferrer("http://www.referer.com") |
232 transition:ui::PAGE_TRANSITION_TYPED | 232 transition:ui::PAGE_TRANSITION_TYPED |
233 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 233 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
234 [session_controller_ discardNonCommittedItems]; | 234 [session_controller_ discardNonCommittedItems]; |
235 | 235 |
(...skipping 30 matching lines...) Expand all Loading... |
266 [session_controller_ | 266 [session_controller_ |
267 addPendingItem:GURL("http://www.another.url.com") | 267 addPendingItem:GURL("http://www.another.url.com") |
268 referrer:MakeReferrer("http://www.referer.com") | 268 referrer:MakeReferrer("http://www.referer.com") |
269 transition:ui::PAGE_TRANSITION_TYPED | 269 transition:ui::PAGE_TRANSITION_TYPED |
270 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 270 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
271 [session_controller_ commitPendingItem]; | 271 [session_controller_ commitPendingItem]; |
272 | 272 |
273 EXPECT_EQ(1U, [session_controller_ items].size()); | 273 EXPECT_EQ(1U, [session_controller_ items].size()); |
274 EXPECT_EQ(GURL("http://www.another.url.com/"), | 274 EXPECT_EQ(GURL("http://www.another.url.com/"), |
275 [session_controller_ URLForItemAtIndex:0U]); | 275 [session_controller_ URLForItemAtIndex:0U]); |
276 EXPECT_EQ([session_controller_ items].front(), | 276 EXPECT_EQ([session_controller_ items].front().get(), |
277 [session_controller_ currentItem]); | 277 [session_controller_ currentItem]); |
278 } | 278 } |
279 | 279 |
280 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) { | 280 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) { |
281 [session_controller_ | 281 [session_controller_ |
282 addPendingItem:GURL("http://www.url.com") | 282 addPendingItem:GURL("http://www.url.com") |
283 referrer:MakeReferrer("http://www.referer.com") | 283 referrer:MakeReferrer("http://www.referer.com") |
284 transition:ui::PAGE_TRANSITION_TYPED | 284 transition:ui::PAGE_TRANSITION_TYPED |
285 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 285 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
286 [session_controller_ commitPendingItem]; | 286 [session_controller_ commitPendingItem]; |
287 | 287 |
288 [session_controller_ | 288 [session_controller_ |
289 addPendingItem:GURL("http://www.another.url.com") | 289 addPendingItem:GURL("http://www.another.url.com") |
290 referrer:MakeReferrer("http://www.referer.com") | 290 referrer:MakeReferrer("http://www.referer.com") |
291 transition:ui::PAGE_TRANSITION_TYPED | 291 transition:ui::PAGE_TRANSITION_TYPED |
292 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 292 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
293 [session_controller_ discardNonCommittedItems]; | 293 [session_controller_ discardNonCommittedItems]; |
294 | 294 |
295 EXPECT_EQ(1U, [session_controller_ items].size()); | 295 EXPECT_EQ(1U, [session_controller_ items].size()); |
296 EXPECT_EQ(GURL("http://www.url.com/"), | 296 EXPECT_EQ(GURL("http://www.url.com/"), |
297 [session_controller_ URLForItemAtIndex:0U]); | 297 [session_controller_ URLForItemAtIndex:0U]); |
298 EXPECT_EQ([session_controller_ items].front(), | 298 EXPECT_EQ([session_controller_ items].front().get(), |
299 [session_controller_ currentItem]); | 299 [session_controller_ currentItem]); |
300 } | 300 } |
301 | 301 |
302 TEST_F(CRWSessionControllerTest, | 302 TEST_F(CRWSessionControllerTest, |
303 commitPendingItemWithoutPendingOrCommittedItem) { | 303 commitPendingItemWithoutPendingOrCommittedItem) { |
304 [session_controller_ commitPendingItem]; | 304 [session_controller_ commitPendingItem]; |
305 | 305 |
306 EXPECT_TRUE([session_controller_ items].empty()); | 306 EXPECT_TRUE([session_controller_ items].empty()); |
307 EXPECT_FALSE([session_controller_ currentItem]); | 307 EXPECT_FALSE([session_controller_ currentItem]); |
308 } | 308 } |
309 | 309 |
310 TEST_F(CRWSessionControllerTest, | 310 TEST_F(CRWSessionControllerTest, |
311 commitPendingItemWithoutPendingItemWithCommittedItem) { | 311 commitPendingItemWithoutPendingItemWithCommittedItem) { |
312 // Setup committed item. | 312 // Setup committed item. |
313 [session_controller_ | 313 [session_controller_ |
314 addPendingItem:GURL("http://www.url.com") | 314 addPendingItem:GURL("http://www.url.com/") |
315 referrer:MakeReferrer("http://www.referer.com") | 315 referrer:MakeReferrer("http://www.referrer.com/") |
316 transition:ui::PAGE_TRANSITION_TYPED | 316 transition:ui::PAGE_TRANSITION_TYPED |
317 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 317 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
318 [session_controller_ commitPendingItem]; | 318 [session_controller_ commitPendingItem]; |
319 | 319 |
320 // Commit pending item when there is no such one | 320 // Commit pending item when there is no such one |
321 [session_controller_ commitPendingItem]; | 321 [session_controller_ commitPendingItem]; |
322 | 322 |
323 EXPECT_EQ(1U, [session_controller_ items].size()); | 323 EXPECT_EQ(1U, [session_controller_ items].size()); |
324 EXPECT_EQ([session_controller_ items].front(), | 324 EXPECT_EQ([session_controller_ items].front().get(), |
325 [session_controller_ currentItem]); | 325 [session_controller_ currentItem]); |
326 } | 326 } |
327 | 327 |
328 // Tests that forward entries are discarded after navigation item is committed. | 328 // Tests that forward items are discarded after navigation item is committed. |
329 TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardItems) { | 329 TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardItems) { |
330 // Make 3 entries. | 330 // Make 3 items. |
331 [session_controller_ | 331 [session_controller_ |
332 addPendingItem:GURL("http://www.example.com/0") | 332 addPendingItem:GURL("http://www.example.com/0") |
333 referrer:MakeReferrer("http://www.example.com/a") | 333 referrer:MakeReferrer("http://www.example.com/a") |
334 transition:ui::PAGE_TRANSITION_LINK | 334 transition:ui::PAGE_TRANSITION_LINK |
335 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 335 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
336 [session_controller_ commitPendingItem]; | 336 [session_controller_ commitPendingItem]; |
337 [session_controller_ | 337 [session_controller_ |
338 addPendingItem:GURL("http://www.example.com/1") | 338 addPendingItem:GURL("http://www.example.com/1") |
339 referrer:MakeReferrer("http://www.example.com/b") | 339 referrer:MakeReferrer("http://www.example.com/b") |
340 transition:ui::PAGE_TRANSITION_LINK | 340 transition:ui::PAGE_TRANSITION_LINK |
(...skipping 10 matching lines...) Expand all Loading... |
351 [session_controller_ goToItemAtIndex:0]; | 351 [session_controller_ goToItemAtIndex:0]; |
352 | 352 |
353 // Create and commit a new pending item. | 353 // Create and commit a new pending item. |
354 [session_controller_ | 354 [session_controller_ |
355 addPendingItem:GURL("http://www.example.com/2") | 355 addPendingItem:GURL("http://www.example.com/2") |
356 referrer:MakeReferrer("http://www.example.com/c") | 356 referrer:MakeReferrer("http://www.example.com/c") |
357 transition:ui::PAGE_TRANSITION_LINK | 357 transition:ui::PAGE_TRANSITION_LINK |
358 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 358 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
359 [session_controller_ commitPendingItem]; | 359 [session_controller_ commitPendingItem]; |
360 | 360 |
361 // All forward entries should go away. | 361 // All forward items should go away. |
362 EXPECT_EQ(2U, [session_controller_ items].size()); | 362 EXPECT_EQ(2U, [session_controller_ items].size()); |
363 EXPECT_EQ(0U, [session_controller_ forwardItems].size()); | 363 EXPECT_EQ(0U, [session_controller_ forwardItems].size()); |
364 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); | 364 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
365 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]); | 365 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]); |
366 } | 366 } |
367 | 367 |
368 // Tests committing pending item index from the middle. | 368 // Tests committing pending item index from the middle. |
369 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { | 369 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { |
370 [session_controller_ | 370 [session_controller_ |
371 addPendingItem:GURL("http://www.example.com/0") | 371 addPendingItem:GURL("http://www.example.com/0") |
(...skipping 12 matching lines...) Expand all Loading... |
384 referrer:web::Referrer() | 384 referrer:web::Referrer() |
385 transition:ui::PAGE_TRANSITION_TYPED | 385 transition:ui::PAGE_TRANSITION_TYPED |
386 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 386 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
387 [session_controller_ commitPendingItem]; | 387 [session_controller_ commitPendingItem]; |
388 ASSERT_EQ(3U, [session_controller_ items].size()); | 388 ASSERT_EQ(3U, [session_controller_ items].size()); |
389 | 389 |
390 // Go to the middle, and commit first pending item index. | 390 // Go to the middle, and commit first pending item index. |
391 [session_controller_ goToItemAtIndex:1]; | 391 [session_controller_ goToItemAtIndex:1]; |
392 [session_controller_ setPendingItemIndex:0]; | 392 [session_controller_ setPendingItemIndex:0]; |
393 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); | 393 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); |
394 web::NavigationItem* pendingItem = [session_controller_ pendingItem]; | 394 web::NavigationItem* pending_item = [session_controller_ pendingItem]; |
395 ASSERT_TRUE(pendingItem); | 395 ASSERT_TRUE(pending_item); |
396 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); | 396 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
397 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]); | 397 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]); |
398 [session_controller_ commitPendingItem]; | 398 [session_controller_ commitPendingItem]; |
399 | 399 |
400 // Verify that pending item has been committed and current and previous item | 400 // Verify that pending item has been committed and current and previous item |
401 // indices updated. | 401 // indices updated. |
402 EXPECT_EQ([session_controller_ lastCommittedItem], pendingItem); | 402 EXPECT_EQ(pending_item, [session_controller_ lastCommittedItem]); |
403 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 403 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
404 EXPECT_FALSE([session_controller_ pendingItem]); | 404 EXPECT_FALSE([session_controller_ pendingItem]); |
405 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); | 405 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); |
406 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]); | 406 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]); |
407 EXPECT_EQ(3U, [session_controller_ items].size()); | 407 EXPECT_EQ(3U, [session_controller_ items].size()); |
408 } | 408 } |
409 | 409 |
410 TEST_F(CRWSessionControllerTest, | 410 TEST_F(CRWSessionControllerTest, |
411 DiscardPendingItemWithoutPendingOrCommittedItem) { | 411 DiscardPendingItemWithoutPendingOrCommittedItem) { |
412 [session_controller_ discardNonCommittedItems]; | 412 [session_controller_ discardNonCommittedItems]; |
413 | 413 |
414 EXPECT_TRUE([session_controller_ items].empty()); | 414 EXPECT_TRUE([session_controller_ items].empty()); |
415 EXPECT_FALSE([session_controller_ currentItem]); | 415 EXPECT_FALSE([session_controller_ currentItem]); |
416 } | 416 } |
417 | 417 |
418 TEST_F(CRWSessionControllerTest, | 418 TEST_F(CRWSessionControllerTest, |
419 DiscardPendingItemWithoutPendingItemWithCommittedItem) { | 419 DiscardPendingItemWithoutPendingItemWithCommittedItem) { |
420 // Setup committed item | 420 // Setup committed item |
421 [session_controller_ | 421 [session_controller_ |
422 addPendingItem:GURL("http://www.url.com") | 422 addPendingItem:GURL("http://www.url.com") |
423 referrer:MakeReferrer("http://www.referer.com") | 423 referrer:MakeReferrer("http://www.referer.com") |
424 transition:ui::PAGE_TRANSITION_TYPED | 424 transition:ui::PAGE_TRANSITION_TYPED |
425 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 425 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
426 [session_controller_ commitPendingItem]; | 426 [session_controller_ commitPendingItem]; |
427 | 427 |
428 // Discard noncommitted entries when there is no such one | 428 // Discard noncommitted items when there is no such one |
429 [session_controller_ discardNonCommittedItems]; | 429 [session_controller_ discardNonCommittedItems]; |
430 | 430 |
431 EXPECT_EQ(1U, [session_controller_ items].size()); | 431 EXPECT_EQ(1U, [session_controller_ items].size()); |
432 EXPECT_EQ([session_controller_ items].front(), | 432 EXPECT_EQ([session_controller_ items].front().get(), |
433 [session_controller_ currentItem]); | 433 [session_controller_ currentItem]); |
434 } | 434 } |
435 | 435 |
436 TEST_F(CRWSessionControllerTest, updatePendingItemWithoutPendingItem) { | 436 TEST_F(CRWSessionControllerTest, updatePendingItemWithoutPendingItem) { |
437 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; | 437 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; |
438 [session_controller_ commitPendingItem]; | 438 [session_controller_ commitPendingItem]; |
439 | 439 |
440 EXPECT_TRUE([session_controller_ items].empty()); | 440 EXPECT_TRUE([session_controller_ items].empty()); |
441 EXPECT_FALSE([session_controller_ currentItem]); | 441 EXPECT_FALSE([session_controller_ currentItem]); |
442 } | 442 } |
(...skipping 18 matching lines...) Expand all Loading... |
461 referrer:MakeReferrer("http://www.referer.com") | 461 referrer:MakeReferrer("http://www.referer.com") |
462 transition:ui::PAGE_TRANSITION_TYPED | 462 transition:ui::PAGE_TRANSITION_TYPED |
463 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 463 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
464 [session_controller_ commitPendingItem]; | 464 [session_controller_ commitPendingItem]; |
465 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; | 465 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; |
466 [session_controller_ commitPendingItem]; | 466 [session_controller_ commitPendingItem]; |
467 | 467 |
468 EXPECT_EQ(1U, [session_controller_ items].size()); | 468 EXPECT_EQ(1U, [session_controller_ items].size()); |
469 EXPECT_EQ(GURL("http://www.url.com/"), | 469 EXPECT_EQ(GURL("http://www.url.com/"), |
470 [session_controller_ URLForItemAtIndex:0U]); | 470 [session_controller_ URLForItemAtIndex:0U]); |
471 EXPECT_EQ([session_controller_ items].front(), | 471 EXPECT_EQ([session_controller_ items].front().get(), |
472 [session_controller_ currentItem]); | 472 [session_controller_ currentItem]); |
473 } | 473 } |
474 | 474 |
475 // Tests inserting session controller state. | 475 // Tests inserting session controller state. |
476 TEST_F(CRWSessionControllerTest, InsertState) { | 476 TEST_F(CRWSessionControllerTest, InsertState) { |
477 // Add 1 committed and 1 pending item to target controller. | 477 // Add 1 committed and 1 pending item to target controller. |
478 [session_controller_ | 478 [session_controller_ |
479 addPendingItem:GURL("http://www.url.com/2") | 479 addPendingItem:GURL("http://www.url.com/2") |
480 referrer:web::Referrer() | 480 referrer:web::Referrer() |
481 transition:ui::PAGE_TRANSITION_TYPED | 481 transition:ui::PAGE_TRANSITION_TYPED |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 EXPECT_EQ(GURL("http://www.url.com/0"), | 515 EXPECT_EQ(GURL("http://www.url.com/0"), |
516 [session_controller_ URLForItemAtIndex:0]); | 516 [session_controller_ URLForItemAtIndex:0]); |
517 EXPECT_EQ(GURL("http://www.url.com/2"), | 517 EXPECT_EQ(GURL("http://www.url.com/2"), |
518 [session_controller_ URLForItemAtIndex:1]); | 518 [session_controller_ URLForItemAtIndex:1]); |
519 EXPECT_EQ(GURL("http://www.url.com/3"), | 519 EXPECT_EQ(GURL("http://www.url.com/3"), |
520 [session_controller_ pendingItem]->GetURL()); | 520 [session_controller_ pendingItem]->GetURL()); |
521 } | 521 } |
522 | 522 |
523 // Tests inserting session controller state from empty session controller. | 523 // Tests inserting session controller state from empty session controller. |
524 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { | 524 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { |
525 // Add 2 committed entries to target controller. | 525 // Add 2 committed items to target controller. |
526 [session_controller_ | 526 [session_controller_ |
527 addPendingItem:GURL("http://www.url.com/0") | 527 addPendingItem:GURL("http://www.url.com/0") |
528 referrer:web::Referrer() | 528 referrer:web::Referrer() |
529 transition:ui::PAGE_TRANSITION_TYPED | 529 transition:ui::PAGE_TRANSITION_TYPED |
530 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 530 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
531 [session_controller_ commitPendingItem]; | 531 [session_controller_ commitPendingItem]; |
532 [session_controller_ | 532 [session_controller_ |
533 addPendingItem:GURL("http://www.url.com/1") | 533 addPendingItem:GURL("http://www.url.com/1") |
534 referrer:web::Referrer() | 534 referrer:web::Referrer() |
535 transition:ui::PAGE_TRANSITION_TYPED | 535 transition:ui::PAGE_TRANSITION_TYPED |
(...skipping 14 matching lines...) Expand all Loading... |
550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
551 EXPECT_FALSE([session_controller_ pendingItem]); | 551 EXPECT_FALSE([session_controller_ pendingItem]); |
552 EXPECT_EQ(GURL("http://www.url.com/0"), | 552 EXPECT_EQ(GURL("http://www.url.com/0"), |
553 [session_controller_ URLForItemAtIndex:0]); | 553 [session_controller_ URLForItemAtIndex:0]); |
554 EXPECT_EQ(GURL("http://www.url.com/1"), | 554 EXPECT_EQ(GURL("http://www.url.com/1"), |
555 [session_controller_ URLForItemAtIndex:1]); | 555 [session_controller_ URLForItemAtIndex:1]); |
556 } | 556 } |
557 | 557 |
558 // Tests inserting session controller state to empty session controller. | 558 // Tests inserting session controller state to empty session controller. |
559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { | 559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { |
560 // Create source session controller with 2 committed entries and one | 560 // Create source session controller with 2 committed items and one |
561 // pending item. | 561 // pending item. |
562 base::scoped_nsobject<CRWSessionController> other_session_controller( | 562 base::scoped_nsobject<CRWSessionController> other_session_controller( |
563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
564 openedByDOM:NO]); | 564 openedByDOM:NO]); |
565 [other_session_controller | 565 [other_session_controller |
566 addPendingItem:GURL("http://www.url.com/0") | 566 addPendingItem:GURL("http://www.url.com/0") |
567 referrer:web::Referrer() | 567 referrer:web::Referrer() |
568 transition:ui::PAGE_TRANSITION_TYPED | 568 transition:ui::PAGE_TRANSITION_TYPED |
569 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 569 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
570 [other_session_controller commitPendingItem]; | 570 [other_session_controller commitPendingItem]; |
(...skipping 21 matching lines...) Expand all Loading... |
592 EXPECT_EQ(GURL("http://www.url.com/0"), | 592 EXPECT_EQ(GURL("http://www.url.com/0"), |
593 [session_controller_ URLForItemAtIndex:0]); | 593 [session_controller_ URLForItemAtIndex:0]); |
594 EXPECT_EQ(GURL("http://www.url.com/1"), | 594 EXPECT_EQ(GURL("http://www.url.com/1"), |
595 [session_controller_ URLForItemAtIndex:1]); | 595 [session_controller_ URLForItemAtIndex:1]); |
596 } | 596 } |
597 | 597 |
598 // Tests inserting session controller state. Verifies that pending item index | 598 // Tests inserting session controller state. Verifies that pending item index |
599 // remains valid. | 599 // remains valid. |
600 TEST_F(CRWSessionControllerTest, | 600 TEST_F(CRWSessionControllerTest, |
601 InsertStateWithPendingItemIndexInTargetController) { | 601 InsertStateWithPendingItemIndexInTargetController) { |
602 // Add 2 committed entries and make the first item pending. | 602 // Add 2 committed items and make the first item pending. |
603 [session_controller_ | 603 [session_controller_ |
604 addPendingItem:GURL("http://www.url.com/2") | 604 addPendingItem:GURL("http://www.url.com/2") |
605 referrer:web::Referrer() | 605 referrer:web::Referrer() |
606 transition:ui::PAGE_TRANSITION_TYPED | 606 transition:ui::PAGE_TRANSITION_TYPED |
607 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 607 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
608 [session_controller_ commitPendingItem]; | 608 [session_controller_ commitPendingItem]; |
609 [session_controller_ | 609 [session_controller_ |
610 addPendingItem:GURL("http://www.url.com/3") | 610 addPendingItem:GURL("http://www.url.com/3") |
611 referrer:web::Referrer() | 611 referrer:web::Referrer() |
612 transition:ui::PAGE_TRANSITION_TYPED | 612 transition:ui::PAGE_TRANSITION_TYPED |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 TEST_F(CRWSessionControllerTest, EmptyController) { | 645 TEST_F(CRWSessionControllerTest, EmptyController) { |
646 EXPECT_TRUE([session_controller_ items].empty()); | 646 EXPECT_TRUE([session_controller_ items].empty()); |
647 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); | 647 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); |
648 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 648 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); |
649 EXPECT_FALSE([session_controller_ currentItem]); | 649 EXPECT_FALSE([session_controller_ currentItem]); |
650 EXPECT_FALSE([session_controller_ pendingItem]); | 650 EXPECT_FALSE([session_controller_ pendingItem]); |
651 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 651 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
652 } | 652 } |
653 | 653 |
654 // Helper to create a NavigationItem. | 654 // Helper to create a NavigationItem. |
655 std::unique_ptr<web::NavigationItemImpl> CreateNavigationItem( | 655 std::unique_ptr<web::NavigationItem> CreateNavigationItem( |
656 const std::string& url, | 656 const std::string& url, |
657 const std::string& referrer, | 657 const std::string& referrer, |
658 NSString* title) { | 658 NSString* title) { |
659 web::Referrer referrer_object(GURL(referrer), | 659 web::Referrer referrer_object(GURL(referrer), |
660 web::ReferrerPolicyDefault); | 660 web::ReferrerPolicyDefault); |
661 std::unique_ptr<web::NavigationItemImpl> navigation_item = | 661 std::unique_ptr<web::NavigationItemImpl> navigation_item = |
662 base::MakeUnique<web::NavigationItemImpl>(); | 662 base::MakeUnique<web::NavigationItemImpl>(); |
663 navigation_item->SetURL(GURL(url)); | 663 navigation_item->SetURL(GURL(url)); |
664 navigation_item->SetReferrer(referrer_object); | 664 navigation_item->SetReferrer(referrer_object); |
665 navigation_item->SetTitle(base::SysNSStringToUTF16(title)); | 665 navigation_item->SetTitle(base::SysNSStringToUTF16(title)); |
666 navigation_item->SetTransitionType(ui::PAGE_TRANSITION_TYPED); | 666 navigation_item->SetTransitionType(ui::PAGE_TRANSITION_TYPED); |
667 | 667 |
668 return navigation_item; | 668 // XCode clang doesn't correctly handle implicit unique_ptr casting for |
| 669 // returned values, so manually cast here. |
| 670 std::unique_ptr<web::NavigationItem> item( |
| 671 static_cast<web::NavigationItem*>(navigation_item.release())); |
| 672 return item; |
669 } | 673 } |
670 | 674 |
671 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { | 675 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { |
672 std::vector<std::unique_ptr<web::NavigationItem>> items; | 676 std::vector<std::unique_ptr<web::NavigationItem>> items; |
673 base::scoped_nsobject<CRWSessionController> controller( | 677 base::scoped_nsobject<CRWSessionController> controller( |
674 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 678 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
675 navigationItems:std::move(items) | 679 navigationItems:std::move(items) |
676 currentIndex:0]); | 680 currentIndex:0]); |
677 EXPECT_TRUE(controller.get().items.empty()); | 681 EXPECT_TRUE(controller.get().items.empty()); |
678 EXPECT_EQ(controller.get().currentNavigationIndex, -1); | 682 EXPECT_EQ(controller.get().currentNavigationIndex, -1); |
(...skipping 10 matching lines...) Expand all Loading... |
689 items.push_back(CreateNavigationItem("http://www.espn.com", | 693 items.push_back(CreateNavigationItem("http://www.espn.com", |
690 "http://www.nothing.com", @"ESPN")); | 694 "http://www.nothing.com", @"ESPN")); |
691 base::scoped_nsobject<CRWSessionController> controller( | 695 base::scoped_nsobject<CRWSessionController> controller( |
692 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 696 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
693 navigationItems:std::move(items) | 697 navigationItems:std::move(items) |
694 currentIndex:1]); | 698 currentIndex:1]); |
695 | 699 |
696 EXPECT_EQ(controller.get().items.size(), 3U); | 700 EXPECT_EQ(controller.get().items.size(), 3U); |
697 EXPECT_EQ(controller.get().currentNavigationIndex, 1); | 701 EXPECT_EQ(controller.get().currentNavigationIndex, 1); |
698 EXPECT_EQ(controller.get().previousNavigationIndex, -1); | 702 EXPECT_EQ(controller.get().previousNavigationIndex, -1); |
699 // Sanity check the current item, the CRWSessionItem unit test will ensure | 703 // Sanity check the current item, the NavigationItem unit test will ensure |
700 // the entire object is created properly. | 704 // the entire object is created properly. |
701 EXPECT_EQ(controller.get().currentItem->GetURL(), | 705 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com")); |
702 GURL("http://www.yahoo.com")); | |
703 } | 706 } |
704 | 707 |
705 // Tests index of previous navigation item. | 708 // Tests index of previous navigation item. |
706 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { | 709 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { |
707 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); | 710 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); |
708 [session_controller_ | 711 [session_controller_ |
709 addPendingItem:GURL("http://www.url.com") | 712 addPendingItem:GURL("http://www.url.com") |
710 referrer:MakeReferrer("http://www.referer.com") | 713 referrer:MakeReferrer("http://www.referer.com") |
711 transition:ui::PAGE_TRANSITION_TYPED | 714 transition:ui::PAGE_TRANSITION_TYPED |
712 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 715 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 // Push state navigation. | 798 // Push state navigation. |
796 items.push_back( | 799 items.push_back( |
797 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); | 800 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); |
798 // Push state navigation. | 801 // Push state navigation. |
799 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", | 802 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", |
800 "http://foo.com/bar", @"Sixth")); | 803 "http://foo.com/bar", @"Sixth")); |
801 base::scoped_nsobject<CRWSessionController> controller( | 804 base::scoped_nsobject<CRWSessionController> controller( |
802 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 805 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
803 navigationItems:std::move(items) | 806 navigationItems:std::move(items) |
804 currentIndex:0]); | 807 currentIndex:0]); |
805 web::NavigationItemImpl* item0 = | 808 web::NavigationItemImpl* item0 = [controller items][0].get(); |
806 static_cast<web::NavigationItemImpl*>([controller items][0]); | 809 web::NavigationItemImpl* item1 = [controller items][1].get(); |
807 web::NavigationItemImpl* item1 = | 810 web::NavigationItemImpl* item2 = [controller items][2].get(); |
808 static_cast<web::NavigationItemImpl*>([controller items][1]); | 811 web::NavigationItemImpl* item3 = [controller items][3].get(); |
809 web::NavigationItemImpl* item2 = | 812 web::NavigationItemImpl* item4 = [controller items][4].get(); |
810 static_cast<web::NavigationItemImpl*>([controller items][2]); | 813 web::NavigationItemImpl* item5 = [controller items][5].get(); |
811 web::NavigationItemImpl* item3 = | |
812 static_cast<web::NavigationItemImpl*>([controller items][3]); | |
813 web::NavigationItemImpl* item4 = | |
814 static_cast<web::NavigationItemImpl*>([controller items][4]); | |
815 web::NavigationItemImpl* item5 = | |
816 static_cast<web::NavigationItemImpl*>([controller items][5]); | |
817 item1->SetIsCreatedFromPushState(true); | 814 item1->SetIsCreatedFromPushState(true); |
818 item4->SetIsCreatedFromHashChange(true); | 815 item4->SetIsCreatedFromHashChange(true); |
819 item5->SetIsCreatedFromPushState(true); | 816 item5->SetIsCreatedFromPushState(true); |
820 | 817 |
821 EXPECT_FALSE( | 818 EXPECT_FALSE( |
822 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item0]); | 819 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item0]); |
823 EXPECT_TRUE( | 820 EXPECT_TRUE( |
824 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item1]); | 821 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item1]); |
825 EXPECT_TRUE( | 822 EXPECT_TRUE( |
826 [controller isSameDocumentNavigationBetweenItem:item5 andItem:item3]); | 823 [controller isSameDocumentNavigationBetweenItem:item5 andItem:item3]); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); | 906 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); |
910 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); | 907 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); |
911 | 908 |
912 [session_controller_ goToItemAtIndex:0]; | 909 [session_controller_ goToItemAtIndex:0]; |
913 web::NavigationItemList forwardItems = [session_controller_ forwardItems]; | 910 web::NavigationItemList forwardItems = [session_controller_ forwardItems]; |
914 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 911 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
915 EXPECT_EQ(2U, forwardItems.size()); | 912 EXPECT_EQ(2U, forwardItems.size()); |
916 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec()); | 913 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec()); |
917 } | 914 } |
918 | 915 |
919 // Tests going to entries with existing and non-existing indices. | 916 // Tests going to items with existing and non-existing indices. |
920 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) { | 917 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) { |
921 [session_controller_ | 918 [session_controller_ |
922 addPendingItem:GURL("http://www.example.com/0") | 919 addPendingItem:GURL("http://www.example.com/0") |
923 referrer:MakeReferrer("http://www.example.com/a") | 920 referrer:MakeReferrer("http://www.example.com/a") |
924 transition:ui::PAGE_TRANSITION_LINK | 921 transition:ui::PAGE_TRANSITION_LINK |
925 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 922 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
926 [session_controller_ commitPendingItem]; | 923 [session_controller_ commitPendingItem]; |
927 [session_controller_ | 924 [session_controller_ |
928 addPendingItem:GURL("http://www.example.com/1") | 925 addPendingItem:GURL("http://www.example.com/1") |
929 referrer:MakeReferrer("http://www.example.com/b") | 926 referrer:MakeReferrer("http://www.example.com/b") |
(...skipping 16 matching lines...) Expand all Loading... |
946 addPendingItem:GURL("http://www.example.com/3") | 943 addPendingItem:GURL("http://www.example.com/3") |
947 referrer:MakeReferrer("http://www.example.com/d") | 944 referrer:MakeReferrer("http://www.example.com/d") |
948 transition:ui::PAGE_TRANSITION_LINK | 945 transition:ui::PAGE_TRANSITION_LINK |
949 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 946 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
950 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 947 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
951 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); | 948 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); |
952 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); | 949 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); |
953 EXPECT_TRUE([session_controller_ pendingItem]); | 950 EXPECT_TRUE([session_controller_ pendingItem]); |
954 EXPECT_TRUE([session_controller_ transientItem]); | 951 EXPECT_TRUE([session_controller_ transientItem]); |
955 | 952 |
956 // Going back should discard transient and pending entries. | 953 // Going back should discard transient and pending items. |
957 [session_controller_ goToItemAtIndex:1]; | 954 [session_controller_ goToItemAtIndex:1]; |
958 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 955 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
959 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex); | 956 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex); |
960 EXPECT_FALSE([session_controller_ pendingItem]); | 957 EXPECT_FALSE(session_controller_.get().pendingItem); |
961 EXPECT_FALSE([session_controller_ transientItem]); | 958 EXPECT_FALSE(session_controller_.get().transientItem); |
962 | 959 |
963 // Going forward should discard transient item. | 960 // Going forward should discard transient item. |
964 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 961 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
965 EXPECT_TRUE([session_controller_ transientItem]); | 962 EXPECT_TRUE(session_controller_.get().transientItem); |
966 [session_controller_ goToItemAtIndex:2]; | 963 [session_controller_ goToItemAtIndex:2]; |
967 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 964 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
968 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 965 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
969 EXPECT_FALSE([session_controller_ transientItem]); | 966 EXPECT_FALSE(session_controller_.get().transientItem); |
970 | 967 |
971 // Out of bounds navigations should be no-op. | 968 // Out of bounds navigations should be no-op. |
972 [session_controller_ goToItemAtIndex:-1]; | 969 [session_controller_ goToItemAtIndex:-1]; |
973 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 970 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
974 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 971 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
975 [session_controller_ goToItemAtIndex:NSIntegerMax]; | 972 [session_controller_ goToItemAtIndex:NSIntegerMax]; |
976 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 973 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
977 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 974 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
978 | 975 |
979 // Going to current index should not change the previous index. | 976 // Going to current index should not change the previous index. |
980 [session_controller_ goToItemAtIndex:2]; | 977 [session_controller_ goToItemAtIndex:2]; |
981 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 978 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
982 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 979 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
983 } | 980 } |
984 | 981 |
985 // Tests that visible URL is the same as transient URL if there are no committed | 982 // Tests that visible URL is the same as transient URL if there are no committed |
986 // entries. | 983 // items. |
987 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { | 984 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { |
988 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 985 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
989 web::NavigationItem* visible_item = [session_controller_ visibleItem]; | 986 web::NavigationItem* visible_item = [session_controller_ visibleItem]; |
990 ASSERT_TRUE(visible_item); | 987 ASSERT_TRUE(visible_item); |
991 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); | 988 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); |
992 } | 989 } |
993 | 990 |
994 // Tests that visible URL is the same as transient URL if there is a committed | 991 // Tests that visible URL is the same as transient URL if there is a committed |
995 // item. | 992 // item. |
996 TEST_F(CRWSessionControllerTest, VisibleItemWithCommittedAndTransientItems) { | 993 TEST_F(CRWSessionControllerTest, VisibleItemWithCommittedAndTransientItems) { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 1085 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
1089 [session_controller_ commitPendingItem]; | 1086 [session_controller_ commitPendingItem]; |
1090 | 1087 |
1091 [session_controller_ setPendingItemIndex:0]; | 1088 [session_controller_ setPendingItemIndex:0]; |
1092 | 1089 |
1093 web::NavigationItem* visible_item = [session_controller_ visibleItem]; | 1090 web::NavigationItem* visible_item = [session_controller_ visibleItem]; |
1094 ASSERT_TRUE(visible_item); | 1091 ASSERT_TRUE(visible_item); |
1095 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); | 1092 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); |
1096 } | 1093 } |
1097 | 1094 |
1098 // Tests that |-backwardItems| is empty if all preceding entries are | 1095 // Tests that |-backwardItems| is empty if all preceding items are |
1099 // redirects. | 1096 // redirects. |
1100 TEST_F(CRWSessionControllerTest, BackwardItemsForAllRedirects) { | 1097 TEST_F(CRWSessionControllerTest, BackwardItemsForAllRedirects) { |
1101 [session_controller_ | 1098 [session_controller_ |
1102 addPendingItem:GURL("http://www.example.com") | 1099 addPendingItem:GURL("http://www.example.com") |
1103 referrer:MakeReferrer("http://www.example.com/a") | 1100 referrer:MakeReferrer("http://www.example.com/a") |
1104 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1101 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
1105 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1102 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
1106 [session_controller_ commitPendingItem]; | 1103 [session_controller_ commitPendingItem]; |
1107 [session_controller_ | 1104 [session_controller_ |
1108 addPendingItem:GURL("http://www.example.com/0") | 1105 addPendingItem:GURL("http://www.example.com/0") |
1109 referrer:MakeReferrer("http://www.example.com/b") | 1106 referrer:MakeReferrer("http://www.example.com/b") |
1110 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1107 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
1111 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1108 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
1112 [session_controller_ commitPendingItem]; | 1109 [session_controller_ commitPendingItem]; |
1113 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 1110 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
1114 } | 1111 } |
1115 | 1112 |
1116 } // anonymous namespace | 1113 } // anonymous namespace |
OLD | NEW |