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

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

Issue 2672953005: Updated ownership of NavigationItems within CRWSessionController. (Closed)
Patch Set: fix unittests Created 3 years, 10 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
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #import "base/mac/scoped_nsobject.h" 12 #import "base/mac/scoped_nsobject.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "base/strings/sys_string_conversions.h" 14 #include "base/strings/sys_string_conversions.h"
15 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 15 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
16 #import "ios/web/navigation/crw_session_entry.h"
17 #import "ios/web/navigation/navigation_item_impl.h" 16 #import "ios/web/navigation/navigation_item_impl.h"
18 #include "ios/web/public/referrer.h" 17 #include "ios/web/public/referrer.h"
19 #include "ios/web/public/test/fakes/test_browser_state.h" 18 #include "ios/web/public/test/fakes/test_browser_state.h"
20 #include "ios/web/public/test/test_web_thread_bundle.h" 19 #include "ios/web/public/test/test_web_thread_bundle.h"
21 #import "net/base/mac/url_conversions.h" 20 #import "net/base/mac/url_conversions.h"
22 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
23 #import "testing/gtest_mac.h" 22 #import "testing/gtest_mac.h"
24 #include "testing/platform_test.h" 23 #include "testing/platform_test.h"
25 24
26 @interface CRWSessionController (Testing) 25 @interface CRWSessionController (Testing)
27 - (const GURL&)URLForSessionAtIndex:(NSUInteger)index; 26 - (GURL)URLForNavigationItemAtIndex:(size_t)index;
28 - (const GURL&)currentURL; 27 - (GURL)currentURL;
29 @end 28 @end
30 29
31 @implementation CRWSessionController (Testing) 30 @implementation CRWSessionController (Testing)
32 - (const GURL&)URLForSessionAtIndex:(NSUInteger)index { 31 - (GURL)URLForNavigationItemAtIndex:(size_t)index {
33 CRWSessionEntry* entry = 32 if (index < self.items.size())
34 static_cast<CRWSessionEntry*>([self.entries objectAtIndex:index]); 33 return self.items[index]->GetURL();
35 return entry.navigationItem->GetURL(); 34 return GURL();
36 } 35 }
37 36
38 - (const GURL&)currentURL { 37 - (GURL)currentURL {
39 DCHECK([self currentEntry]); 38 web::NavigationItem* currentItem = self.currentItem;
40 return [self currentEntry].navigationItem->GetURL(); 39 return currentItem ? currentItem->GetURL() : GURL();
41 } 40 }
42 @end 41 @end
43 42
44 namespace { 43 namespace {
45 44
46 class CRWSessionControllerTest : public PlatformTest { 45 class CRWSessionControllerTest : public PlatformTest {
47 protected: 46 protected:
48 void SetUp() override { 47 void SetUp() override {
49 session_controller_.reset( 48 session_controller_.reset(
50 [[CRWSessionController alloc] initWithWindowName:@"test window" 49 [[CRWSessionController alloc] initWithWindowName:@"test window"
51 openerId:@"opener" 50 openerId:@"opener"
52 openedByDOM:NO 51 openedByDOM:NO
53 openerNavigationIndex:0 52 openerNavigationIndex:0
54 browserState:&browser_state_]); 53 browserState:&browser_state_]);
55 } 54 }
56 55
57 web::Referrer MakeReferrer(const std::string& url) { 56 web::Referrer MakeReferrer(const std::string& url) {
58 return web::Referrer(GURL(url), web::ReferrerPolicyDefault); 57 return web::Referrer(GURL(url), web::ReferrerPolicyDefault);
59 } 58 }
60 59
61 web::TestWebThreadBundle thread_bundle_; 60 web::TestWebThreadBundle thread_bundle_;
62 web::TestBrowserState browser_state_; 61 web::TestBrowserState browser_state_;
63 base::scoped_nsobject<CRWSessionController> session_controller_; 62 base::scoped_nsobject<CRWSessionController> session_controller_;
64 }; 63 };
65 64
66 TEST_F(CRWSessionControllerTest, InitWithWindowName) { 65 TEST_F(CRWSessionControllerTest, InitWithWindowName) {
67 EXPECT_NSEQ(@"test window", [session_controller_ windowName]); 66 EXPECT_NSEQ(@"test window", [session_controller_ windowName]);
68 EXPECT_NSEQ(@"opener", [session_controller_ openerId]); 67 EXPECT_NSEQ(@"opener", [session_controller_ openerId]);
69 EXPECT_FALSE([session_controller_ isOpenedByDOM]); 68 EXPECT_FALSE([session_controller_ isOpenedByDOM]);
70 EXPECT_EQ(0U, [[session_controller_ entries] count]); 69 EXPECT_EQ(0U, [session_controller_ items].size());
71 EXPECT_EQ(nil, [session_controller_ currentEntry]); 70 EXPECT_EQ(nullptr, [session_controller_ currentItem]);
72 } 71 }
73 72
74 // Tests session controller state after setting a pending index. 73 // Tests session controller state after setting a pending index.
75 TEST_F(CRWSessionControllerTest, SetPendingIndex) { 74 TEST_F(CRWSessionControllerTest, SetPendingIndex) {
76 [session_controller_ addPendingItem:GURL("http://www.example.com") 75 [session_controller_ addPendingItem:GURL("http://www.example.com")
77 referrer:web::Referrer() 76 referrer:web::Referrer()
78 transition:ui::PAGE_TRANSITION_TYPED 77 transition:ui::PAGE_TRANSITION_TYPED
79 rendererInitiated:NO]; 78 rendererInitiated:NO];
80 [session_controller_ commitPendingItem]; 79 [session_controller_ commitPendingItem];
81 80
82 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 81 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
83 [session_controller_ setPendingItemIndex:0]; 82 [session_controller_ setPendingItemIndex:0];
84 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); 83 EXPECT_EQ(0, [session_controller_ pendingItemIndex]);
85 EXPECT_EQ([[session_controller_ entries] lastObject], 84 EXPECT_EQ([session_controller_ items].back().get(),
86 [session_controller_ pendingEntry]); 85 [session_controller_ pendingItem]);
87 } 86 }
88 87
89 TEST_F(CRWSessionControllerTest, addPendingItem) { 88 TEST_F(CRWSessionControllerTest, addPendingItem) {
90 [session_controller_ addPendingItem:GURL("http://www.url.com") 89 [session_controller_ addPendingItem:GURL("http://www.url.com")
91 referrer:MakeReferrer("http://www.referer.com") 90 referrer:MakeReferrer("http://www.referer.com")
92 transition:ui::PAGE_TRANSITION_TYPED 91 transition:ui::PAGE_TRANSITION_TYPED
93 rendererInitiated:NO]; 92 rendererInitiated:NO];
94 93
95 EXPECT_EQ(0U, [[session_controller_ entries] count]); 94 EXPECT_EQ(0U, [session_controller_ items].size());
96 EXPECT_EQ( 95 EXPECT_EQ(
97 GURL("http://www.url.com/"), 96 GURL("http://www.url.com/"),
98 [session_controller_ currentURL]); 97 [session_controller_ currentURL]);
99 } 98 }
100 99
101 TEST_F(CRWSessionControllerTest, addPendingItemWithCommittedEntries) { 100 TEST_F(CRWSessionControllerTest, addPendingItemWithCommittedItems) {
102 [session_controller_ addPendingItem:GURL("http://www.committed.url.com") 101 [session_controller_ addPendingItem:GURL("http://www.committed.url.com")
103 referrer:MakeReferrer("http://www.referer.com") 102 referrer:MakeReferrer("http://www.referer.com")
104 transition:ui::PAGE_TRANSITION_TYPED 103 transition:ui::PAGE_TRANSITION_TYPED
105 rendererInitiated:NO]; 104 rendererInitiated:NO];
106 [session_controller_ commitPendingItem]; 105 [session_controller_ commitPendingItem];
107 106
108 [session_controller_ addPendingItem:GURL("http://www.url.com") 107 [session_controller_ addPendingItem:GURL("http://www.url.com")
109 referrer:MakeReferrer("http://www.referer.com") 108 referrer:MakeReferrer("http://www.referer.com")
110 transition:ui::PAGE_TRANSITION_TYPED 109 transition:ui::PAGE_TRANSITION_TYPED
111 rendererInitiated:NO]; 110 rendererInitiated:NO];
112 111
113 EXPECT_EQ(1U, [[session_controller_ entries] count]); 112 EXPECT_EQ(1U, [session_controller_ items].size());
114 EXPECT_EQ( 113 EXPECT_EQ(GURL("http://www.committed.url.com/"),
115 GURL("http://www.committed.url.com/"), 114 [session_controller_ URLForNavigationItemAtIndex:0U]);
116 [session_controller_ URLForSessionAtIndex:0U]);
117 EXPECT_EQ( 115 EXPECT_EQ(
118 GURL("http://www.url.com/"), 116 GURL("http://www.url.com/"),
119 [session_controller_ currentURL]); 117 [session_controller_ currentURL]);
120 } 118 }
121 119
122 // Tests that adding a pending entry resets pending entry index. 120 // Tests that adding a pending item resets pending item index.
123 TEST_F(CRWSessionControllerTest, addPendingItemWithExisingPendingEntryIndex) { 121 TEST_F(CRWSessionControllerTest, addPendingItemWithExisingPendingItemIndex) {
124 [session_controller_ addPendingItem:GURL("http://www.example.com") 122 [session_controller_ addPendingItem:GURL("http://www.example.com")
125 referrer:web::Referrer() 123 referrer:web::Referrer()
126 transition:ui::PAGE_TRANSITION_TYPED 124 transition:ui::PAGE_TRANSITION_TYPED
127 rendererInitiated:NO]; 125 rendererInitiated:NO];
128 [session_controller_ commitPendingItem]; 126 [session_controller_ commitPendingItem];
129 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 127 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
130 referrer:web::Referrer() 128 referrer:web::Referrer()
131 transition:ui::PAGE_TRANSITION_TYPED 129 transition:ui::PAGE_TRANSITION_TYPED
132 rendererInitiated:NO]; 130 rendererInitiated:NO];
133 [session_controller_ commitPendingItem]; 131 [session_controller_ commitPendingItem];
134 132
135 // Set 0 as pending entry index. 133 // Set 0 as pending item index.
136 [session_controller_ setPendingItemIndex:0]; 134 [session_controller_ setPendingItemIndex:0];
137 EXPECT_EQ(GURL("http://www.example.com/"), 135 EXPECT_EQ(GURL("http://www.example.com/"),
138 [[session_controller_ pendingEntry] navigationItem]->GetURL()); 136 [session_controller_ pendingItem]->GetURL());
139 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); 137 EXPECT_EQ(0, [session_controller_ pendingItemIndex]);
140 138
141 // Add a pending entry, which should drop pending navigation index. 139 // Add a pending item, which should drop pending navigation index.
142 [session_controller_ addPendingItem:GURL("http://www.example.com/1") 140 [session_controller_ addPendingItem:GURL("http://www.example.com/1")
143 referrer:web::Referrer() 141 referrer:web::Referrer()
144 transition:ui::PAGE_TRANSITION_TYPED 142 transition:ui::PAGE_TRANSITION_TYPED
145 rendererInitiated:NO]; 143 rendererInitiated:NO];
146 EXPECT_EQ(GURL("http://www.example.com/1"), 144 EXPECT_EQ(GURL("http://www.example.com/1"),
147 [[session_controller_ pendingEntry] navigationItem]->GetURL()); 145 [session_controller_ pendingItem]->GetURL());
148 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 146 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
149 } 147 }
150 148
151 TEST_F(CRWSessionControllerTest, addPendingItemOverriding) { 149 TEST_F(CRWSessionControllerTest, addPendingItemOverriding) {
152 [session_controller_ addPendingItem:GURL("http://www.url.com") 150 [session_controller_ addPendingItem:GURL("http://www.url.com")
153 referrer:MakeReferrer("http://www.referer.com") 151 referrer:MakeReferrer("http://www.referer.com")
154 transition:ui::PAGE_TRANSITION_TYPED 152 transition:ui::PAGE_TRANSITION_TYPED
155 rendererInitiated:NO]; 153 rendererInitiated:NO];
156 [session_controller_ 154 [session_controller_
157 addPendingItem:GURL("http://www.another.url.com") 155 addPendingItem:GURL("http://www.another.url.com")
158 referrer:MakeReferrer("http://www.another.referer.com") 156 referrer:MakeReferrer("http://www.another.referer.com")
159 transition:ui::PAGE_TRANSITION_TYPED 157 transition:ui::PAGE_TRANSITION_TYPED
160 rendererInitiated:NO]; 158 rendererInitiated:NO];
161 159
162 EXPECT_EQ(0U, [[session_controller_ entries] count]); 160 EXPECT_EQ(0U, [session_controller_ items].size());
163 EXPECT_EQ( 161 EXPECT_EQ(
164 GURL("http://www.another.url.com/"), 162 GURL("http://www.another.url.com/"),
165 [session_controller_ currentURL]); 163 [session_controller_ currentURL]);
166 } 164 }
167 165
168 TEST_F(CRWSessionControllerTest, addPendingItemAndCommit) { 166 TEST_F(CRWSessionControllerTest, addPendingItemAndCommit) {
169 [session_controller_ addPendingItem:GURL("http://www.url.com") 167 [session_controller_ addPendingItem:GURL("http://www.url.com")
170 referrer:MakeReferrer("http://www.referer.com") 168 referrer:MakeReferrer("http://www.referer.com")
171 transition:ui::PAGE_TRANSITION_TYPED 169 transition:ui::PAGE_TRANSITION_TYPED
172 rendererInitiated:NO]; 170 rendererInitiated:NO];
173 [session_controller_ commitPendingItem]; 171 [session_controller_ commitPendingItem];
174 172
175 EXPECT_EQ(1U, [[session_controller_ entries] count]); 173 EXPECT_EQ(1U, [session_controller_ items].size());
176 EXPECT_EQ( 174 EXPECT_EQ(GURL("http://www.url.com/"),
177 GURL("http://www.url.com/"), 175 [session_controller_ URLForNavigationItemAtIndex:0U]);
178 [session_controller_ URLForSessionAtIndex:0U]); 176 EXPECT_EQ([session_controller_ items].front().get(),
179 EXPECT_EQ( 177 [session_controller_ currentItem]);
180 [[session_controller_ entries] objectAtIndex:0U],
181 [session_controller_ currentEntry]);
182 } 178 }
183 179
184 TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) { 180 TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) {
185 [session_controller_ addPendingItem:GURL("http://www.url.com") 181 [session_controller_ addPendingItem:GURL("http://www.url.com")
186 referrer:MakeReferrer("http://www.referer.com") 182 referrer:MakeReferrer("http://www.referer.com")
187 transition:ui::PAGE_TRANSITION_TYPED 183 transition:ui::PAGE_TRANSITION_TYPED
188 rendererInitiated:NO]; 184 rendererInitiated:NO];
189 [session_controller_ 185 [session_controller_
190 addPendingItem:GURL("http://www.another.url.com") 186 addPendingItem:GURL("http://www.another.url.com")
191 referrer:MakeReferrer("http://www.another.referer.com") 187 referrer:MakeReferrer("http://www.another.referer.com")
192 transition:ui::PAGE_TRANSITION_TYPED 188 transition:ui::PAGE_TRANSITION_TYPED
193 rendererInitiated:NO]; 189 rendererInitiated:NO];
194 [session_controller_ commitPendingItem]; 190 [session_controller_ commitPendingItem];
195 191
196 EXPECT_EQ(1U, [[session_controller_ entries] count]); 192 EXPECT_EQ(1U, [session_controller_ items].size());
197 EXPECT_EQ( 193 EXPECT_EQ(GURL("http://www.another.url.com/"),
198 GURL("http://www.another.url.com/"), 194 [session_controller_ URLForNavigationItemAtIndex:0U]);
199 [session_controller_ URLForSessionAtIndex:0U]); 195 EXPECT_EQ([session_controller_ items].front().get(),
200 EXPECT_EQ( 196 [session_controller_ currentItem]);
201 [[session_controller_ entries] objectAtIndex:0U],
202 [session_controller_ currentEntry]);
203 } 197 }
204 198
205 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) { 199 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) {
206 [session_controller_ addPendingItem:GURL("http://www.url.com") 200 [session_controller_ addPendingItem:GURL("http://www.url.com")
207 referrer:MakeReferrer("http://www.referer.com") 201 referrer:MakeReferrer("http://www.referer.com")
208 transition:ui::PAGE_TRANSITION_TYPED 202 transition:ui::PAGE_TRANSITION_TYPED
209 rendererInitiated:NO]; 203 rendererInitiated:NO];
210 [session_controller_ commitPendingItem]; 204 [session_controller_ commitPendingItem];
211 205
212 [session_controller_ 206 [session_controller_
213 addPendingItem:GURL("http://www.another.url.com") 207 addPendingItem:GURL("http://www.another.url.com")
214 referrer:MakeReferrer("http://www.another.referer.com") 208 referrer:MakeReferrer("http://www.another.referer.com")
215 transition:ui::PAGE_TRANSITION_TYPED 209 transition:ui::PAGE_TRANSITION_TYPED
216 rendererInitiated:NO]; 210 rendererInitiated:NO];
217 [session_controller_ commitPendingItem]; 211 [session_controller_ commitPendingItem];
218 212
219 EXPECT_EQ(2U, [[session_controller_ entries] count]); 213 EXPECT_EQ(2U, [session_controller_ items].size());
220 EXPECT_EQ( 214 EXPECT_EQ(GURL("http://www.url.com/"),
221 GURL("http://www.url.com/"), 215 [session_controller_ URLForNavigationItemAtIndex:0U]);
222 [session_controller_ URLForSessionAtIndex:0U]); 216 EXPECT_EQ(GURL("http://www.another.url.com/"),
223 EXPECT_EQ( 217 [session_controller_ URLForNavigationItemAtIndex:1U]);
224 GURL("http://www.another.url.com/"), 218 EXPECT_EQ([session_controller_ items][1].get(),
225 [session_controller_ URLForSessionAtIndex:1U]); 219 [session_controller_ currentItem]);
226 EXPECT_EQ(
227 [[session_controller_ entries] objectAtIndex:1U],
228 [session_controller_ currentEntry]);
229 } 220 }
230 221
231 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) { 222 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) {
232 [session_controller_ addPendingItem:GURL("http://www.url.com") 223 [session_controller_ addPendingItem:GURL("http://www.url.com")
233 referrer:MakeReferrer("http://www.referer.com") 224 referrer:MakeReferrer("http://www.referer.com")
234 transition:ui::PAGE_TRANSITION_TYPED 225 transition:ui::PAGE_TRANSITION_TYPED
235 rendererInitiated:NO]; 226 rendererInitiated:NO];
236 [session_controller_ discardNonCommittedItems]; 227 [session_controller_ discardNonCommittedItems];
237 228
238 EXPECT_EQ(0U, [[session_controller_ entries] count]); 229 EXPECT_EQ(0U, [session_controller_ items].size());
239 EXPECT_EQ(nil, [session_controller_ currentEntry]); 230 EXPECT_EQ(nullptr, [session_controller_ currentItem]);
240 } 231 }
241 232
242 // Tests discarding pending entry added via |setPendingItemIndex:| call. 233 // Tests discarding pending item added via |setPendingItemIndex:| call.
243 TEST_F(CRWSessionControllerTest, setPendingItemIndexAndDiscard) { 234 TEST_F(CRWSessionControllerTest, setPendingItemIndexAndDiscard) {
244 [session_controller_ addPendingItem:GURL("http://www.example.com") 235 [session_controller_ addPendingItem:GURL("http://www.example.com")
245 referrer:web::Referrer() 236 referrer:web::Referrer()
246 transition:ui::PAGE_TRANSITION_TYPED 237 transition:ui::PAGE_TRANSITION_TYPED
247 rendererInitiated:NO]; 238 rendererInitiated:NO];
248 [session_controller_ commitPendingItem]; 239 [session_controller_ commitPendingItem];
249 240
250 [session_controller_ setPendingItemIndex:0]; 241 [session_controller_ setPendingItemIndex:0];
251 EXPECT_TRUE([session_controller_ pendingEntry]); 242 EXPECT_TRUE([session_controller_ pendingItem]);
252 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); 243 EXPECT_EQ(0, [session_controller_ pendingItemIndex]);
253 244
254 [session_controller_ discardNonCommittedItems]; 245 [session_controller_ discardNonCommittedItems];
255 EXPECT_FALSE([session_controller_ pendingEntry]); 246 EXPECT_FALSE([session_controller_ pendingItem]);
256 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 247 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
257 } 248 }
258 249
259 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscardAndAddAndCommit) { 250 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscardAndAddAndCommit) {
260 [session_controller_ addPendingItem:GURL("http://www.url.com") 251 [session_controller_ addPendingItem:GURL("http://www.url.com")
261 referrer:MakeReferrer("http://www.referer.com") 252 referrer:MakeReferrer("http://www.referer.com")
262 transition:ui::PAGE_TRANSITION_TYPED 253 transition:ui::PAGE_TRANSITION_TYPED
263 rendererInitiated:NO]; 254 rendererInitiated:NO];
264 [session_controller_ discardNonCommittedItems]; 255 [session_controller_ discardNonCommittedItems];
265 256
266 [session_controller_ addPendingItem:GURL("http://www.another.url.com") 257 [session_controller_ addPendingItem:GURL("http://www.another.url.com")
267 referrer:MakeReferrer("http://www.referer.com") 258 referrer:MakeReferrer("http://www.referer.com")
268 transition:ui::PAGE_TRANSITION_TYPED 259 transition:ui::PAGE_TRANSITION_TYPED
269 rendererInitiated:NO]; 260 rendererInitiated:NO];
270 [session_controller_ commitPendingItem]; 261 [session_controller_ commitPendingItem];
271 262
272 EXPECT_EQ(1U, [[session_controller_ entries] count]); 263 EXPECT_EQ(1U, [session_controller_ items].size());
273 EXPECT_EQ( 264 EXPECT_EQ(GURL("http://www.another.url.com/"),
274 GURL("http://www.another.url.com/"), 265 [session_controller_ URLForNavigationItemAtIndex:0U]);
275 [session_controller_ URLForSessionAtIndex:0U]); 266 EXPECT_EQ([session_controller_ items].front().get(),
276 EXPECT_EQ( 267 [session_controller_ currentItem]);
277 [[session_controller_ entries] objectAtIndex:0U],
278 [session_controller_ currentEntry]);
279 } 268 }
280 269
281 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) { 270 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) {
282 [session_controller_ addPendingItem:GURL("http://www.url.com") 271 [session_controller_ addPendingItem:GURL("http://www.url.com")
283 referrer:MakeReferrer("http://www.referer.com") 272 referrer:MakeReferrer("http://www.referer.com")
284 transition:ui::PAGE_TRANSITION_TYPED 273 transition:ui::PAGE_TRANSITION_TYPED
285 rendererInitiated:NO]; 274 rendererInitiated:NO];
286 [session_controller_ commitPendingItem]; 275 [session_controller_ commitPendingItem];
287 276
288 [session_controller_ addPendingItem:GURL("http://www.another.url.com") 277 [session_controller_ addPendingItem:GURL("http://www.another.url.com")
289 referrer:MakeReferrer("http://www.referer.com") 278 referrer:MakeReferrer("http://www.referer.com")
290 transition:ui::PAGE_TRANSITION_TYPED 279 transition:ui::PAGE_TRANSITION_TYPED
291 rendererInitiated:NO]; 280 rendererInitiated:NO];
292 [session_controller_ discardNonCommittedItems]; 281 [session_controller_ discardNonCommittedItems];
293 282
294 EXPECT_EQ(1U, [[session_controller_ entries] count]); 283 EXPECT_EQ(1U, [session_controller_ items].size());
295 EXPECT_EQ( 284 EXPECT_EQ(GURL("http://www.url.com/"),
296 GURL("http://www.url.com/"), 285 [session_controller_ URLForNavigationItemAtIndex:0U]);
297 [session_controller_ URLForSessionAtIndex:0U]); 286 EXPECT_EQ([session_controller_ items].front().get(),
298 EXPECT_EQ( 287 [session_controller_ currentItem]);
299 [[session_controller_ entries] objectAtIndex:0U],
300 [session_controller_ currentEntry]);
301 } 288 }
302 289
303 TEST_F(CRWSessionControllerTest, 290 TEST_F(CRWSessionControllerTest,
304 commitPendingItemWithoutPendingOrCommittedEntry) { 291 commitPendingItemWithoutPendingOrCommittedItem) {
305 [session_controller_ commitPendingItem]; 292 [session_controller_ commitPendingItem];
306 293
307 EXPECT_EQ(0U, [[session_controller_ entries] count]); 294 EXPECT_EQ(0U, [session_controller_ items].size());
308 EXPECT_EQ(nil, [session_controller_ currentEntry]); 295 EXPECT_EQ(nullptr, [session_controller_ currentItem]);
309 } 296 }
310 297
311 TEST_F(CRWSessionControllerTest, 298 TEST_F(CRWSessionControllerTest,
312 commitPendingItemWithoutPendingEntryWithCommittedEntry) { 299 commitPendingItemWithoutPendingItemWithCommittedItem) {
313 // Setup committed entry 300 // Setup committed item
314 [session_controller_ addPendingItem:GURL("http://www.url.com") 301 [session_controller_ addPendingItem:GURL("http://www.url.com")
315 referrer:MakeReferrer("http://www.referer.com") 302 referrer:MakeReferrer("http://www.referer.com")
316 transition:ui::PAGE_TRANSITION_TYPED 303 transition:ui::PAGE_TRANSITION_TYPED
317 rendererInitiated:NO]; 304 rendererInitiated:NO];
318 [session_controller_ commitPendingItem]; 305 [session_controller_ commitPendingItem];
319 306
320 // Commit pending entry when there is no such one 307 // Commit pending item when there is no such one
321 [session_controller_ commitPendingItem]; 308 [session_controller_ commitPendingItem];
322 309
323 EXPECT_EQ(1U, [[session_controller_ entries] count]); 310 EXPECT_EQ(1U, [session_controller_ items].size());
324 EXPECT_EQ( 311 EXPECT_EQ([session_controller_ items].front().get(),
325 [[session_controller_ entries] objectAtIndex:0U], 312 [session_controller_ currentItem]);
326 [session_controller_ currentEntry]);
327 } 313 }
328 314
329 // Tests that forward entries are discarded after navigation entry is committed. 315 // Tests that forward items are discarded after navigation item is committed.
330 TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardEntries) { 316 TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardItems) {
331 // Make 3 entries. 317 // Make 3 items.
332 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 318 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
333 referrer:MakeReferrer("http://www.example.com/a") 319 referrer:MakeReferrer("http://www.example.com/a")
334 transition:ui::PAGE_TRANSITION_LINK 320 transition:ui::PAGE_TRANSITION_LINK
335 rendererInitiated:YES]; 321 rendererInitiated:YES];
336 [session_controller_ commitPendingItem]; 322 [session_controller_ commitPendingItem];
337 [session_controller_ addPendingItem:GURL("http://www.example.com/1") 323 [session_controller_ addPendingItem:GURL("http://www.example.com/1")
338 referrer:MakeReferrer("http://www.example.com/b") 324 referrer:MakeReferrer("http://www.example.com/b")
339 transition:ui::PAGE_TRANSITION_LINK 325 transition:ui::PAGE_TRANSITION_LINK
340 rendererInitiated:YES]; 326 rendererInitiated:YES];
341 [session_controller_ commitPendingItem]; 327 [session_controller_ commitPendingItem];
342 [session_controller_ addPendingItem:GURL("http://www.example.com/2") 328 [session_controller_ addPendingItem:GURL("http://www.example.com/2")
343 referrer:MakeReferrer("http://www.example.com/c") 329 referrer:MakeReferrer("http://www.example.com/c")
344 transition:ui::PAGE_TRANSITION_LINK 330 transition:ui::PAGE_TRANSITION_LINK
345 rendererInitiated:YES]; 331 rendererInitiated:YES];
346 [session_controller_ commitPendingItem]; 332 [session_controller_ commitPendingItem];
347 333
348 // Go back to the first entry. 334 // Go back to the first item.
349 [session_controller_ goToItemAtIndex:0]; 335 [session_controller_ goToItemAtIndex:0];
350 336
351 // Create and commit a new pending entry. 337 // Create and commit a new pending item.
352 [session_controller_ addPendingItem:GURL("http://www.example.com/2") 338 [session_controller_ addPendingItem:GURL("http://www.example.com/2")
353 referrer:MakeReferrer("http://www.example.com/c") 339 referrer:MakeReferrer("http://www.example.com/c")
354 transition:ui::PAGE_TRANSITION_LINK 340 transition:ui::PAGE_TRANSITION_LINK
355 rendererInitiated:YES]; 341 rendererInitiated:YES];
356 [session_controller_ commitPendingItem]; 342 [session_controller_ commitPendingItem];
357 343
358 // All forward entries should go away. 344 // All forward items should go away.
359 EXPECT_EQ(2U, [[session_controller_ entries] count]); 345 EXPECT_EQ(2U, [session_controller_ items].size());
360 EXPECT_EQ(0U, [[session_controller_ forwardEntries] count]); 346 EXPECT_EQ(0U, [session_controller_ forwardItems].size());
361 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); 347 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
362 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]); 348 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]);
363 } 349 }
364 350
365 // Tests committing pending entry index from the middle. 351 // Tests committing pending item index from the middle.
366 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { 352 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) {
367 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 353 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
368 referrer:web::Referrer() 354 referrer:web::Referrer()
369 transition:ui::PAGE_TRANSITION_TYPED 355 transition:ui::PAGE_TRANSITION_TYPED
370 rendererInitiated:NO]; 356 rendererInitiated:NO];
371 [session_controller_ commitPendingItem]; 357 [session_controller_ commitPendingItem];
372 [session_controller_ addPendingItem:GURL("http://www.example.com/1") 358 [session_controller_ addPendingItem:GURL("http://www.example.com/1")
373 referrer:web::Referrer() 359 referrer:web::Referrer()
374 transition:ui::PAGE_TRANSITION_TYPED 360 transition:ui::PAGE_TRANSITION_TYPED
375 rendererInitiated:NO]; 361 rendererInitiated:NO];
376 [session_controller_ commitPendingItem]; 362 [session_controller_ commitPendingItem];
377 [session_controller_ addPendingItem:GURL("http://www.example.com/2") 363 [session_controller_ addPendingItem:GURL("http://www.example.com/2")
378 referrer:web::Referrer() 364 referrer:web::Referrer()
379 transition:ui::PAGE_TRANSITION_TYPED 365 transition:ui::PAGE_TRANSITION_TYPED
380 rendererInitiated:NO]; 366 rendererInitiated:NO];
381 [session_controller_ commitPendingItem]; 367 [session_controller_ commitPendingItem];
382 ASSERT_EQ(3U, [[session_controller_ entries] count]); 368 ASSERT_EQ(3U, [session_controller_ items].size());
383 369
384 // Go to the middle, and commit first pending entry index. 370 // Go to the middle, and commit first pending item index.
385 [session_controller_ goToItemAtIndex:1]; 371 [session_controller_ goToItemAtIndex:1];
386 [session_controller_ setPendingItemIndex:0]; 372 [session_controller_ setPendingItemIndex:0];
387 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); 373 ASSERT_EQ(0, [session_controller_ pendingItemIndex]);
388 base::scoped_nsobject<CRWSessionEntry> pendingEntry( 374 web::NavigationItemImpl* pending_item = [session_controller_ pendingItem];
389 [[session_controller_ pendingEntry] retain]); 375 ASSERT_TRUE(pending_item);
390 ASSERT_TRUE(pendingEntry);
391 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); 376 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]);
392 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]); 377 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]);
393 [session_controller_ commitPendingItem]; 378 [session_controller_ commitPendingItem];
394 379
395 // Verify that pending entry has been committed and current and previous entry 380 // Verify that pending item has been committed and current and previous item
396 // indices updated. 381 // indices updated.
397 EXPECT_EQ(pendingEntry, [session_controller_ lastCommittedEntry]); 382 EXPECT_EQ(pending_item, [session_controller_ lastCommittedItem]);
398 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 383 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
399 EXPECT_FALSE([session_controller_ pendingEntry]); 384 EXPECT_FALSE([session_controller_ pendingItem]);
400 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); 385 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]);
401 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]); 386 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]);
402 EXPECT_EQ(3U, [[session_controller_ entries] count]); 387 EXPECT_EQ(3U, [session_controller_ items].size());
403 } 388 }
404 389
405 TEST_F(CRWSessionControllerTest, 390 TEST_F(CRWSessionControllerTest,
406 DiscardPendingEntryWithoutPendingOrCommittedEntry) { 391 DiscardPendingItemWithoutPendingOrCommittedItem) {
407 [session_controller_ discardNonCommittedItems]; 392 [session_controller_ discardNonCommittedItems];
408 393
409 EXPECT_EQ(0U, [[session_controller_ entries] count]); 394 EXPECT_EQ(0U, [session_controller_ items].size());
410 EXPECT_EQ(nil, [session_controller_ currentEntry]); 395 EXPECT_EQ(nil, [session_controller_ currentItem]);
411 } 396 }
412 397
413 TEST_F(CRWSessionControllerTest, 398 TEST_F(CRWSessionControllerTest,
414 DiscardPendingEntryWithoutPendingEntryWithCommittedEntry) { 399 DiscardPendingItemWithoutPendingItemWithCommittedItem) {
415 // Setup committed entry 400 // Setup committed item
416 [session_controller_ addPendingItem:GURL("http://www.url.com") 401 [session_controller_ addPendingItem:GURL("http://www.url.com")
417 referrer:MakeReferrer("http://www.referer.com") 402 referrer:MakeReferrer("http://www.referer.com")
418 transition:ui::PAGE_TRANSITION_TYPED 403 transition:ui::PAGE_TRANSITION_TYPED
419 rendererInitiated:NO]; 404 rendererInitiated:NO];
420 [session_controller_ commitPendingItem]; 405 [session_controller_ commitPendingItem];
421 406
422 // Discard noncommitted entries when there is no such one 407 // Discard noncommitted items when there is no such one
423 [session_controller_ discardNonCommittedItems]; 408 [session_controller_ discardNonCommittedItems];
424 409
425 EXPECT_EQ(1U, [[session_controller_ entries] count]); 410 EXPECT_EQ(1U, [session_controller_ items].size());
426 EXPECT_EQ( 411 EXPECT_EQ([session_controller_ items].front().get(),
427 [[session_controller_ entries] objectAtIndex:0U], 412 [session_controller_ currentItem]);
428 [session_controller_ currentEntry]);
429 } 413 }
430 414
431 TEST_F(CRWSessionControllerTest, updatePendingItemWithoutPendingEntry) { 415 TEST_F(CRWSessionControllerTest, updatePendingItemWithoutPendingItem) {
432 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; 416 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")];
433 [session_controller_ commitPendingItem]; 417 [session_controller_ commitPendingItem];
434 418
435 EXPECT_EQ(0U, [[session_controller_ entries] count]); 419 EXPECT_EQ(0U, [session_controller_ items].size());
436 EXPECT_EQ(nil, [session_controller_ currentEntry]); 420 EXPECT_EQ(nil, [session_controller_ currentItem]);
437 } 421 }
438 422
439 TEST_F(CRWSessionControllerTest, updatePendingItemWithPendingEntry) { 423 TEST_F(CRWSessionControllerTest, updatePendingItemWithPendingItem) {
440 [session_controller_ addPendingItem:GURL("http://www.url.com") 424 [session_controller_ addPendingItem:GURL("http://www.url.com")
441 referrer:MakeReferrer("http://www.referer.com") 425 referrer:MakeReferrer("http://www.referer.com")
442 transition:ui::PAGE_TRANSITION_TYPED 426 transition:ui::PAGE_TRANSITION_TYPED
443 rendererInitiated:NO]; 427 rendererInitiated:NO];
444 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; 428 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")];
445 429
446 EXPECT_EQ( 430 EXPECT_EQ(
447 GURL("http://www.another.url.com/"), 431 GURL("http://www.another.url.com/"),
448 [session_controller_ currentURL]); 432 [session_controller_ currentURL]);
449 } 433 }
450 434
451 TEST_F(CRWSessionControllerTest, 435 TEST_F(CRWSessionControllerTest,
452 updatePendingItemWithPendingEntryAlreadyCommited) { 436 updatePendingItemWithPendingItemAlreadyCommited) {
453 [session_controller_ addPendingItem:GURL("http://www.url.com") 437 [session_controller_ addPendingItem:GURL("http://www.url.com")
454 referrer:MakeReferrer("http://www.referer.com") 438 referrer:MakeReferrer("http://www.referer.com")
455 transition:ui::PAGE_TRANSITION_TYPED 439 transition:ui::PAGE_TRANSITION_TYPED
456 rendererInitiated:NO]; 440 rendererInitiated:NO];
457 [session_controller_ commitPendingItem]; 441 [session_controller_ commitPendingItem];
458 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; 442 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")];
459 [session_controller_ commitPendingItem]; 443 [session_controller_ commitPendingItem];
460 444
461 EXPECT_EQ(1U, [[session_controller_ entries] count]); 445 EXPECT_EQ(1U, [session_controller_ items].size());
462 EXPECT_EQ( 446 EXPECT_EQ(GURL("http://www.url.com/"),
463 GURL("http://www.url.com/"), 447 [session_controller_ URLForNavigationItemAtIndex:0U]);
464 [session_controller_ URLForSessionAtIndex:0U]); 448 EXPECT_EQ([session_controller_ items].front().get(),
465 EXPECT_EQ( 449 [session_controller_ currentItem]);
466 [[session_controller_ entries] objectAtIndex:0U],
467 [session_controller_ currentEntry]);
468 } 450 }
469 451
470 // Tests inserting session controller state. 452 // Tests inserting session controller state.
471 TEST_F(CRWSessionControllerTest, InsertState) { 453 TEST_F(CRWSessionControllerTest, InsertState) {
472 // Add 1 committed and 1 pending entry to target controller. 454 // Add 1 committed and 1 pending item to target controller.
473 [session_controller_ addPendingItem:GURL("http://www.url.com/2") 455 [session_controller_ addPendingItem:GURL("http://www.url.com/2")
474 referrer:web::Referrer() 456 referrer:web::Referrer()
475 transition:ui::PAGE_TRANSITION_TYPED 457 transition:ui::PAGE_TRANSITION_TYPED
476 rendererInitiated:NO]; 458 rendererInitiated:NO];
477 [session_controller_ commitPendingItem]; 459 [session_controller_ commitPendingItem];
478 [session_controller_ addPendingItem:GURL("http://www.url.com/3") 460 [session_controller_ addPendingItem:GURL("http://www.url.com/3")
479 referrer:web::Referrer() 461 referrer:web::Referrer()
480 transition:ui::PAGE_TRANSITION_TYPED 462 transition:ui::PAGE_TRANSITION_TYPED
481 rendererInitiated:NO]; 463 rendererInitiated:NO];
482 464
483 // Create source session controller with 1 committed entry. 465 // Create source session controller with 1 committed item.
484 base::scoped_nsobject<CRWSessionController> other_session_controller( 466 base::scoped_nsobject<CRWSessionController> other_session_controller(
485 [[CRWSessionController alloc] initWithWindowName:nil 467 [[CRWSessionController alloc] initWithWindowName:nil
486 openerId:nil 468 openerId:nil
487 openedByDOM:NO 469 openedByDOM:NO
488 openerNavigationIndex:0 470 openerNavigationIndex:0
489 browserState:&browser_state_]); 471 browserState:&browser_state_]);
490 [other_session_controller setWindowName:@"test-window"]; 472 [other_session_controller setWindowName:@"test-window"];
491 [other_session_controller addPendingItem:GURL("http://www.url.com/0") 473 [other_session_controller addPendingItem:GURL("http://www.url.com/0")
492 referrer:web::Referrer() 474 referrer:web::Referrer()
493 transition:ui::PAGE_TRANSITION_TYPED 475 transition:ui::PAGE_TRANSITION_TYPED
494 rendererInitiated:NO]; 476 rendererInitiated:NO];
495 [other_session_controller commitPendingItem]; 477 [other_session_controller commitPendingItem];
496 [other_session_controller addPendingItem:GURL("http://www.url.com/1") 478 [other_session_controller addPendingItem:GURL("http://www.url.com/1")
497 referrer:web::Referrer() 479 referrer:web::Referrer()
498 transition:ui::PAGE_TRANSITION_TYPED 480 transition:ui::PAGE_TRANSITION_TYPED
499 rendererInitiated:NO]; 481 rendererInitiated:NO];
500 482
501 // Insert and verify the state of target session controller. 483 // Insert and verify the state of target session controller.
502 [session_controller_ 484 [session_controller_
503 insertStateFromSessionController:other_session_controller.get()]; 485 insertStateFromSessionController:other_session_controller.get()];
504 486
505 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]); 487 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]);
506 EXPECT_EQ(2U, [[session_controller_ entries] count]); 488 EXPECT_EQ(2U, [session_controller_ items].size());
507 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); 489 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
508 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 490 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
509 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 491 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
510 492
511 EXPECT_EQ(GURL("http://www.url.com/0"), 493 EXPECT_EQ(GURL("http://www.url.com/0"),
512 [session_controller_ URLForSessionAtIndex:0]); 494 [session_controller_ URLForNavigationItemAtIndex:0]);
513 EXPECT_EQ(GURL("http://www.url.com/2"), 495 EXPECT_EQ(GURL("http://www.url.com/2"),
514 [session_controller_ URLForSessionAtIndex:1]); 496 [session_controller_ URLForNavigationItemAtIndex:1]);
515 EXPECT_EQ(GURL("http://www.url.com/3"), 497 EXPECT_EQ(GURL("http://www.url.com/3"),
516 [[session_controller_ pendingEntry] navigationItem]->GetURL()); 498 [session_controller_ pendingItem]->GetURL());
517 } 499 }
518 500
519 // Tests inserting session controller state from empty session controller. 501 // Tests inserting session controller state from empty session controller.
520 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { 502 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) {
521 // Add 2 committed entries to target controller. 503 // Add 2 committed items to target controller.
522 [session_controller_ addPendingItem:GURL("http://www.url.com/0") 504 [session_controller_ addPendingItem:GURL("http://www.url.com/0")
523 referrer:web::Referrer() 505 referrer:web::Referrer()
524 transition:ui::PAGE_TRANSITION_TYPED 506 transition:ui::PAGE_TRANSITION_TYPED
525 rendererInitiated:NO]; 507 rendererInitiated:NO];
526 [session_controller_ commitPendingItem]; 508 [session_controller_ commitPendingItem];
527 [session_controller_ addPendingItem:GURL("http://www.url.com/1") 509 [session_controller_ addPendingItem:GURL("http://www.url.com/1")
528 referrer:web::Referrer() 510 referrer:web::Referrer()
529 transition:ui::PAGE_TRANSITION_TYPED 511 transition:ui::PAGE_TRANSITION_TYPED
530 rendererInitiated:NO]; 512 rendererInitiated:NO];
531 [session_controller_ commitPendingItem]; 513 [session_controller_ commitPendingItem];
532 514
533 // Create empty source session controller. 515 // Create empty source session controller.
534 base::scoped_nsobject<CRWSessionController> other_session_controller( 516 base::scoped_nsobject<CRWSessionController> other_session_controller(
535 [[CRWSessionController alloc] initWithWindowName:nil 517 [[CRWSessionController alloc] initWithWindowName:nil
536 openerId:nil 518 openerId:nil
537 openedByDOM:NO 519 openedByDOM:NO
538 openerNavigationIndex:0 520 openerNavigationIndex:0
539 browserState:&browser_state_]); 521 browserState:&browser_state_]);
540 [other_session_controller setWindowName:@"test-window"]; 522 [other_session_controller setWindowName:@"test-window"];
541 523
542 // Insert and verify the state of target session controller. 524 // Insert and verify the state of target session controller.
543 [session_controller_ 525 [session_controller_
544 insertStateFromSessionController:other_session_controller.get()]; 526 insertStateFromSessionController:other_session_controller.get()];
545 527
546 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]); 528 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]);
547 EXPECT_EQ(2U, [[session_controller_ entries] count]); 529 EXPECT_EQ(2U, [session_controller_ items].size());
548 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); 530 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
549 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]); 531 EXPECT_EQ(0, [session_controller_ previousNavigationIndex]);
550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 532 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
551 EXPECT_FALSE([session_controller_ pendingEntry]); 533 EXPECT_FALSE([session_controller_ pendingItem]);
552 EXPECT_EQ(GURL("http://www.url.com/0"), 534 EXPECT_EQ(GURL("http://www.url.com/0"),
553 [session_controller_ URLForSessionAtIndex:0]); 535 [session_controller_ URLForNavigationItemAtIndex:0]);
554 EXPECT_EQ(GURL("http://www.url.com/1"), 536 EXPECT_EQ(GURL("http://www.url.com/1"),
555 [session_controller_ URLForSessionAtIndex:1]); 537 [session_controller_ URLForNavigationItemAtIndex:1]);
556 } 538 }
557 539
558 // Tests inserting session controller state to empty session controller. 540 // Tests inserting session controller state to empty session controller.
559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { 541 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) {
560 // Create source session controller with 2 committed entries and one 542 // Create source session controller with 2 committed items and one
561 // pending entry. 543 // pending item.
562 base::scoped_nsobject<CRWSessionController> other_session_controller( 544 base::scoped_nsobject<CRWSessionController> other_session_controller(
563 [[CRWSessionController alloc] initWithWindowName:nil 545 [[CRWSessionController alloc] initWithWindowName:nil
564 openerId:nil 546 openerId:nil
565 openedByDOM:NO 547 openedByDOM:NO
566 openerNavigationIndex:0 548 openerNavigationIndex:0
567 browserState:&browser_state_]); 549 browserState:&browser_state_]);
568 [other_session_controller setWindowName:@"test-window"]; 550 [other_session_controller setWindowName:@"test-window"];
569 [other_session_controller addPendingItem:GURL("http://www.url.com/0") 551 [other_session_controller addPendingItem:GURL("http://www.url.com/0")
570 referrer:web::Referrer() 552 referrer:web::Referrer()
571 transition:ui::PAGE_TRANSITION_TYPED 553 transition:ui::PAGE_TRANSITION_TYPED
572 rendererInitiated:NO]; 554 rendererInitiated:NO];
573 [other_session_controller commitPendingItem]; 555 [other_session_controller commitPendingItem];
574 [other_session_controller addPendingItem:GURL("http://www.url.com/1") 556 [other_session_controller addPendingItem:GURL("http://www.url.com/1")
575 referrer:web::Referrer() 557 referrer:web::Referrer()
576 transition:ui::PAGE_TRANSITION_TYPED 558 transition:ui::PAGE_TRANSITION_TYPED
577 rendererInitiated:NO]; 559 rendererInitiated:NO];
578 [other_session_controller commitPendingItem]; 560 [other_session_controller commitPendingItem];
579 [other_session_controller addPendingItem:GURL("http://www.url.com/2") 561 [other_session_controller addPendingItem:GURL("http://www.url.com/2")
580 referrer:web::Referrer() 562 referrer:web::Referrer()
581 transition:ui::PAGE_TRANSITION_TYPED 563 transition:ui::PAGE_TRANSITION_TYPED
582 rendererInitiated:NO]; 564 rendererInitiated:NO];
583 565
584 // Insert and verify the state of target session controller. 566 // Insert and verify the state of target session controller.
585 [session_controller_ 567 [session_controller_
586 insertStateFromSessionController:other_session_controller.get()]; 568 insertStateFromSessionController:other_session_controller.get()];
587 569
588 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]); 570 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]);
589 EXPECT_EQ(2U, [[session_controller_ entries] count]); 571 EXPECT_EQ(2U, [session_controller_ items].size());
590 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]); 572 EXPECT_EQ(1, [session_controller_ currentNavigationIndex]);
591 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 573 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
592 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 574 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
593 EXPECT_FALSE([session_controller_ pendingEntry]); 575 EXPECT_FALSE([session_controller_ pendingItem]);
594 EXPECT_EQ(GURL("http://www.url.com/0"), 576 EXPECT_EQ(GURL("http://www.url.com/0"),
595 [session_controller_ URLForSessionAtIndex:0]); 577 [session_controller_ URLForNavigationItemAtIndex:0]);
596 EXPECT_EQ(GURL("http://www.url.com/1"), 578 EXPECT_EQ(GURL("http://www.url.com/1"),
597 [session_controller_ URLForSessionAtIndex:1]); 579 [session_controller_ URLForNavigationItemAtIndex:1]);
598 } 580 }
599 581
600 // Tests inserting session controller state. Verifies that pending entry index 582 // Tests inserting session controller state. Verifies that pending item index
601 // remains valid. 583 // remains valid.
602 TEST_F(CRWSessionControllerTest, 584 TEST_F(CRWSessionControllerTest,
603 InsertStateWithPendingEntryIndexInTargetController) { 585 InsertStateWithPendingItemIndexInTargetController) {
604 // Add 2 committed entries and make the first entry pending. 586 // Add 2 committed items and make the first item pending.
605 [session_controller_ addPendingItem:GURL("http://www.url.com/2") 587 [session_controller_ addPendingItem:GURL("http://www.url.com/2")
606 referrer:web::Referrer() 588 referrer:web::Referrer()
607 transition:ui::PAGE_TRANSITION_TYPED 589 transition:ui::PAGE_TRANSITION_TYPED
608 rendererInitiated:NO]; 590 rendererInitiated:NO];
609 [session_controller_ commitPendingItem]; 591 [session_controller_ commitPendingItem];
610 [session_controller_ addPendingItem:GURL("http://www.url.com/3") 592 [session_controller_ addPendingItem:GURL("http://www.url.com/3")
611 referrer:web::Referrer() 593 referrer:web::Referrer()
612 transition:ui::PAGE_TRANSITION_TYPED 594 transition:ui::PAGE_TRANSITION_TYPED
613 rendererInitiated:NO]; 595 rendererInitiated:NO];
614 [session_controller_ commitPendingItem]; 596 [session_controller_ commitPendingItem];
615 [session_controller_ setPendingItemIndex:0]; 597 [session_controller_ setPendingItemIndex:0];
616 598
617 // Create source session controller with 1 committed entry. 599 // Create source session controller with 1 committed item.
618 base::scoped_nsobject<CRWSessionController> other_session_controller( 600 base::scoped_nsobject<CRWSessionController> other_session_controller(
619 [[CRWSessionController alloc] initWithWindowName:nil 601 [[CRWSessionController alloc] initWithWindowName:nil
620 openerId:nil 602 openerId:nil
621 openedByDOM:NO 603 openedByDOM:NO
622 openerNavigationIndex:0 604 openerNavigationIndex:0
623 browserState:&browser_state_]); 605 browserState:&browser_state_]);
624 [other_session_controller setWindowName:@"test-window"]; 606 [other_session_controller setWindowName:@"test-window"];
625 [other_session_controller addPendingItem:GURL("http://www.url.com/0") 607 [other_session_controller addPendingItem:GURL("http://www.url.com/0")
626 referrer:web::Referrer() 608 referrer:web::Referrer()
627 transition:ui::PAGE_TRANSITION_TYPED 609 transition:ui::PAGE_TRANSITION_TYPED
628 rendererInitiated:NO]; 610 rendererInitiated:NO];
629 [other_session_controller commitPendingItem]; 611 [other_session_controller commitPendingItem];
630 612
631 // Insert and verify the state of target session controller. 613 // Insert and verify the state of target session controller.
632 [session_controller_ 614 [session_controller_
633 insertStateFromSessionController:other_session_controller.get()]; 615 insertStateFromSessionController:other_session_controller.get()];
634 616
635 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]); 617 EXPECT_NSEQ(@"test-window", [session_controller_ windowName]);
636 EXPECT_EQ(3U, [[session_controller_ entries] count]); 618 EXPECT_EQ(3U, [session_controller_ items].size());
637 EXPECT_EQ(2, [session_controller_ currentNavigationIndex]); 619 EXPECT_EQ(2, [session_controller_ currentNavigationIndex]);
638 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 620 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
639 EXPECT_EQ(1, [session_controller_ pendingItemIndex]); 621 EXPECT_EQ(1, [session_controller_ pendingItemIndex]);
640 EXPECT_EQ(GURL("http://www.url.com/0"), 622 EXPECT_EQ(GURL("http://www.url.com/0"),
641 [session_controller_ URLForSessionAtIndex:0]); 623 [session_controller_ URLForNavigationItemAtIndex:0]);
642 EXPECT_EQ(GURL("http://www.url.com/2"), 624 EXPECT_EQ(GURL("http://www.url.com/2"),
643 [session_controller_ URLForSessionAtIndex:1]); 625 [session_controller_ URLForNavigationItemAtIndex:1]);
644 EXPECT_EQ(GURL("http://www.url.com/2"), 626 EXPECT_EQ(GURL("http://www.url.com/2"),
645 [[session_controller_ pendingEntry] navigationItem]->GetURL()); 627 [session_controller_ pendingItem]->GetURL());
646 } 628 }
647 629
648 // Tests state of an empty session controller. 630 // Tests state of an empty session controller.
649 TEST_F(CRWSessionControllerTest, EmptyController) { 631 TEST_F(CRWSessionControllerTest, EmptyController) {
650 EXPECT_EQ(0U, [[session_controller_ entries] count]); 632 EXPECT_EQ(0U, [session_controller_ items].size());
651 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); 633 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]);
652 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); 634 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]);
653 EXPECT_FALSE([session_controller_ currentEntry]); 635 EXPECT_FALSE([session_controller_ currentItem]);
654 EXPECT_FALSE([session_controller_ pendingEntry]); 636 EXPECT_FALSE([session_controller_ pendingItem]);
655 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); 637 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]);
656 } 638 }
657 639
658 // Helper to create a NavigationItem. 640 // Helper to create a NavigationItem.
659 std::unique_ptr<web::NavigationItemImpl> CreateNavigationItem( 641 std::unique_ptr<web::NavigationItemImpl> CreateNavigationItem(
660 const std::string& url, 642 const std::string& url,
661 const std::string& referrer, 643 const std::string& referrer,
662 NSString* title) { 644 NSString* title) {
663 web::Referrer referrer_object(GURL(referrer), 645 web::Referrer referrer_object(GURL(referrer),
664 web::ReferrerPolicyDefault); 646 web::ReferrerPolicyDefault);
665 std::unique_ptr<web::NavigationItemImpl> navigation_item = 647 std::unique_ptr<web::NavigationItemImpl> navigation_item =
666 base::MakeUnique<web::NavigationItemImpl>(); 648 base::MakeUnique<web::NavigationItemImpl>();
667 navigation_item->SetURL(GURL(url)); 649 navigation_item->SetURL(GURL(url));
668 navigation_item->SetReferrer(referrer_object); 650 navigation_item->SetReferrer(referrer_object);
669 navigation_item->SetTitle(base::SysNSStringToUTF16(title)); 651 navigation_item->SetTitle(base::SysNSStringToUTF16(title));
670 navigation_item->SetTransitionType(ui::PAGE_TRANSITION_TYPED); 652 navigation_item->SetTransitionType(ui::PAGE_TRANSITION_TYPED);
671 653
672 return navigation_item; 654 return navigation_item;
673 } 655 }
674 656
675 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { 657 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) {
676 std::vector<std::unique_ptr<web::NavigationItem>> items; 658 std::vector<std::unique_ptr<web::NavigationItem>> items;
677 base::scoped_nsobject<CRWSessionController> controller( 659 base::scoped_nsobject<CRWSessionController> controller(
678 [[CRWSessionController alloc] initWithNavigationItems:std::move(items) 660 [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
679 currentIndex:0 661 currentIndex:0
680 browserState:&browser_state_]); 662 browserState:&browser_state_]);
681 EXPECT_EQ(controller.get().entries.count, 0U); 663 EXPECT_EQ(controller.get().items.size(), 0U);
682 EXPECT_EQ(controller.get().currentNavigationIndex, -1); 664 EXPECT_EQ(controller.get().currentNavigationIndex, -1);
683 EXPECT_EQ(controller.get().previousNavigationIndex, -1); 665 EXPECT_EQ(controller.get().previousNavigationIndex, -1);
684 EXPECT_FALSE(controller.get().currentEntry); 666 EXPECT_FALSE(controller.get().currentItem);
685 } 667 }
686 668
687 TEST_F(CRWSessionControllerTest, CreateWithNavList) { 669 TEST_F(CRWSessionControllerTest, CreateWithNavList) {
688 std::vector<std::unique_ptr<web::NavigationItem>> items; 670 std::vector<std::unique_ptr<web::NavigationItem>> items;
689 items.push_back(CreateNavigationItem("http://www.google.com", 671 items.push_back(CreateNavigationItem("http://www.google.com",
690 "http://www.referrer.com", @"Google")); 672 "http://www.referrer.com", @"Google"));
691 items.push_back(CreateNavigationItem("http://www.yahoo.com", 673 items.push_back(CreateNavigationItem("http://www.yahoo.com",
692 "http://www.google.com", @"Yahoo")); 674 "http://www.google.com", @"Yahoo"));
693 items.push_back(CreateNavigationItem("http://www.espn.com", 675 items.push_back(CreateNavigationItem("http://www.espn.com",
694 "http://www.nothing.com", @"ESPN")); 676 "http://www.nothing.com", @"ESPN"));
695 base::scoped_nsobject<CRWSessionController> controller( 677 base::scoped_nsobject<CRWSessionController> controller(
696 [[CRWSessionController alloc] initWithNavigationItems:std::move(items) 678 [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
697 currentIndex:1 679 currentIndex:1
698 browserState:&browser_state_]); 680 browserState:&browser_state_]);
699 681
700 EXPECT_EQ(controller.get().entries.count, 3U); 682 EXPECT_EQ(controller.get().items.size(), 3U);
701 EXPECT_EQ(controller.get().currentNavigationIndex, 1); 683 EXPECT_EQ(controller.get().currentNavigationIndex, 1);
702 EXPECT_EQ(controller.get().previousNavigationIndex, -1); 684 EXPECT_EQ(controller.get().previousNavigationIndex, -1);
703 // Sanity check the current entry, the CRWSessionEntry unit test will ensure 685 // Sanity check the current item, the NavigationItem unit test will ensure
704 // the entire object is created properly. 686 // the entire object is created properly.
705 CRWSessionEntry* current_entry = controller.get().currentEntry; 687 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com"));
706 EXPECT_EQ(current_entry.navigationItem->GetURL(),
707 GURL("http://www.yahoo.com"));
708 EXPECT_EQ([[controller openerId] length], 0UL); 688 EXPECT_EQ([[controller openerId] length], 0UL);
709 } 689 }
710 690
711 // Tests index of previous navigation entry. 691 // Tests index of previous navigation item.
712 TEST_F(CRWSessionControllerTest, PreviousNavigationEntry) { 692 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) {
713 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); 693 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1);
714 [session_controller_ addPendingItem:GURL("http://www.url.com") 694 [session_controller_ addPendingItem:GURL("http://www.url.com")
715 referrer:MakeReferrer("http://www.referer.com") 695 referrer:MakeReferrer("http://www.referer.com")
716 transition:ui::PAGE_TRANSITION_TYPED 696 transition:ui::PAGE_TRANSITION_TYPED
717 rendererInitiated:NO]; 697 rendererInitiated:NO];
718 [session_controller_ commitPendingItem]; 698 [session_controller_ commitPendingItem];
719 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); 699 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1);
720 [session_controller_ addPendingItem:GURL("http://www.url1.com") 700 [session_controller_ addPendingItem:GURL("http://www.url1.com")
721 referrer:MakeReferrer("http://www.referer.com") 701 referrer:MakeReferrer("http://www.referer.com")
722 transition:ui::PAGE_TRANSITION_TYPED 702 transition:ui::PAGE_TRANSITION_TYPED
(...skipping 14 matching lines...) Expand all
737 [session_controller_ goToItemAtIndex:0]; 717 [session_controller_ goToItemAtIndex:0];
738 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1); 718 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1);
739 719
740 [session_controller_ goToItemAtIndex:1]; 720 [session_controller_ goToItemAtIndex:1];
741 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 0); 721 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 0);
742 722
743 [session_controller_ goToItemAtIndex:2]; 723 [session_controller_ goToItemAtIndex:2];
744 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1); 724 EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1);
745 } 725 }
746 726
747 TEST_F(CRWSessionControllerTest, PushNewEntry) { 727 TEST_F(CRWSessionControllerTest, PushNewItem) {
748 std::vector<std::unique_ptr<web::NavigationItem>> items; 728 std::vector<std::unique_ptr<web::NavigationItem>> items;
749 items.push_back(CreateNavigationItem("http://www.firstpage.com", 729 items.push_back(CreateNavigationItem("http://www.firstpage.com",
750 "http://www.starturl.com", @"First")); 730 "http://www.starturl.com", @"First"));
751 items.push_back(CreateNavigationItem("http://www.secondpage.com", 731 items.push_back(CreateNavigationItem("http://www.secondpage.com",
752 "http://www.firstpage.com", @"Second")); 732 "http://www.firstpage.com", @"Second"));
753 items.push_back(CreateNavigationItem("http://www.thirdpage.com", 733 items.push_back(CreateNavigationItem("http://www.thirdpage.com",
754 "http://www.secondpage.com", @"Third")); 734 "http://www.secondpage.com", @"Third"));
755 base::scoped_nsobject<CRWSessionController> controller( 735 base::scoped_nsobject<CRWSessionController> controller(
756 [[CRWSessionController alloc] initWithNavigationItems:std::move(items) 736 [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
757 currentIndex:0 737 currentIndex:0
758 browserState:&browser_state_]); 738 browserState:&browser_state_]);
759 739
760 GURL pushPageGurl1("http://www.firstpage.com/#push1"); 740 GURL pushPageGurl1("http://www.firstpage.com/#push1");
761 NSString* stateObject1 = @"{'foo': 1}"; 741 NSString* stateObject1 = @"{'foo': 1}";
762 [controller pushNewItemWithURL:pushPageGurl1 742 [controller pushNewItemWithURL:pushPageGurl1
763 stateObject:stateObject1 743 stateObject:stateObject1
764 transition:ui::PAGE_TRANSITION_LINK]; 744 transition:ui::PAGE_TRANSITION_LINK];
765 CRWSessionEntry* pushedEntry = [controller currentEntry]; 745 web::NavigationItemImpl* pushedItem = [controller currentItem];
766 web::NavigationItemImpl* pushedItem = pushedEntry.navigationItemImpl;
767 NSUInteger expectedCount = 2; 746 NSUInteger expectedCount = 2;
768 EXPECT_EQ(expectedCount, controller.get().entries.count); 747 EXPECT_EQ(expectedCount, [controller items].size());
769 EXPECT_EQ(pushPageGurl1, pushedEntry.navigationItem->GetURL()); 748 EXPECT_EQ(pushPageGurl1, pushedItem->GetURL());
770 EXPECT_TRUE(pushedItem->IsCreatedFromPushState()); 749 EXPECT_TRUE(pushedItem->IsCreatedFromPushState());
771 EXPECT_NSEQ(stateObject1, pushedItem->GetSerializedStateObject()); 750 EXPECT_NSEQ(stateObject1, pushedItem->GetSerializedStateObject());
772 EXPECT_EQ(GURL("http://www.firstpage.com/"), 751 EXPECT_EQ(GURL("http://www.firstpage.com/"), pushedItem->GetReferrer().url);
773 pushedEntry.navigationItem->GetReferrer().url);
774 752
775 // Add another new entry and check size and fields again. 753 // Add another new item and check size and fields again.
776 GURL pushPageGurl2("http://www.firstpage.com/push2"); 754 GURL pushPageGurl2("http://www.firstpage.com/push2");
777 [controller pushNewItemWithURL:pushPageGurl2 755 [controller pushNewItemWithURL:pushPageGurl2
778 stateObject:nil 756 stateObject:nil
779 transition:ui::PAGE_TRANSITION_LINK]; 757 transition:ui::PAGE_TRANSITION_LINK];
780 pushedEntry = [controller currentEntry]; 758 pushedItem = [controller currentItem];
781 pushedItem = pushedEntry.navigationItemImpl;
782 expectedCount = 3; 759 expectedCount = 3;
783 EXPECT_EQ(expectedCount, controller.get().entries.count); 760 EXPECT_EQ(expectedCount, [controller items].size());
784 EXPECT_EQ(pushPageGurl2, pushedEntry.navigationItem->GetURL()); 761 EXPECT_EQ(pushPageGurl2, pushedItem->GetURL());
785 EXPECT_TRUE(pushedItem->IsCreatedFromPushState()); 762 EXPECT_TRUE(pushedItem->IsCreatedFromPushState());
786 EXPECT_EQ(nil, pushedItem->GetSerializedStateObject()); 763 EXPECT_EQ(nil, pushedItem->GetSerializedStateObject());
787 EXPECT_EQ(pushPageGurl1, pushedEntry.navigationItem->GetReferrer().url); 764 EXPECT_EQ(pushPageGurl1, pushedItem->GetReferrer().url);
788 } 765 }
789 766
790 TEST_F(CRWSessionControllerTest, IsSameDocumentNavigation) { 767 TEST_F(CRWSessionControllerTest, IsSameDocumentNavigation) {
791 std::vector<std::unique_ptr<web::NavigationItem>> items; 768 std::vector<std::unique_ptr<web::NavigationItem>> items;
792 items.push_back( 769 items.push_back(
793 CreateNavigationItem("http://foo.com", "http://google.com", @"First")); 770 CreateNavigationItem("http://foo.com", "http://google.com", @"First"));
794 // Push state navigation. 771 // Push state navigation.
795 items.push_back( 772 items.push_back(
796 CreateNavigationItem("http://foo.com#bar", "http://foo.com", @"Second")); 773 CreateNavigationItem("http://foo.com#bar", "http://foo.com", @"Second"));
797 items.push_back(CreateNavigationItem("http://google.com", 774 items.push_back(CreateNavigationItem("http://google.com",
798 "http://foo.com#bar", @"Third")); 775 "http://foo.com#bar", @"Third"));
799 items.push_back( 776 items.push_back(
800 CreateNavigationItem("http://foo.com", "http://google.com", @"Fourth")); 777 CreateNavigationItem("http://foo.com", "http://google.com", @"Fourth"));
801 // Push state navigation. 778 // Push state navigation.
802 items.push_back( 779 items.push_back(
803 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); 780 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth"));
804 // Push state navigation. 781 // Push state navigation.
805 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", 782 items.push_back(CreateNavigationItem("http://foo.com/bar#bar",
806 "http://foo.com/bar", @"Sixth")); 783 "http://foo.com/bar", @"Sixth"));
807 base::scoped_nsobject<CRWSessionController> controller( 784 base::scoped_nsobject<CRWSessionController> controller(
808 [[CRWSessionController alloc] initWithNavigationItems:std::move(items) 785 [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
809 currentIndex:0 786 currentIndex:0
810 browserState:&browser_state_]); 787 browserState:&browser_state_]);
811 web::NavigationItemImpl* item0 = 788 web::NavigationItemImpl* item0 = [controller items][0].get();
812 static_cast<web::NavigationItemImpl*>([controller items][0]); 789 web::NavigationItemImpl* item1 = [controller items][1].get();
813 web::NavigationItemImpl* item1 = 790 web::NavigationItemImpl* item2 = [controller items][2].get();
814 static_cast<web::NavigationItemImpl*>([controller items][1]); 791 web::NavigationItemImpl* item3 = [controller items][3].get();
815 web::NavigationItemImpl* item2 = 792 web::NavigationItemImpl* item4 = [controller items][4].get();
816 static_cast<web::NavigationItemImpl*>([controller items][2]); 793 web::NavigationItemImpl* item5 = [controller items][5].get();
817 web::NavigationItemImpl* item3 =
818 static_cast<web::NavigationItemImpl*>([controller items][3]);
819 web::NavigationItemImpl* item4 =
820 static_cast<web::NavigationItemImpl*>([controller items][4]);
821 web::NavigationItemImpl* item5 =
822 static_cast<web::NavigationItemImpl*>([controller items][5]);
823 item1->SetIsCreatedFromPushState(true); 794 item1->SetIsCreatedFromPushState(true);
824 item4->SetIsCreatedFromHashChange(true); 795 item4->SetIsCreatedFromHashChange(true);
825 item5->SetIsCreatedFromPushState(true); 796 item5->SetIsCreatedFromPushState(true);
826 797
827 EXPECT_FALSE( 798 EXPECT_FALSE(
828 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item0]); 799 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item0]);
829 EXPECT_TRUE( 800 EXPECT_TRUE(
830 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item1]); 801 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item1]);
831 EXPECT_TRUE( 802 EXPECT_TRUE(
832 [controller isSameDocumentNavigationBetweenItem:item5 andItem:item3]); 803 [controller isSameDocumentNavigationBetweenItem:item5 andItem:item3]);
833 EXPECT_TRUE( 804 EXPECT_TRUE(
834 [controller isSameDocumentNavigationBetweenItem:item4 andItem:item3]); 805 [controller isSameDocumentNavigationBetweenItem:item4 andItem:item3]);
835 EXPECT_FALSE( 806 EXPECT_FALSE(
836 [controller isSameDocumentNavigationBetweenItem:item1 andItem:item2]); 807 [controller isSameDocumentNavigationBetweenItem:item1 andItem:item2]);
837 EXPECT_FALSE( 808 EXPECT_FALSE(
838 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item5]); 809 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item5]);
839 EXPECT_FALSE( 810 EXPECT_FALSE(
840 [controller isSameDocumentNavigationBetweenItem:item2 andItem:item4]); 811 [controller isSameDocumentNavigationBetweenItem:item2 andItem:item4]);
841 } 812 }
842 813
843 TEST_F(CRWSessionControllerTest, UpdateCurrentEntry) { 814 TEST_F(CRWSessionControllerTest, UpdateCurrentItem) {
844 std::vector<std::unique_ptr<web::NavigationItem>> items; 815 std::vector<std::unique_ptr<web::NavigationItem>> items;
845 items.push_back(CreateNavigationItem("http://www.firstpage.com", 816 items.push_back(CreateNavigationItem("http://www.firstpage.com",
846 "http://www.starturl.com", @"First")); 817 "http://www.starturl.com", @"First"));
847 items.push_back(CreateNavigationItem("http://www.secondpage.com", 818 items.push_back(CreateNavigationItem("http://www.secondpage.com",
848 "http://www.firstpage.com", @"Second")); 819 "http://www.firstpage.com", @"Second"));
849 items.push_back(CreateNavigationItem("http://www.thirdpage.com", 820 items.push_back(CreateNavigationItem("http://www.thirdpage.com",
850 "http://www.secondpage.com", @"Third")); 821 "http://www.secondpage.com", @"Third"));
851 base::scoped_nsobject<CRWSessionController> controller( 822 base::scoped_nsobject<CRWSessionController> controller(
852 [[CRWSessionController alloc] initWithNavigationItems:std::move(items) 823 [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
853 currentIndex:0 824 currentIndex:0
854 browserState:&browser_state_]); 825 browserState:&browser_state_]);
855 826
856 GURL replacePageGurl1("http://www.firstpage.com/#replace1"); 827 GURL replacePageGurl1("http://www.firstpage.com/#replace1");
857 NSString* stateObject1 = @"{'foo': 1}"; 828 NSString* stateObject1 = @"{'foo': 1}";
858 829
859 // Replace current entry and check the size of history and fields of the 830 // Replace current item and check the size of history and fields of the
860 // modified entry. 831 // modified item.
861 [controller updateCurrentItemWithURL:replacePageGurl1 832 [controller updateCurrentItemWithURL:replacePageGurl1
862 stateObject:stateObject1]; 833 stateObject:stateObject1];
863 CRWSessionEntry* replacedEntry = [controller currentEntry]; 834 web::NavigationItemImpl* replacedItem = [controller currentItem];
864 web::NavigationItemImpl* replacedItem = replacedEntry.navigationItemImpl;
865 NSUInteger expectedCount = 3; 835 NSUInteger expectedCount = 3;
866 EXPECT_EQ(expectedCount, controller.get().entries.count); 836 EXPECT_EQ(expectedCount, [controller items].size());
867 EXPECT_EQ(replacePageGurl1, replacedEntry.navigationItem->GetURL()); 837 EXPECT_EQ(replacePageGurl1, replacedItem->GetURL());
868 EXPECT_FALSE(replacedItem->IsCreatedFromPushState()); 838 EXPECT_FALSE(replacedItem->IsCreatedFromPushState());
869 EXPECT_NSEQ(stateObject1, replacedItem->GetSerializedStateObject()); 839 EXPECT_NSEQ(stateObject1, replacedItem->GetSerializedStateObject());
870 EXPECT_EQ(GURL("http://www.starturl.com/"), 840 EXPECT_EQ(GURL("http://www.starturl.com/"), replacedItem->GetReferrer().url);
871 replacedEntry.navigationItem->GetReferrer().url);
872 841
873 // Replace current entry and check size and fields again. 842 // Replace current item and check size and fields again.
874 GURL replacePageGurl2("http://www.firstpage.com/#replace2"); 843 GURL replacePageGurl2("http://www.firstpage.com/#replace2");
875 [controller.get() updateCurrentItemWithURL:replacePageGurl2 stateObject:nil]; 844 [controller.get() updateCurrentItemWithURL:replacePageGurl2 stateObject:nil];
876 replacedEntry = [controller currentEntry]; 845 replacedItem = [controller currentItem];
877 replacedItem = replacedEntry.navigationItemImpl; 846 EXPECT_EQ(expectedCount, [controller items].size());
878 EXPECT_EQ(expectedCount, controller.get().entries.count); 847 EXPECT_EQ(replacePageGurl2, replacedItem->GetURL());
879 EXPECT_EQ(replacePageGurl2, replacedEntry.navigationItem->GetURL());
880 EXPECT_FALSE(replacedItem->IsCreatedFromPushState()); 848 EXPECT_FALSE(replacedItem->IsCreatedFromPushState());
881 EXPECT_NSEQ(nil, replacedItem->GetSerializedStateObject()); 849 EXPECT_NSEQ(nil, replacedItem->GetSerializedStateObject());
882 EXPECT_EQ(GURL("http://www.starturl.com/"), 850 EXPECT_EQ(GURL("http://www.starturl.com/"), replacedItem->GetReferrer().url);
883 replacedEntry.navigationItem->GetReferrer().url);
884 } 851 }
885 852
886 TEST_F(CRWSessionControllerTest, TestBackwardForwardEntries) { 853 TEST_F(CRWSessionControllerTest, TestBackwardForwardItems) {
887 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 854 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
888 referrer:MakeReferrer("http://www.example.com/a") 855 referrer:MakeReferrer("http://www.example.com/a")
889 transition:ui::PAGE_TRANSITION_LINK 856 transition:ui::PAGE_TRANSITION_LINK
890 rendererInitiated:NO]; 857 rendererInitiated:NO];
891 [session_controller_ commitPendingItem]; 858 [session_controller_ commitPendingItem];
892 [session_controller_ addPendingItem:GURL("http://www.example.com/1") 859 [session_controller_ addPendingItem:GURL("http://www.example.com/1")
893 referrer:MakeReferrer("http://www.example.com/b") 860 referrer:MakeReferrer("http://www.example.com/b")
894 transition:ui::PAGE_TRANSITION_LINK 861 transition:ui::PAGE_TRANSITION_LINK
895 rendererInitiated:NO]; 862 rendererInitiated:NO];
896 [session_controller_ commitPendingItem]; 863 [session_controller_ commitPendingItem];
897 [session_controller_ addPendingItem:GURL("http://www.example.com/redirect") 864 [session_controller_ addPendingItem:GURL("http://www.example.com/redirect")
898 referrer:MakeReferrer("http://www.example.com/r") 865 referrer:MakeReferrer("http://www.example.com/r")
899 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK 866 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK
900 rendererInitiated:NO]; 867 rendererInitiated:NO];
901 [session_controller_ commitPendingItem]; 868 [session_controller_ commitPendingItem];
902 [session_controller_ addPendingItem:GURL("http://www.example.com/2") 869 [session_controller_ addPendingItem:GURL("http://www.example.com/2")
903 referrer:MakeReferrer("http://www.example.com/c") 870 referrer:MakeReferrer("http://www.example.com/c")
904 transition:ui::PAGE_TRANSITION_LINK 871 transition:ui::PAGE_TRANSITION_LINK
905 rendererInitiated:NO]; 872 rendererInitiated:NO];
906 [session_controller_ commitPendingItem]; 873 [session_controller_ commitPendingItem];
907 874
908 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); 875 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex);
909 NSArray* backEntries = [session_controller_ backwardEntries]; 876 web::NavigationItemList backItems = [session_controller_ backwardItems];
910 EXPECT_EQ(2U, [backEntries count]); 877 EXPECT_EQ(2U, backItems.size());
911 EXPECT_EQ(0U, [[session_controller_ forwardEntries] count]); 878 EXPECT_EQ(0U, [session_controller_ forwardItems].size());
912 EXPECT_EQ("http://www.example.com/redirect", 879 EXPECT_EQ("http://www.example.com/redirect",
913 [[backEntries objectAtIndex:0] navigationItem]->GetURL().spec()); 880 backItems.front()->GetURL().spec());
914 881
915 [session_controller_ goToItemAtIndex:1]; 882 [session_controller_ goToItemAtIndex:1];
916 EXPECT_EQ(1U, [[session_controller_ backwardEntries] count]); 883 EXPECT_EQ(1U, [session_controller_ backwardItems].size());
917 EXPECT_EQ(1U, [[session_controller_ forwardEntries] count]); 884 EXPECT_EQ(1U, [session_controller_ forwardItems].size());
918 885
919 [session_controller_ goToItemAtIndex:0]; 886 [session_controller_ goToItemAtIndex:0];
920 NSArray* forwardEntries = [session_controller_ forwardEntries]; 887 web::NavigationItemList forwardItems = [session_controller_ forwardItems];
921 EXPECT_EQ(0U, [[session_controller_ backwardEntries] count]); 888 EXPECT_EQ(0U, [session_controller_ backwardItems].size());
922 EXPECT_EQ(2U, [forwardEntries count]); 889 EXPECT_EQ(2U, forwardItems.size());
923 EXPECT_EQ("http://www.example.com/2", 890 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec());
924 [[forwardEntries objectAtIndex:1] navigationItem]->GetURL().spec());
925 } 891 }
926 892
927 // Tests going to entries with existing and non-existing indices. 893 // Tests going to items with existing and non-existing indices.
928 TEST_F(CRWSessionControllerTest, GoToEntryAtIndex) { 894 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) {
929 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 895 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
930 referrer:MakeReferrer("http://www.example.com/a") 896 referrer:MakeReferrer("http://www.example.com/a")
931 transition:ui::PAGE_TRANSITION_LINK 897 transition:ui::PAGE_TRANSITION_LINK
932 rendererInitiated:NO]; 898 rendererInitiated:NO];
933 [session_controller_ commitPendingItem]; 899 [session_controller_ commitPendingItem];
934 [session_controller_ addPendingItem:GURL("http://www.example.com/1") 900 [session_controller_ addPendingItem:GURL("http://www.example.com/1")
935 referrer:MakeReferrer("http://www.example.com/b") 901 referrer:MakeReferrer("http://www.example.com/b")
936 transition:ui::PAGE_TRANSITION_LINK 902 transition:ui::PAGE_TRANSITION_LINK
937 rendererInitiated:NO]; 903 rendererInitiated:NO];
938 [session_controller_ commitPendingItem]; 904 [session_controller_ commitPendingItem];
939 [session_controller_ addPendingItem:GURL("http://www.example.com/redirect") 905 [session_controller_ addPendingItem:GURL("http://www.example.com/redirect")
940 referrer:MakeReferrer("http://www.example.com/r") 906 referrer:MakeReferrer("http://www.example.com/r")
941 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK 907 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK
942 rendererInitiated:NO]; 908 rendererInitiated:NO];
943 [session_controller_ commitPendingItem]; 909 [session_controller_ commitPendingItem];
944 [session_controller_ addPendingItem:GURL("http://www.example.com/2") 910 [session_controller_ addPendingItem:GURL("http://www.example.com/2")
945 referrer:MakeReferrer("http://www.example.com/c") 911 referrer:MakeReferrer("http://www.example.com/c")
946 transition:ui::PAGE_TRANSITION_LINK 912 transition:ui::PAGE_TRANSITION_LINK
947 rendererInitiated:NO]; 913 rendererInitiated:NO];
948 [session_controller_ commitPendingItem]; 914 [session_controller_ commitPendingItem];
949 [session_controller_ addPendingItem:GURL("http://www.example.com/3") 915 [session_controller_ addPendingItem:GURL("http://www.example.com/3")
950 referrer:MakeReferrer("http://www.example.com/d") 916 referrer:MakeReferrer("http://www.example.com/d")
951 transition:ui::PAGE_TRANSITION_LINK 917 transition:ui::PAGE_TRANSITION_LINK
952 rendererInitiated:NO]; 918 rendererInitiated:NO];
953 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 919 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
954 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); 920 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex);
955 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); 921 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex);
956 EXPECT_TRUE(session_controller_.get().pendingEntry); 922 EXPECT_TRUE(session_controller_.get().pendingItem);
957 EXPECT_TRUE(session_controller_.get().transientEntry); 923 EXPECT_TRUE(session_controller_.get().transientItem);
958 924
959 // Going back should discard transient and pending entries. 925 // Going back should discard transient and pending items.
960 [session_controller_ goToItemAtIndex:1]; 926 [session_controller_ goToItemAtIndex:1];
961 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); 927 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex);
962 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex); 928 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex);
963 EXPECT_FALSE(session_controller_.get().pendingEntry); 929 EXPECT_FALSE(session_controller_.get().pendingItem);
964 EXPECT_FALSE(session_controller_.get().transientEntry); 930 EXPECT_FALSE(session_controller_.get().transientItem);
965 931
966 // Going forward should discard transient entry. 932 // Going forward should discard transient item.
967 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 933 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
968 EXPECT_TRUE(session_controller_.get().transientEntry); 934 EXPECT_TRUE(session_controller_.get().transientItem);
969 [session_controller_ goToItemAtIndex:2]; 935 [session_controller_ goToItemAtIndex:2];
970 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); 936 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex);
971 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); 937 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex);
972 EXPECT_FALSE(session_controller_.get().transientEntry); 938 EXPECT_FALSE(session_controller_.get().transientItem);
973 939
974 // Out of bounds navigations should be no-op. 940 // Out of bounds navigations should be no-op.
975 [session_controller_ goToItemAtIndex:-1]; 941 [session_controller_ goToItemAtIndex:-1];
976 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); 942 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex);
977 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); 943 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex);
978 [session_controller_ goToItemAtIndex:NSIntegerMax]; 944 [session_controller_ goToItemAtIndex:NSIntegerMax];
979 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); 945 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex);
980 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); 946 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex);
981 947
982 // Going to current index should not change the previous index. 948 // Going to current index should not change the previous index.
983 [session_controller_ goToItemAtIndex:2]; 949 [session_controller_ goToItemAtIndex:2];
984 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); 950 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex);
985 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); 951 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex);
986 } 952 }
987 953
988 // Tests that visible URL is the same as transient URL if there are no committed 954 // Tests that visible URL is the same as transient URL if there are no committed
989 // entries. 955 // items.
990 TEST_F(CRWSessionControllerTest, VisibleEntryWithSingleTransientEntry) { 956 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) {
991 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 957 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
992 web::NavigationItem* visible_item = 958 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
993 [[session_controller_ visibleEntry] navigationItem];
994 ASSERT_TRUE(visible_item); 959 ASSERT_TRUE(visible_item);
995 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); 960 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec());
996 } 961 }
997 962
998 // Tests that visible URL is the same as transient URL if there is a committed 963 // Tests that visible URL is the same as transient URL if there is a committed
999 // entry. 964 // item.
1000 TEST_F(CRWSessionControllerTest, VisibleEntryWithCommittedAndTransientEntries) { 965 TEST_F(CRWSessionControllerTest, VisibleItemWithCommittedAndTransientItems) {
1001 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 966 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1002 referrer:MakeReferrer("http://www.example.com/a") 967 referrer:MakeReferrer("http://www.example.com/a")
1003 transition:ui::PAGE_TRANSITION_LINK 968 transition:ui::PAGE_TRANSITION_LINK
1004 rendererInitiated:NO]; 969 rendererInitiated:NO];
1005 [session_controller_ commitPendingItem]; 970 [session_controller_ commitPendingItem];
1006 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; 971 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")];
1007 web::NavigationItem* visible_item = 972 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
1008 [[session_controller_ visibleEntry] navigationItem];
1009 ASSERT_TRUE(visible_item); 973 ASSERT_TRUE(visible_item);
1010 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); 974 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec());
1011 } 975 }
1012 976
1013 // Tests that visible URL is the same as pending URL if it was user-initiated. 977 // Tests that visible URL is the same as pending URL if it was user-initiated.
1014 TEST_F(CRWSessionControllerTest, 978 TEST_F(CRWSessionControllerTest,
1015 VisibleEntryWithSingleUserInitiatedPendingEntry) { 979 VisibleItemWithSingleUserInitiatedPendingItem) {
1016 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 980 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1017 referrer:MakeReferrer("http://www.example.com/a") 981 referrer:MakeReferrer("http://www.example.com/a")
1018 transition:ui::PAGE_TRANSITION_LINK 982 transition:ui::PAGE_TRANSITION_LINK
1019 rendererInitiated:NO]; 983 rendererInitiated:NO];
1020 web::NavigationItem* visible_item = 984 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
1021 [[session_controller_ visibleEntry] navigationItem];
1022 ASSERT_TRUE(visible_item); 985 ASSERT_TRUE(visible_item);
1023 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); 986 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec());
1024 } 987 }
1025 988
1026 // Tests that visible URL is the same as pending URL if it was user-initiated 989 // Tests that visible URL is the same as pending URL if it was user-initiated
1027 // and there is a committed entry. 990 // and there is a committed item.
1028 TEST_F(CRWSessionControllerTest, 991 TEST_F(CRWSessionControllerTest,
1029 VisibleEntryWithCommittedAndUserInitiatedPendingEntry) { 992 VisibleItemWithCommittedAndUserInitiatedPendingItem) {
1030 [session_controller_ addPendingItem:GURL("http://www.example.com") 993 [session_controller_ addPendingItem:GURL("http://www.example.com")
1031 referrer:MakeReferrer("http://www.example.com/a") 994 referrer:MakeReferrer("http://www.example.com/a")
1032 transition:ui::PAGE_TRANSITION_LINK 995 transition:ui::PAGE_TRANSITION_LINK
1033 rendererInitiated:NO]; 996 rendererInitiated:NO];
1034 [session_controller_ commitPendingItem]; 997 [session_controller_ commitPendingItem];
1035 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 998 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1036 referrer:MakeReferrer("http://www.example.com/b") 999 referrer:MakeReferrer("http://www.example.com/b")
1037 transition:ui::PAGE_TRANSITION_LINK 1000 transition:ui::PAGE_TRANSITION_LINK
1038 rendererInitiated:NO]; 1001 rendererInitiated:NO];
1039 web::NavigationItem* visible_item = 1002 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
1040 [[session_controller_ visibleEntry] navigationItem];
1041 ASSERT_TRUE(visible_item); 1003 ASSERT_TRUE(visible_item);
1042 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); 1004 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec());
1043 } 1005 }
1044 1006
1045 // Tests that visible URL is not the same as pending URL if it was 1007 // Tests that visible URL is not the same as pending URL if it was
1046 // renderer-initiated. 1008 // renderer-initiated.
1047 TEST_F(CRWSessionControllerTest, 1009 TEST_F(CRWSessionControllerTest,
1048 VisibleEntryWithSingleRendererInitiatedPendingEntry) { 1010 VisibleItemWithSingleRendererInitiatedPendingItem) {
1049 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 1011 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1050 referrer:MakeReferrer("http://www.example.com/a") 1012 referrer:MakeReferrer("http://www.example.com/a")
1051 transition:ui::PAGE_TRANSITION_LINK 1013 transition:ui::PAGE_TRANSITION_LINK
1052 rendererInitiated:YES]; 1014 rendererInitiated:YES];
1053 web::NavigationItem* visible_item = 1015 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
1054 [[session_controller_ visibleEntry] navigationItem];
1055 ASSERT_FALSE(visible_item); 1016 ASSERT_FALSE(visible_item);
1056 } 1017 }
1057 1018
1058 // Tests that visible URL is not the same as pending URL if it was 1019 // Tests that visible URL is not the same as pending URL if it was
1059 // renderer-initiated and there is a committed entry. 1020 // renderer-initiated and there is a committed item.
1060 TEST_F(CRWSessionControllerTest, 1021 TEST_F(CRWSessionControllerTest,
1061 VisibleEntryWithCommittedAndRendererInitiatedPendingEntry) { 1022 VisibleItemWithCommittedAndRendererInitiatedPendingItem) {
1062 [session_controller_ addPendingItem:GURL("http://www.example.com") 1023 [session_controller_ addPendingItem:GURL("http://www.example.com")
1063 referrer:MakeReferrer("http://www.example.com/a") 1024 referrer:MakeReferrer("http://www.example.com/a")
1064 transition:ui::PAGE_TRANSITION_LINK 1025 transition:ui::PAGE_TRANSITION_LINK
1065 rendererInitiated:YES]; 1026 rendererInitiated:YES];
1066 [session_controller_ commitPendingItem]; 1027 [session_controller_ commitPendingItem];
1067 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 1028 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1068 referrer:MakeReferrer("http://www.example.com/b") 1029 referrer:MakeReferrer("http://www.example.com/b")
1069 transition:ui::PAGE_TRANSITION_LINK 1030 transition:ui::PAGE_TRANSITION_LINK
1070 rendererInitiated:YES]; 1031 rendererInitiated:YES];
1071 web::NavigationItem* visible_item = 1032 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
1072 [[session_controller_ visibleEntry] navigationItem];
1073 ASSERT_TRUE(visible_item); 1033 ASSERT_TRUE(visible_item);
1074 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); 1034 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec());
1075 } 1035 }
1076 1036
1077 // Tests that visible URL is not the same as pending URL created via pending 1037 // Tests that visible URL is not the same as pending URL created via pending
1078 // navigation index. 1038 // navigation index.
1079 TEST_F(CRWSessionControllerTest, VisibleEntryWithPendingNavigationIndex) { 1039 TEST_F(CRWSessionControllerTest, VisibleItemWithPendingNavigationIndex) {
1080 [session_controller_ addPendingItem:GURL("http://www.example.com") 1040 [session_controller_ addPendingItem:GURL("http://www.example.com")
1081 referrer:MakeReferrer("http://www.example.com/a") 1041 referrer:MakeReferrer("http://www.example.com/a")
1082 transition:ui::PAGE_TRANSITION_LINK 1042 transition:ui::PAGE_TRANSITION_LINK
1083 rendererInitiated:NO]; 1043 rendererInitiated:NO];
1084 [session_controller_ commitPendingItem]; 1044 [session_controller_ commitPendingItem];
1085 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 1045 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1086 referrer:MakeReferrer("http://www.example.com/b") 1046 referrer:MakeReferrer("http://www.example.com/b")
1087 transition:ui::PAGE_TRANSITION_LINK 1047 transition:ui::PAGE_TRANSITION_LINK
1088 rendererInitiated:NO]; 1048 rendererInitiated:NO];
1089 [session_controller_ commitPendingItem]; 1049 [session_controller_ commitPendingItem];
1090 1050
1091 [session_controller_ setPendingItemIndex:0]; 1051 [session_controller_ setPendingItemIndex:0];
1092 1052
1093 web::NavigationItem* visible_item = 1053 web::NavigationItemImpl* visible_item = [session_controller_ visibleItem];
1094 [[session_controller_ visibleEntry] navigationItem];
1095 ASSERT_TRUE(visible_item); 1054 ASSERT_TRUE(visible_item);
1096 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); 1055 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec());
1097 } 1056 }
1098 1057
1099 // Tests that |-backwardEntries| is empty if all preceding entries are 1058 // Tests that |-backwardItems| is empty if all preceding items are
1100 // redirects. 1059 // redirects.
1101 TEST_F(CRWSessionControllerTest, BackwardEntriesForAllRedirects) { 1060 TEST_F(CRWSessionControllerTest, BackwardItemsForAllRedirects) {
1102 [session_controller_ addPendingItem:GURL("http://www.example.com") 1061 [session_controller_ addPendingItem:GURL("http://www.example.com")
1103 referrer:MakeReferrer("http://www.example.com/a") 1062 referrer:MakeReferrer("http://www.example.com/a")
1104 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT 1063 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT
1105 rendererInitiated:YES]; 1064 rendererInitiated:YES];
1106 [session_controller_ commitPendingItem]; 1065 [session_controller_ commitPendingItem];
1107 [session_controller_ addPendingItem:GURL("http://www.example.com/0") 1066 [session_controller_ addPendingItem:GURL("http://www.example.com/0")
1108 referrer:MakeReferrer("http://www.example.com/b") 1067 referrer:MakeReferrer("http://www.example.com/b")
1109 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT 1068 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT
1110 rendererInitiated:YES]; 1069 rendererInitiated:YES];
1111 [session_controller_ commitPendingItem]; 1070 [session_controller_ commitPendingItem];
1112 EXPECT_EQ(0U, [session_controller_ backwardEntries].count); 1071 EXPECT_EQ(0U, [session_controller_ backwardItems].size());
1113 } 1072 }
1114 1073
1115 } // anonymous namespace 1074 } // 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