Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: ios/web/navigation/crw_session_controller_unittest.mm

Issue 2737203002: Remove CRWSessionEntry. (Closed)
Patch Set: fix XCode-clang build Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ios/web/navigation/crw_session_controller.mm ('k') | ios/web/navigation/crw_session_entry.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_controller.mm ('k') | ios/web/navigation/crw_session_entry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698