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

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

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