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