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

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

Issue 2698773002: [iOS] Refactoring web CRWSessionController user agent code. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/navigation_manager_impl.h" 5 #import "ios/web/navigation/navigation_manager_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #import "base/mac/scoped_nsobject.h" 8 #import "base/mac/scoped_nsobject.h"
9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
10 #import "ios/web/navigation/navigation_manager_delegate.h" 10 #import "ios/web/navigation/navigation_manager_delegate.h"
11 #include "ios/web/public/navigation_item.h"
11 #include "ios/web/public/test/fakes/test_browser_state.h" 12 #include "ios/web/public/test/fakes/test_browser_state.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 #include "testing/platform_test.h" 14 #include "testing/platform_test.h"
14 15
15 namespace web { 16 namespace web {
16 namespace { 17 namespace {
17 // Stub class for NavigationManagerDelegate. 18 // Stub class for NavigationManagerDelegate.
18 class TestNavigationManagerDelegate : public NavigationManagerDelegate { 19 class TestNavigationManagerDelegate : public NavigationManagerDelegate {
19 void GoToIndex(int index) override {} 20 void GoToIndex(int index) override {}
20 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override {} 21 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override {}
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); 56 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex());
56 EXPECT_FALSE(navigation_manager()->GetPreviousItem()); 57 EXPECT_FALSE(navigation_manager()->GetPreviousItem());
57 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); 58 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex());
58 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 59 EXPECT_FALSE(navigation_manager()->GetPendingItem());
59 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 60 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex());
60 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); 61 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0));
61 } 62 }
62 63
63 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. 64 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry.
64 TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { 65 TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) {
65 [session_controller() addPendingItem:GURL("http://www.url.com") 66 navigation_manager()->AddUserInitiatedPendingItem(
66 referrer:Referrer() 67 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
67 transition:ui::PAGE_TRANSITION_TYPED
68 rendererInitiated:NO];
69 [session_controller() commitPendingItem]; 68 [session_controller() commitPendingItem];
70 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 69 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex());
71 } 70 }
72 71
73 // Tests that GetPendingItemIndex() returns current item index if there is a 72 // Tests that GetPendingItemIndex() returns current item index if there is a
74 // pending entry. 73 // pending entry.
75 TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { 74 TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) {
76 [session_controller() addPendingItem:GURL("http://www.url.com") 75 navigation_manager()->AddUserInitiatedPendingItem(
77 referrer:Referrer() 76 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
78 transition:ui::PAGE_TRANSITION_TYPED
79 rendererInitiated:NO];
80 [session_controller() commitPendingItem]; 77 [session_controller() commitPendingItem];
81 [session_controller() addPendingItem:GURL("http://www.url.com/0") 78 navigation_manager()->AddUserInitiatedPendingItem(
82 referrer:Referrer() 79 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED);
83 transition:ui::PAGE_TRANSITION_TYPED
84 rendererInitiated:NO];
85 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); 80 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex());
86 } 81 }
87 82
88 // Tests that GetPendingItemIndex() returns same index as was set by 83 // Tests that GetPendingItemIndex() returns same index as was set by
89 // -[CRWSessionController setPendingItemIndex:]. 84 // -[CRWSessionController setPendingItemIndex:].
90 TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { 85 TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) {
91 [session_controller() addPendingItem:GURL("http://www.url.com") 86 navigation_manager()->AddUserInitiatedPendingItem(
92 referrer:Referrer() 87 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
93 transition:ui::PAGE_TRANSITION_TYPED
94 rendererInitiated:NO];
95 [session_controller() commitPendingItem]; 88 [session_controller() commitPendingItem];
96 [session_controller() addPendingItem:GURL("http://www.url.com/0") 89 navigation_manager()->AddUserInitiatedPendingItem(
97 referrer:Referrer() 90 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED);
98 transition:ui::PAGE_TRANSITION_TYPED
99 rendererInitiated:NO];
100 [session_controller() commitPendingItem]; 91 [session_controller() commitPendingItem];
101 92
102 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 93 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex());
103 [session_controller() setPendingItemIndex:0]; 94 [session_controller() setPendingItemIndex:0];
104 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); 95 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex());
105 } 96 }
106 97
107 // Tests that going back or negative offset is not possible without a committed 98 // Tests that going back or negative offset is not possible without a committed
108 // item. 99 // item.
109 TEST_F(NavigationManagerTest, CanGoBackWithoutCommitedItem) { 100 TEST_F(NavigationManagerTest, CanGoBackWithoutCommitedItem) {
110 EXPECT_FALSE(navigation_manager()->CanGoBack()); 101 EXPECT_FALSE(navigation_manager()->CanGoBack());
111 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 102 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
112 } 103 }
113 104
114 // Tests that going back or negative offset is not possible if there is a 105 // Tests that going back or negative offset is not possible if there is a
115 // transient item, but not committed items. 106 // transient item, but not committed items.
116 TEST_F(NavigationManagerTest, CanGoBackWithTransientItem) { 107 TEST_F(NavigationManagerTest, CanGoBackWithTransientItem) {
117 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; 108 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")];
118 109
119 EXPECT_FALSE(navigation_manager()->CanGoBack()); 110 EXPECT_FALSE(navigation_manager()->CanGoBack());
120 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 111 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
121 } 112 }
122 113
123 // Tests that going back or negative offset is possible if there is a transient 114 // Tests that going back or negative offset is possible if there is a transient
124 // item and at least one committed item. 115 // item and at least one committed item.
125 TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { 116 TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) {
126 [session_controller() addPendingItem:GURL("http://www.url.com") 117 navigation_manager()->AddUserInitiatedPendingItem(
127 referrer:Referrer() 118 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
128 transition:ui::PAGE_TRANSITION_TYPED
129 rendererInitiated:NO];
130 [session_controller() commitPendingItem]; 119 [session_controller() commitPendingItem];
131 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; 120 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")];
132 121
133 EXPECT_TRUE(navigation_manager()->CanGoBack()); 122 EXPECT_TRUE(navigation_manager()->CanGoBack());
134 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 123 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
135 } 124 }
136 125
137 // Tests that going back or negative offset is not possible if there is ony one 126 // Tests that going back or negative offset is not possible if there is ony one
138 // committed item and no transient item. 127 // committed item and no transient item.
139 TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { 128 TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) {
140 [session_controller() addPendingItem:GURL("http://www.url.com") 129 navigation_manager()->AddUserInitiatedPendingItem(
141 referrer:Referrer() 130 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
142 transition:ui::PAGE_TRANSITION_TYPED
143 rendererInitiated:NO];
144 [session_controller() commitPendingItem]; 131 [session_controller() commitPendingItem];
145 132
146 EXPECT_FALSE(navigation_manager()->CanGoBack()); 133 EXPECT_FALSE(navigation_manager()->CanGoBack());
147 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 134 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
148 } 135 }
149 136
150 // Tests going back possibility with multiple committed items. 137 // Tests going back possibility with multiple committed items.
151 TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { 138 TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) {
152 [session_controller() addPendingItem:GURL("http://www.url.com") 139 navigation_manager()->AddUserInitiatedPendingItem(
153 referrer:Referrer() 140 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
154 transition:ui::PAGE_TRANSITION_TYPED
155 rendererInitiated:NO];
156 [session_controller() commitPendingItem]; 141 [session_controller() commitPendingItem];
157 [session_controller() addPendingItem:GURL("http://www.url.com/0") 142 navigation_manager()->AddUserInitiatedPendingItem(
158 referrer:Referrer() 143 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED);
159 transition:ui::PAGE_TRANSITION_TYPED
160 rendererInitiated:NO];
161 [session_controller() commitPendingItem]; 144 [session_controller() commitPendingItem];
162 [session_controller() addPendingItem:GURL("http://www.url.com/1") 145 navigation_manager()->AddUserInitiatedPendingItem(
163 referrer:Referrer() 146 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED);
164 transition:ui::PAGE_TRANSITION_TYPED
165 rendererInitiated:NO];
166 [session_controller() commitPendingItem]; 147 [session_controller() commitPendingItem];
167 148
168 EXPECT_TRUE(navigation_manager()->CanGoBack()); 149 EXPECT_TRUE(navigation_manager()->CanGoBack());
169 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 150 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
170 151
171 [session_controller() goToItemAtIndex:1]; 152 [session_controller() goToItemAtIndex:1];
172 EXPECT_TRUE(navigation_manager()->CanGoBack()); 153 EXPECT_TRUE(navigation_manager()->CanGoBack());
173 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 154 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
174 155
175 [session_controller() goToItemAtIndex:0]; 156 [session_controller() goToItemAtIndex:0];
176 EXPECT_FALSE(navigation_manager()->CanGoBack()); 157 EXPECT_FALSE(navigation_manager()->CanGoBack());
177 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 158 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
178 159
179 [session_controller() goToItemAtIndex:1]; 160 [session_controller() goToItemAtIndex:1];
180 EXPECT_TRUE(navigation_manager()->CanGoBack()); 161 EXPECT_TRUE(navigation_manager()->CanGoBack());
181 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 162 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
182 } 163 }
183 164
184 // Tests that going forward or positive offset is not possible if there is a 165 // Tests that going forward or positive offset is not possible if there is a
185 // pending entry. 166 // pending entry.
186 TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) { 167 TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) {
187 [session_controller() addPendingItem:GURL("http://www.url.com") 168 navigation_manager()->AddUserInitiatedPendingItem(
188 referrer:Referrer() 169 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
189 transition:ui::PAGE_TRANSITION_TYPED
190 rendererInitiated:NO];
191 [session_controller() commitPendingItem]; 170 [session_controller() commitPendingItem];
192 [session_controller() addPendingItem:GURL("http://www.url.com/0") 171 navigation_manager()->AddUserInitiatedPendingItem(
193 referrer:Referrer() 172 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED);
194 transition:ui::PAGE_TRANSITION_TYPED
195 rendererInitiated:NO];
196 [session_controller() commitPendingItem]; 173 [session_controller() commitPendingItem];
197 [session_controller() goToItemAtIndex:0]; 174 [session_controller() goToItemAtIndex:0];
198 [session_controller() addPendingItem:GURL("http://www.url.com/1") 175 navigation_manager()->AddUserInitiatedPendingItem(
199 referrer:Referrer() 176 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED);
200 transition:ui::PAGE_TRANSITION_TYPED
201 rendererInitiated:NO];
202 177
203 // Pending entry should not allow going forward. 178 // Pending entry should not allow going forward.
204 EXPECT_FALSE(navigation_manager()->CanGoForward()); 179 EXPECT_FALSE(navigation_manager()->CanGoForward());
205 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 180 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
206 } 181 }
207 182
208 // Tests that going forward or positive offset is not possible without a 183 // Tests that going forward or positive offset is not possible without a
209 // committed item. 184 // committed item.
210 TEST_F(NavigationManagerTest, CanGoForwardWithoutCommitedItem) { 185 TEST_F(NavigationManagerTest, CanGoForwardWithoutCommitedItem) {
211 EXPECT_FALSE(navigation_manager()->CanGoForward()); 186 EXPECT_FALSE(navigation_manager()->CanGoForward());
212 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 187 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
213 } 188 }
214 189
215 // Tests that going forward or positive offset is not possible if there is ony 190 // Tests that going forward or positive offset is not possible if there is ony
216 // one committed item and no transient item. 191 // one committed item and no transient item.
217 TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { 192 TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) {
218 [session_controller() addPendingItem:GURL("http://www.url.com") 193 navigation_manager()->AddUserInitiatedPendingItem(
219 referrer:Referrer() 194 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
220 transition:ui::PAGE_TRANSITION_TYPED
221 rendererInitiated:NO];
222 [session_controller() commitPendingItem]; 195 [session_controller() commitPendingItem];
223 196
224 EXPECT_FALSE(navigation_manager()->CanGoForward()); 197 EXPECT_FALSE(navigation_manager()->CanGoForward());
225 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 198 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
226 } 199 }
227 200
228 // Tests going forward possibility with multiple committed items. 201 // Tests going forward possibility with multiple committed items.
229 TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { 202 TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) {
230 [session_controller() addPendingItem:GURL("http://www.url.com") 203 navigation_manager()->AddUserInitiatedPendingItem(
231 referrer:Referrer() 204 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED);
232 transition:ui::PAGE_TRANSITION_TYPED
233 rendererInitiated:NO];
234 [session_controller() commitPendingItem]; 205 [session_controller() commitPendingItem];
235 [session_controller() addPendingItem:GURL("http://www.url.com/0") 206 navigation_manager()->AddUserInitiatedPendingItem(
236 referrer:Referrer() 207 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED);
237 transition:ui::PAGE_TRANSITION_TYPED
238 rendererInitiated:NO];
239 [session_controller() commitPendingItem]; 208 [session_controller() commitPendingItem];
240 [session_controller() addPendingItem:GURL("http://www.url.com/1") 209 navigation_manager()->AddUserInitiatedPendingItem(
241 referrer:Referrer() 210 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED);
242 transition:ui::PAGE_TRANSITION_TYPED
243 rendererInitiated:NO];
244 [session_controller() commitPendingItem]; 211 [session_controller() commitPendingItem];
245 212
246 EXPECT_FALSE(navigation_manager()->CanGoForward()); 213 EXPECT_FALSE(navigation_manager()->CanGoForward());
247 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 214 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
248 215
249 [session_controller() goToItemAtIndex:1]; 216 [session_controller() goToItemAtIndex:1];
250 EXPECT_TRUE(navigation_manager()->CanGoForward()); 217 EXPECT_TRUE(navigation_manager()->CanGoForward());
251 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 218 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
252 219
253 [session_controller() goToItemAtIndex:0]; 220 [session_controller() goToItemAtIndex:0];
254 EXPECT_TRUE(navigation_manager()->CanGoForward()); 221 EXPECT_TRUE(navigation_manager()->CanGoForward());
255 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 222 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
256 223
257 [session_controller() goToItemAtIndex:1]; 224 [session_controller() goToItemAtIndex:1];
258 EXPECT_TRUE(navigation_manager()->CanGoForward()); 225 EXPECT_TRUE(navigation_manager()->CanGoForward());
259 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 226 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
260 227
261 [session_controller() goToItemAtIndex:2]; 228 [session_controller() goToItemAtIndex:2];
262 EXPECT_FALSE(navigation_manager()->CanGoForward()); 229 EXPECT_FALSE(navigation_manager()->CanGoForward());
263 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 230 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
264 } 231 }
265 232
266 // Tests CanGoToOffset API for positive, negative and zero delta. Tested 233 // Tests CanGoToOffset API for positive, negative and zero delta. Tested
267 // navigation manager will have redirect entries to make sure they are 234 // navigation manager will have redirect entries to make sure they are
268 // appropriately skipped. 235 // appropriately skipped.
269 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { 236 TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) {
270 [session_controller() addPendingItem:GURL("http://www.url.com/0") 237 navigation_manager()->AddUserInitiatedPendingItem(
271 referrer:Referrer() 238 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK);
272 transition:ui::PAGE_TRANSITION_LINK
273 rendererInitiated:NO];
274 [session_controller() commitPendingItem]; 239 [session_controller() commitPendingItem];
275 [session_controller() addPendingItem:GURL("http://www.url.com/redirect") 240 navigation_manager()->AddUserInitiatedPendingItem(
276 referrer:Referrer() 241 GURL("http://www.url.com/redirect"), Referrer(),
277 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK 242 ui::PAGE_TRANSITION_IS_REDIRECT_MASK);
278 rendererInitiated:NO];
279 [session_controller() commitPendingItem]; 243 [session_controller() commitPendingItem];
280 [session_controller() addPendingItem:GURL("http://www.url.com/1") 244 navigation_manager()->AddUserInitiatedPendingItem(
281 referrer:Referrer() 245 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK);
282 transition:ui::PAGE_TRANSITION_LINK
283 rendererInitiated:NO];
284 [session_controller() commitPendingItem]; 246 [session_controller() commitPendingItem];
285 [session_controller() addPendingItem:GURL("http://www.url.com/2") 247 navigation_manager()->AddUserInitiatedPendingItem(
286 referrer:Referrer() 248 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK);
287 transition:ui::PAGE_TRANSITION_LINK
288 rendererInitiated:NO];
289 [session_controller() commitPendingItem]; 249 [session_controller() commitPendingItem];
290 [session_controller() addPendingItem:GURL("http://www.url.com/redirect") 250 navigation_manager()->AddUserInitiatedPendingItem(
291 referrer:Referrer() 251 GURL("http://www.url.com/redirect"), Referrer(),
292 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK 252 ui::PAGE_TRANSITION_IS_REDIRECT_MASK);
293 rendererInitiated:NO];
294 [session_controller() commitPendingItem]; 253 [session_controller() commitPendingItem];
295 ASSERT_EQ(5, navigation_manager()->GetItemCount()); 254 ASSERT_EQ(5, navigation_manager()->GetItemCount());
296 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); 255 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex());
297 256
298 // Go to entry at index 1 and test API from that state. 257 // Go to entry at index 1 and test API from that state.
299 [session_controller() goToItemAtIndex:1]; 258 [session_controller() goToItemAtIndex:1];
300 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); 259 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex());
301 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 260 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
302 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 261 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
303 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); 262 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1));
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); 446 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000));
488 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); 447 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000));
489 } 448 }
490 449
491 // Tests offsets with pending transient entries (specifically gong back and 450 // Tests offsets with pending transient entries (specifically gong back and
492 // forward from a pending navigation entry that is added to the middle of the 451 // forward from a pending navigation entry that is added to the middle of the
493 // navigation stack). 452 // navigation stack).
494 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) { 453 TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) {
495 // Create a transient item in the middle of the navigation stack and go back 454 // Create a transient item in the middle of the navigation stack and go back
496 // to it (pending index is 1, current index is 2). 455 // to it (pending index is 1, current index is 2).
497 [session_controller() addPendingItem:GURL("http://www.url.com/0") 456 navigation_manager()->AddUserInitiatedPendingItem(
498 referrer:Referrer() 457 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK);
499 transition:ui::PAGE_TRANSITION_LINK
500 rendererInitiated:NO];
501 [session_controller() commitPendingItem]; 458 [session_controller() commitPendingItem];
502 [session_controller() addPendingItem:GURL("http://www.url.com/1") 459 navigation_manager()->AddUserInitiatedPendingItem(
503 referrer:Referrer() 460 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK);
504 transition:ui::PAGE_TRANSITION_LINK
505 rendererInitiated:NO];
506 [session_controller() commitPendingItem]; 461 [session_controller() commitPendingItem];
507 [session_controller() addPendingItem:GURL("http://www.url.com/2") 462 navigation_manager()->AddUserInitiatedPendingItem(
508 referrer:Referrer() 463 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK);
509 transition:ui::PAGE_TRANSITION_LINK
510 rendererInitiated:NO];
511 [session_controller() commitPendingItem]; 464 [session_controller() commitPendingItem];
512 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; 465 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")];
513 [session_controller() setPendingItemIndex:1]; 466 [session_controller() setPendingItemIndex:1];
514 467
515 ASSERT_EQ(3, navigation_manager()->GetItemCount()); 468 ASSERT_EQ(3, navigation_manager()->GetItemCount());
516 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); 469 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex());
517 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); 470 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
518 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); 471 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
519 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); 472 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1));
520 473
521 // Now go forward to that middle transient item (pending index is 1, 474 // Now go forward to that middle transient item (pending index is 1,
522 // current index is 0). 475 // current index is 0).
523 [session_controller() goToItemAtIndex:0]; 476 [session_controller() goToItemAtIndex:0];
524 [session_controller() setPendingItemIndex:1]; 477 [session_controller() setPendingItemIndex:1];
525 ASSERT_EQ(3, navigation_manager()->GetItemCount()); 478 ASSERT_EQ(3, navigation_manager()->GetItemCount());
526 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex()); 479 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex());
527 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); 480 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
528 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); 481 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
529 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); 482 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1));
530 } 483 }
531 484
485 // Tests that desktop user agent can be properly enforced to use for the next
486 // and only next pending item.
487 TEST_F(NavigationManagerTest, OverrideDesktopUserAgent) {
488 navigation_manager()->OverrideDesktopUserAgentForNextPendingItem();
489 navigation_manager()->AddUserInitiatedPendingItem(
490 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED);
491 [session_controller() commitPendingItem];
492 NavigationItem* visible_item = navigation_manager()->GetVisibleItem();
493 EXPECT_TRUE(visible_item->IsOverridingUserAgent());
494
495 navigation_manager()->AddUserInitiatedPendingItem(
496 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED);
497 [session_controller() commitPendingItem];
498 visible_item = navigation_manager()->GetVisibleItem();
499 EXPECT_FALSE(visible_item->IsOverridingUserAgent());
kkhorimoto 2017/02/15 23:02:06 Does this pass? Shouldn't the second piece of log
liaoyuke 2017/02/16 22:04:29 Done.
500 }
501
532 } // namespace web 502 } // namespace web
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698