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

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

Issue 2957163002: [Navigation Experiment] Add WKBasedNavigationManagerImpl. (Closed)
Patch Set: Patch for landing Created 3 years, 5 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 #include "base/mac/bind_objc_block.h" 8 #include "base/mac/bind_objc_block.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/legacy_navigation_manager_impl.h" 10 #import "ios/web/navigation/legacy_navigation_manager_impl.h"
11 #import "ios/web/navigation/navigation_manager_delegate.h" 11 #import "ios/web/navigation/navigation_manager_delegate.h"
12 #import "ios/web/navigation/wk_based_navigation_manager_impl.h"
12 #include "ios/web/public/navigation_item.h" 13 #include "ios/web/public/navigation_item.h"
13 #include "ios/web/public/test/fakes/test_browser_state.h" 14 #include "ios/web/public/test/fakes/test_browser_state.h"
14 #include "ios/web/test/test_url_constants.h" 15 #include "ios/web/test/test_url_constants.h"
16 #import "ios/web/web_state/ui/crw_web_view_navigation_proxy.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 #include "testing/platform_test.h" 18 #include "testing/platform_test.h"
17 #include "url/scheme_host_port.h" 19 #include "url/scheme_host_port.h"
18 #include "url/url_util.h" 20 #include "url/url_util.h"
19 21
20 #if !defined(__has_feature) || !__has_feature(objc_arc) 22 #if !defined(__has_feature) || !__has_feature(objc_arc)
21 #error "This file requires ARC support." 23 #error "This file requires ARC support."
22 #endif 24 #endif
23 25
24 namespace web { 26 namespace web {
(...skipping 10 matching lines...) Expand all
35 scheme_replacements.SetSchemeStr(kTestWebUIScheme); 37 scheme_replacements.SetSchemeStr(kTestWebUIScheme);
36 *url = url->ReplaceComponents(scheme_replacements); 38 *url = url->ReplaceComponents(scheme_replacements);
37 } 39 }
38 return false; 40 return false;
39 } 41 }
40 42
41 // Stub class for NavigationManagerDelegate. 43 // Stub class for NavigationManagerDelegate.
42 class TestNavigationManagerDelegate : public NavigationManagerDelegate { 44 class TestNavigationManagerDelegate : public NavigationManagerDelegate {
43 public: 45 public:
44 bool reload_called() { return reload_called_; } 46 bool reload_called() { return reload_called_; }
47 void SetSessionController(CRWSessionController* session_controller) {
48 session_controller_ = session_controller;
49 }
45 50
46 private: 51 private:
47 // NavigationManagerDelegate overrides. 52 // NavigationManagerDelegate overrides.
48 void GoToIndex(int index) override {} 53 void GoToIndex(int index) override {
54 [session_controller_ goToItemAtIndex:index discardNonCommittedItems:NO];
55 }
49 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override {} 56 void LoadURLWithParams(const NavigationManager::WebLoadParams&) override {}
50 void Reload() override { reload_called_ = true; } 57 void Reload() override { reload_called_ = true; }
51 void OnNavigationItemsPruned(size_t pruned_item_count) override {} 58 void OnNavigationItemsPruned(size_t pruned_item_count) override {}
52 void OnNavigationItemChanged() override {} 59 void OnNavigationItemChanged() override {}
53 void OnNavigationItemCommitted(const LoadCommittedDetails&) override {} 60 void OnNavigationItemCommitted(const LoadCommittedDetails&) override {}
54 WebState* GetWebState() override { return nullptr; } 61 WebState* GetWebState() override { return nullptr; }
62 id<CRWWebViewNavigationProxy> GetWebViewNavigationProxy() const override {
63 return nil;
64 }
55 65
56 bool reload_called_ = false; 66 bool reload_called_ = false;
67 CRWSessionController* session_controller_;
57 }; 68 };
58 } // namespace 69 } // namespace
59 70
71 // NavigationManagerTest is parameterized on this enum to test both the legacy
72 // implementation of navigation manager and the experimental implementation.
73 enum NavigationManagerChoice {
74 TEST_LEGACY_NAVIGATION_MANAGER,
75 TEST_WK_BASED_NAVIGATION_MANAGER,
76 };
77
60 // Programmatic test fixture for NavigationManagerImpl testing. 78 // Programmatic test fixture for NavigationManagerImpl testing.
61 // GetParam() chooses whether to run tests on LegacyNavigationManagerImpl or 79 // GetParam() chooses whether to run tests on LegacyNavigationManagerImpl or
62 // (the soon-to-be-implemented) WKBasedNavigationManagerImpl. 80 // WKBasedNavigationManagerImpl.
63 // TODO(crbug.com/734150): cleanup the LegacyNavigationManagerImpl use case. 81 // TODO(crbug.com/734150): cleanup the LegacyNavigationManagerImpl use case.
64 class NavigationManagerTest : public PlatformTest, 82 class NavigationManagerTest
65 public ::testing::WithParamInterface<bool> { 83 : public PlatformTest,
84 public ::testing::WithParamInterface<NavigationManagerChoice> {
66 protected: 85 protected:
67 NavigationManagerTest() { 86 NavigationManagerTest() {
68 bool test_legacy_navigation_manager = GetParam(); 87 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
69 if (test_legacy_navigation_manager) {
70 manager_.reset(new LegacyNavigationManagerImpl); 88 manager_.reset(new LegacyNavigationManagerImpl);
89 controller_ =
90 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
91 delegate_.SetSessionController(session_controller());
71 } else { 92 } else {
72 DCHECK(false) << "Not implemented."; 93 manager_.reset(new WKBasedNavigationManagerImpl);
73 } 94 }
74 // Setup rewriter. 95 // Setup rewriter.
75 BrowserURLRewriter::GetInstance()->AddURLRewriter(UrlRewriter); 96 BrowserURLRewriter::GetInstance()->AddURLRewriter(UrlRewriter);
76 url::AddStandardScheme(kSchemeToRewrite, url::SCHEME_WITHOUT_PORT); 97 url::AddStandardScheme(kSchemeToRewrite, url::SCHEME_WITHOUT_PORT);
77 98
78 manager_->SetDelegate(&delegate_); 99 manager_->SetDelegate(&delegate_);
79 manager_->SetBrowserState(&browser_state_); 100 manager_->SetBrowserState(&browser_state_);
80 controller_ =
81 [[CRWSessionController alloc] initWithBrowserState:&browser_state_];
82 manager_->SetSessionController(controller_); 101 manager_->SetSessionController(controller_);
83 } 102 }
84 CRWSessionController* session_controller() { return controller_; } 103 CRWSessionController* session_controller() { return controller_; }
85 NavigationManagerImpl* navigation_manager() { return manager_.get(); } 104 NavigationManagerImpl* navigation_manager() { return manager_.get(); }
86 105
87 TestNavigationManagerDelegate navigation_manager_delegate() { 106 TestNavigationManagerDelegate navigation_manager_delegate() {
88 return delegate_; 107 return delegate_;
89 } 108 }
90 109
91 private: 110 private:
92 TestBrowserState browser_state_; 111 TestBrowserState browser_state_;
93 TestNavigationManagerDelegate delegate_; 112 TestNavigationManagerDelegate delegate_;
94 std::unique_ptr<NavigationManagerImpl> manager_; 113 std::unique_ptr<NavigationManagerImpl> manager_;
95 CRWSessionController* controller_; 114 CRWSessionController* controller_;
96 }; 115 };
97 116
98 // Tests state of an empty navigation manager. 117 // Tests state of an empty navigation manager.
99 TEST_P(NavigationManagerTest, EmptyManager) { 118 TEST_P(NavigationManagerTest, EmptyManager) {
100 EXPECT_EQ(0, navigation_manager()->GetItemCount()); 119 EXPECT_EQ(0, navigation_manager()->GetItemCount());
101 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); 120 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex());
102 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex());
103 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 121 EXPECT_FALSE(navigation_manager()->GetPendingItem());
104 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 122 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex());
105 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); 123 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0));
106 EXPECT_EQ(-1, navigation_manager()->GetPreviousItemIndex()); 124 EXPECT_EQ(-1, navigation_manager()->GetPreviousItemIndex());
107 } 125 }
108 126
109 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. 127 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry.
110 TEST_P(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { 128 TEST_P(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) {
111 navigation_manager()->AddPendingItem( 129 navigation_manager()->AddPendingItem(
112 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 130 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
113 web::NavigationInitiationType::USER_INITIATED, 131 web::NavigationInitiationType::USER_INITIATED,
114 web::NavigationManager::UserAgentOverrideOption::INHERIT); 132 web::NavigationManager::UserAgentOverrideOption::INHERIT);
115 [session_controller() commitPendingItem]; 133 navigation_manager()->CommitPendingItem();
116 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 134 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex());
117 } 135 }
118 136
119 // Tests that GetPendingItemIndex() returns current item index if there is a 137 // Tests that GetPendingItemIndex() returns current item index if there is a
120 // pending entry. 138 // pending entry.
121 TEST_P(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { 139 TEST_P(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) {
122 navigation_manager()->AddPendingItem( 140 navigation_manager()->AddPendingItem(
123 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 141 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
124 web::NavigationInitiationType::USER_INITIATED, 142 web::NavigationInitiationType::USER_INITIATED,
125 web::NavigationManager::UserAgentOverrideOption::INHERIT); 143 web::NavigationManager::UserAgentOverrideOption::INHERIT);
126 [session_controller() commitPendingItem]; 144 navigation_manager()->CommitPendingItem();
127 navigation_manager()->AddPendingItem( 145 navigation_manager()->AddPendingItem(
128 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 146 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
129 web::NavigationInitiationType::USER_INITIATED, 147 web::NavigationInitiationType::USER_INITIATED,
130 web::NavigationManager::UserAgentOverrideOption::INHERIT); 148 web::NavigationManager::UserAgentOverrideOption::INHERIT);
131 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); 149 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex());
132 } 150 }
133 151
134 // Tests that GetPendingItemIndex() returns same index as was set by 152 // Tests that GetPendingItemIndex() returns same index as was set by
135 // -[CRWSessionController setPendingItemIndex:]. 153 // -[CRWSessionController setPendingItemIndex:].
136 TEST_P(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { 154 TEST_P(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) {
137 navigation_manager()->AddPendingItem( 155 navigation_manager()->AddPendingItem(
138 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 156 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
139 web::NavigationInitiationType::USER_INITIATED, 157 web::NavigationInitiationType::USER_INITIATED,
140 web::NavigationManager::UserAgentOverrideOption::INHERIT); 158 web::NavigationManager::UserAgentOverrideOption::INHERIT);
141 [session_controller() commitPendingItem]; 159 navigation_manager()->CommitPendingItem();
142 navigation_manager()->AddPendingItem( 160 navigation_manager()->AddPendingItem(
143 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 161 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
144 web::NavigationInitiationType::USER_INITIATED, 162 web::NavigationInitiationType::USER_INITIATED,
145 web::NavigationManager::UserAgentOverrideOption::INHERIT); 163 web::NavigationManager::UserAgentOverrideOption::INHERIT);
146 [session_controller() commitPendingItem]; 164 navigation_manager()->CommitPendingItem();
147 165
148 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 166 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex());
149 [session_controller() setPendingItemIndex:0]; 167 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
168 [session_controller() setPendingItemIndex:0];
169 }
150 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); 170 EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex());
151 } 171 }
152 172
153 // Tests that going back or negative offset is not possible without a committed 173 // Tests that going back or negative offset is not possible without a committed
154 // item. 174 // item.
155 TEST_P(NavigationManagerTest, CanGoBackWithoutCommitedItem) { 175 TEST_P(NavigationManagerTest, CanGoBackWithoutCommitedItem) {
156 EXPECT_FALSE(navigation_manager()->CanGoBack()); 176 EXPECT_FALSE(navigation_manager()->CanGoBack());
157 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 177 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
158 } 178 }
159 179
160 // Tests that going back or negative offset is not possible if there is a 180 // Tests that going back or negative offset is not possible if there is a
161 // transient item, but not committed items. 181 // transient item, but not committed items.
162 TEST_P(NavigationManagerTest, CanGoBackWithTransientItem) { 182 TEST_P(NavigationManagerTest, CanGoBackWithTransientItem) {
163 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; 183 navigation_manager()->AddPendingItem(
184 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
185 web::NavigationInitiationType::USER_INITIATED,
186 web::NavigationManager::UserAgentOverrideOption::INHERIT);
187 navigation_manager()->AddTransientItem(GURL("http://www.url.com"));
164 188
165 EXPECT_FALSE(navigation_manager()->CanGoBack()); 189 EXPECT_FALSE(navigation_manager()->CanGoBack());
166 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 190 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
167 } 191 }
168 192
169 // Tests that going back or negative offset is possible if there is a transient 193 // Tests that going back or negative offset is possible if there is a transient
170 // item and at least one committed item. 194 // item and at least one committed item.
171 TEST_P(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { 195 TEST_P(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) {
172 navigation_manager()->AddPendingItem( 196 navigation_manager()->AddPendingItem(
173 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 197 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
174 web::NavigationInitiationType::USER_INITIATED, 198 web::NavigationInitiationType::USER_INITIATED,
175 web::NavigationManager::UserAgentOverrideOption::INHERIT); 199 web::NavigationManager::UserAgentOverrideOption::INHERIT);
176 [session_controller() commitPendingItem]; 200 navigation_manager()->CommitPendingItem();
177 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; 201 navigation_manager()->AddTransientItem(GURL("http://www.url.com/0"));
178 202
179 EXPECT_TRUE(navigation_manager()->CanGoBack()); 203 EXPECT_TRUE(navigation_manager()->CanGoBack());
180 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 204 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
181 } 205 }
182 206
183 // Tests that going back or negative offset is not possible if there is ony one 207 // Tests that going back or negative offset is not possible if there is ony one
184 // committed item and no transient item. 208 // committed item and no transient item.
185 TEST_P(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { 209 TEST_P(NavigationManagerTest, CanGoBackWithSingleCommitedItem) {
186 navigation_manager()->AddPendingItem( 210 navigation_manager()->AddPendingItem(
187 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 211 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
188 web::NavigationInitiationType::USER_INITIATED, 212 web::NavigationInitiationType::USER_INITIATED,
189 web::NavigationManager::UserAgentOverrideOption::INHERIT); 213 web::NavigationManager::UserAgentOverrideOption::INHERIT);
190 [session_controller() commitPendingItem]; 214 navigation_manager()->CommitPendingItem();
191 215
192 EXPECT_FALSE(navigation_manager()->CanGoBack()); 216 EXPECT_FALSE(navigation_manager()->CanGoBack());
193 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 217 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
194 } 218 }
195 219
196 // Tests going back possibility with multiple committed items. 220 // Tests going back possibility with multiple committed items.
197 TEST_P(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { 221 TEST_P(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) {
198 navigation_manager()->AddPendingItem( 222 navigation_manager()->AddPendingItem(
199 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 223 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
200 web::NavigationInitiationType::USER_INITIATED, 224 web::NavigationInitiationType::USER_INITIATED,
201 web::NavigationManager::UserAgentOverrideOption::INHERIT); 225 web::NavigationManager::UserAgentOverrideOption::INHERIT);
202 [session_controller() commitPendingItem]; 226 navigation_manager()->CommitPendingItem();
203 navigation_manager()->AddPendingItem( 227 navigation_manager()->AddPendingItem(
204 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 228 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
205 web::NavigationInitiationType::USER_INITIATED, 229 web::NavigationInitiationType::USER_INITIATED,
206 web::NavigationManager::UserAgentOverrideOption::INHERIT); 230 web::NavigationManager::UserAgentOverrideOption::INHERIT);
207 [session_controller() commitPendingItem]; 231 navigation_manager()->CommitPendingItem();
208 navigation_manager()->AddPendingItem( 232 navigation_manager()->AddPendingItem(
209 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, 233 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED,
210 web::NavigationInitiationType::USER_INITIATED, 234 web::NavigationInitiationType::USER_INITIATED,
211 web::NavigationManager::UserAgentOverrideOption::INHERIT); 235 web::NavigationManager::UserAgentOverrideOption::INHERIT);
212 [session_controller() commitPendingItem]; 236 navigation_manager()->CommitPendingItem();
213 237
214 EXPECT_TRUE(navigation_manager()->CanGoBack()); 238 EXPECT_TRUE(navigation_manager()->CanGoBack());
215 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 239 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
216 240
217 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 241 navigation_manager()->GoToIndex(1);
218 EXPECT_TRUE(navigation_manager()->CanGoBack()); 242 EXPECT_TRUE(navigation_manager()->CanGoBack());
219 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 243 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
220 244
221 [session_controller() goToItemAtIndex:0 discardNonCommittedItems:NO]; 245 navigation_manager()->GoToIndex(0);
222 EXPECT_FALSE(navigation_manager()->CanGoBack()); 246 EXPECT_FALSE(navigation_manager()->CanGoBack());
223 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 247 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
224 248
225 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 249 navigation_manager()->GoToIndex(1);
226 EXPECT_TRUE(navigation_manager()->CanGoBack()); 250 EXPECT_TRUE(navigation_manager()->CanGoBack());
227 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 251 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
228 } 252 }
229 253
230 // Tests that going forward or positive offset is not possible without a 254 // Tests that going forward or positive offset is not possible without a
231 // committed item. 255 // committed item.
232 TEST_P(NavigationManagerTest, CanGoForwardWithoutCommitedItem) { 256 TEST_P(NavigationManagerTest, CanGoForwardWithoutCommitedItem) {
233 EXPECT_FALSE(navigation_manager()->CanGoForward()); 257 EXPECT_FALSE(navigation_manager()->CanGoForward());
234 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 258 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
235 } 259 }
236 260
237 // Tests that going forward or positive offset is not possible if there is ony 261 // Tests that going forward or positive offset is not possible if there is ony
238 // one committed item and no transient item. 262 // one committed item and no transient item.
239 TEST_P(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { 263 TEST_P(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) {
240 navigation_manager()->AddPendingItem( 264 navigation_manager()->AddPendingItem(
241 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 265 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
242 web::NavigationInitiationType::USER_INITIATED, 266 web::NavigationInitiationType::USER_INITIATED,
243 web::NavigationManager::UserAgentOverrideOption::INHERIT); 267 web::NavigationManager::UserAgentOverrideOption::INHERIT);
244 [session_controller() commitPendingItem]; 268 navigation_manager()->CommitPendingItem();
245 269
246 EXPECT_FALSE(navigation_manager()->CanGoForward()); 270 EXPECT_FALSE(navigation_manager()->CanGoForward());
247 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 271 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
248 } 272 }
249 273
250 // Tests going forward possibility with multiple committed items. 274 // Tests going forward possibility with multiple committed items.
251 TEST_P(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { 275 TEST_P(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) {
252 navigation_manager()->AddPendingItem( 276 navigation_manager()->AddPendingItem(
253 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 277 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
254 web::NavigationInitiationType::USER_INITIATED, 278 web::NavigationInitiationType::USER_INITIATED,
255 web::NavigationManager::UserAgentOverrideOption::INHERIT); 279 web::NavigationManager::UserAgentOverrideOption::INHERIT);
256 [session_controller() commitPendingItem]; 280 navigation_manager()->CommitPendingItem();
257 navigation_manager()->AddPendingItem( 281 navigation_manager()->AddPendingItem(
258 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 282 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
259 web::NavigationInitiationType::USER_INITIATED, 283 web::NavigationInitiationType::USER_INITIATED,
260 web::NavigationManager::UserAgentOverrideOption::INHERIT); 284 web::NavigationManager::UserAgentOverrideOption::INHERIT);
261 [session_controller() commitPendingItem]; 285 navigation_manager()->CommitPendingItem();
262 navigation_manager()->AddPendingItem( 286 navigation_manager()->AddPendingItem(
263 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, 287 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED,
264 web::NavigationInitiationType::USER_INITIATED, 288 web::NavigationInitiationType::USER_INITIATED,
265 web::NavigationManager::UserAgentOverrideOption::INHERIT); 289 web::NavigationManager::UserAgentOverrideOption::INHERIT);
266 [session_controller() commitPendingItem]; 290 navigation_manager()->CommitPendingItem();
267 291
268 EXPECT_FALSE(navigation_manager()->CanGoForward()); 292 EXPECT_FALSE(navigation_manager()->CanGoForward());
269 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 293 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
270 294
271 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 295 navigation_manager()->GoToIndex(1);
272 EXPECT_TRUE(navigation_manager()->CanGoForward()); 296 EXPECT_TRUE(navigation_manager()->CanGoForward());
273 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 297 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
274 298
275 [session_controller() goToItemAtIndex:0 discardNonCommittedItems:NO]; 299 navigation_manager()->GoToIndex(0);
276 EXPECT_TRUE(navigation_manager()->CanGoForward()); 300 EXPECT_TRUE(navigation_manager()->CanGoForward());
277 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 301 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
278 302
279 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 303 navigation_manager()->GoToIndex(1);
280 EXPECT_TRUE(navigation_manager()->CanGoForward()); 304 EXPECT_TRUE(navigation_manager()->CanGoForward());
281 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 305 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
282 306
283 [session_controller() goToItemAtIndex:2 discardNonCommittedItems:NO]; 307 navigation_manager()->GoToIndex(2);
284 EXPECT_FALSE(navigation_manager()->CanGoForward()); 308 EXPECT_FALSE(navigation_manager()->CanGoForward());
285 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 309 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
286 } 310 }
287 311
288 // Tests CanGoToOffset API for positive, negative and zero delta. Tested 312 // Tests CanGoToOffset API for positive, negative and zero delta. Tested
289 // navigation manager will have redirect entries to make sure they are 313 // navigation manager will have redirect entries to make sure they are
290 // appropriately skipped. 314 // appropriately skipped.
291 TEST_P(NavigationManagerTest, OffsetsWithoutPendingIndex) { 315 TEST_P(NavigationManagerTest, OffsetsWithoutPendingIndex) {
292 navigation_manager()->AddPendingItem( 316 navigation_manager()->AddPendingItem(
293 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK, 317 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK,
294 web::NavigationInitiationType::USER_INITIATED, 318 web::NavigationInitiationType::USER_INITIATED,
295 web::NavigationManager::UserAgentOverrideOption::INHERIT); 319 web::NavigationManager::UserAgentOverrideOption::INHERIT);
296 [session_controller() commitPendingItem]; 320 navigation_manager()->CommitPendingItem();
297 navigation_manager()->AddPendingItem( 321 navigation_manager()->AddPendingItem(
298 GURL("http://www.url.com/redirect"), Referrer(), 322 GURL("http://www.url.com/redirect"), Referrer(),
299 ui::PAGE_TRANSITION_CLIENT_REDIRECT, 323 ui::PAGE_TRANSITION_CLIENT_REDIRECT,
300 web::NavigationInitiationType::USER_INITIATED, 324 web::NavigationInitiationType::USER_INITIATED,
301 web::NavigationManager::UserAgentOverrideOption::INHERIT); 325 web::NavigationManager::UserAgentOverrideOption::INHERIT);
302 [session_controller() commitPendingItem]; 326 navigation_manager()->CommitPendingItem();
303 navigation_manager()->AddPendingItem( 327 navigation_manager()->AddPendingItem(
304 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK, 328 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK,
305 web::NavigationInitiationType::USER_INITIATED, 329 web::NavigationInitiationType::USER_INITIATED,
306 web::NavigationManager::UserAgentOverrideOption::INHERIT); 330 web::NavigationManager::UserAgentOverrideOption::INHERIT);
307 [session_controller() commitPendingItem]; 331 navigation_manager()->CommitPendingItem();
308 navigation_manager()->AddPendingItem( 332 navigation_manager()->AddPendingItem(
309 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, 333 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK,
310 web::NavigationInitiationType::USER_INITIATED, 334 web::NavigationInitiationType::USER_INITIATED,
311 web::NavigationManager::UserAgentOverrideOption::INHERIT); 335 web::NavigationManager::UserAgentOverrideOption::INHERIT);
312 [session_controller() commitPendingItem]; 336 navigation_manager()->CommitPendingItem();
313 navigation_manager()->AddPendingItem( 337 navigation_manager()->AddPendingItem(
314 GURL("http://www.url.com/redirect"), Referrer(), 338 GURL("http://www.url.com/redirect"), Referrer(),
315 ui::PAGE_TRANSITION_CLIENT_REDIRECT, 339 ui::PAGE_TRANSITION_CLIENT_REDIRECT,
316 web::NavigationInitiationType::USER_INITIATED, 340 web::NavigationInitiationType::USER_INITIATED,
317 web::NavigationManager::UserAgentOverrideOption::INHERIT); 341 web::NavigationManager::UserAgentOverrideOption::INHERIT);
318 [session_controller() commitPendingItem]; 342 navigation_manager()->CommitPendingItem();
319 ASSERT_EQ(5, navigation_manager()->GetItemCount()); 343 ASSERT_EQ(5, navigation_manager()->GetItemCount());
320 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); 344 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex());
321 345
322 // Go to entry at index 1 and test API from that state. 346 // Go to entry at index 1 and test API from that state.
323 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 347 navigation_manager()->GoToIndex(1);
324 ASSERT_EQ(1, navigation_manager()->GetLastCommittedItemIndex()); 348 ASSERT_EQ(1, navigation_manager()->GetLastCommittedItemIndex());
325 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 349 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
326 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 350 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
327 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); 351 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1));
328 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); 352 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2));
329 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2)); 353 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2));
330 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 354 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
331 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); 355 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
332 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); 356 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2));
333 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2)); 357 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2));
334 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); 358 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3));
335 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3)); 359 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3));
336 // Test with large values. 360 // Test with large values.
337 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 361 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
338 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 362 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
339 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 363 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
340 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 364 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
341 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 365 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
342 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN)); 366 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN));
343 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000)); 367 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000));
344 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000)); 368 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000));
345 369
346 // Go to entry at index 2 and test API from that state. 370 // Go to entry at index 2 and test API from that state.
347 [session_controller() goToItemAtIndex:2 discardNonCommittedItems:NO]; 371 navigation_manager()->GoToIndex(2);
348 ASSERT_EQ(2, navigation_manager()->GetLastCommittedItemIndex()); 372 ASSERT_EQ(2, navigation_manager()->GetLastCommittedItemIndex());
349 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 373 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
350 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 374 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
351 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1)); 375 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1));
352 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); 376 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2));
353 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2)); 377 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2));
354 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 378 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
355 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1)); 379 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1));
356 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); 380 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2));
357 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2)); 381 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2));
358 // Test with large values. 382 // Test with large values.
359 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 383 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
360 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 384 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
361 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 385 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
362 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 386 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
363 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 387 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
364 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN)); 388 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN));
365 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000)); 389 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000));
366 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000)); 390 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000));
367 391
368 // Go to entry at index 4 and test API from that state. 392 // Go to entry at index 4 and test API from that state.
369 [session_controller() goToItemAtIndex:4 discardNonCommittedItems:NO]; 393 navigation_manager()->GoToIndex(4);
370 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); 394 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex());
371 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 395 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
372 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 396 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
373 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1)); 397 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1));
374 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); 398 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2));
375 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2)); 399 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2));
376 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 400 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
377 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); 401 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1));
378 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); 402 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2));
379 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); 403 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2));
380 // Test with large values. 404 // Test with large values.
381 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 405 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
382 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 406 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
383 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 407 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
384 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 408 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
385 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 409 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
386 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); 410 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN));
387 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); 411 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000));
388 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); 412 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000));
389 413
390 // Test with existing transient entry. 414 // Test with existing transient entry.
391 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; 415 navigation_manager()->AddTransientItem(GURL("http://www.url.com"));
392 ASSERT_EQ(5, navigation_manager()->GetItemCount()); 416 ASSERT_EQ(5, navigation_manager()->GetItemCount());
393 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); 417 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex());
394 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 418 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
395 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 419 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
396 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); 420 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1));
397 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); 421 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2));
398 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); 422 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2));
399 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); 423 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3));
400 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); 424 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3));
401 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 425 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
402 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); 426 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1));
403 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); 427 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2));
404 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); 428 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2));
405 // Test with large values. 429 // Test with large values.
406 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 430 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
407 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 431 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
408 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 432 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
409 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 433 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
410 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 434 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
411 EXPECT_EQ(-2147483645, navigation_manager()->GetIndexForOffset(INT_MIN)); 435 EXPECT_EQ(-2147483645, navigation_manager()->GetIndexForOffset(INT_MIN));
412 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); 436 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000));
413 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); 437 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000));
414 438
415 // Now test with pending item index. 439 // Now test with pending item index.
416 [session_controller() discardNonCommittedItems]; 440 navigation_manager()->DiscardNonCommittedItems();
417 441
418 // Set pending index to 1 and test API from that state. 442 // Set pending index to 1 and test API from that state.
419 [session_controller() setPendingItemIndex:1]; 443 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
444 [session_controller() setPendingItemIndex:1];
445 }
420 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); 446 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex());
421 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); 447 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
422 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); 448 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1));
423 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); 449 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1));
424 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); 450 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2));
425 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2)); 451 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2));
426 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 452 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
427 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); 453 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
428 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); 454 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2));
429 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2)); 455 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2));
430 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); 456 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3));
431 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3)); 457 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3));
432 // Test with large values. 458 // Test with large values.
433 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 459 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
434 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 460 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
435 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 461 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
436 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 462 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
437 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 463 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
438 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN)); 464 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN));
439 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000)); 465 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000));
440 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000)); 466 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000));
441 467
442 // Set pending index to 2 and test API from that state. 468 // Set pending index to 2 and test API from that state.
443 [session_controller() setPendingItemIndex:2]; 469 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
470 [session_controller() setPendingItemIndex:2];
471 }
444 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); 472 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex());
445 ASSERT_EQ(2, navigation_manager()->GetPendingItemIndex()); 473 ASSERT_EQ(2, navigation_manager()->GetPendingItemIndex());
446 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 474 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
447 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1)); 475 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1));
448 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); 476 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2));
449 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2)); 477 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2));
450 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); 478 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1));
451 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1)); 479 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1));
452 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); 480 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2));
453 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2)); 481 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2));
454 // Test with large values. 482 // Test with large values.
455 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 483 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
456 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 484 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
457 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 485 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
458 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 486 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
459 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 487 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
460 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN)); 488 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN));
461 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000)); 489 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000));
462 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000)); 490 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000));
463 491
464 // Set pending index to 4 and committed entry to 1 and test. 492 // Set pending index to 4 and committed entry to 1 and test.
465 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 493 navigation_manager()->GoToIndex(1);
466 [session_controller() setPendingItemIndex:4]; 494 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
495 [session_controller() setPendingItemIndex:4];
496 }
467 ASSERT_EQ(1, navigation_manager()->GetLastCommittedItemIndex()); 497 ASSERT_EQ(1, navigation_manager()->GetLastCommittedItemIndex());
468 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex()); 498 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex());
469 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 499 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
470 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1)); 500 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1));
471 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); 501 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2));
472 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2)); 502 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2));
473 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 503 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
474 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); 504 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1));
475 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); 505 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2));
476 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); 506 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2));
477 // Test with large values. 507 // Test with large values.
478 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); 508 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX));
479 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); 509 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN));
480 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); 510 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000));
481 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); 511 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000));
482 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); 512 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX));
483 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); 513 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN));
484 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); 514 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000));
485 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); 515 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000));
486 516
487 // Test with existing transient entry in the end of the stack. 517 // Test with existing transient entry in the end of the stack.
488 [session_controller() goToItemAtIndex:4 discardNonCommittedItems:NO]; 518 navigation_manager()->GoToIndex(4);
489 [session_controller() setPendingItemIndex:-1]; 519 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
490 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; 520 [session_controller() setPendingItemIndex:-1];
521 }
522 navigation_manager()->AddTransientItem(GURL("http://www.url.com"));
491 ASSERT_EQ(5, navigation_manager()->GetItemCount()); 523 ASSERT_EQ(5, navigation_manager()->GetItemCount());
492 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); 524 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex());
493 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); 525 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex());
494 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); 526 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1));
495 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); 527 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1));
496 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); 528 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2));
497 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); 529 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2));
498 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); 530 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3));
499 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); 531 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3));
500 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); 532 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1));
(...skipping 14 matching lines...) Expand all
515 // Tests offsets with pending transient entries (specifically gong back and 547 // Tests offsets with pending transient entries (specifically gong back and
516 // forward from a pending navigation entry that is added to the middle of the 548 // forward from a pending navigation entry that is added to the middle of the
517 // navigation stack). 549 // navigation stack).
518 TEST_P(NavigationManagerTest, OffsetsWithPendingTransientEntry) { 550 TEST_P(NavigationManagerTest, OffsetsWithPendingTransientEntry) {
519 // Create a transient item in the middle of the navigation stack and go back 551 // Create a transient item in the middle of the navigation stack and go back
520 // to it (pending index is 1, current index is 2). 552 // to it (pending index is 1, current index is 2).
521 navigation_manager()->AddPendingItem( 553 navigation_manager()->AddPendingItem(
522 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK, 554 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK,
523 web::NavigationInitiationType::USER_INITIATED, 555 web::NavigationInitiationType::USER_INITIATED,
524 web::NavigationManager::UserAgentOverrideOption::INHERIT); 556 web::NavigationManager::UserAgentOverrideOption::INHERIT);
525 [session_controller() commitPendingItem]; 557 navigation_manager()->CommitPendingItem();
526 navigation_manager()->AddPendingItem( 558 navigation_manager()->AddPendingItem(
527 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK, 559 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK,
528 web::NavigationInitiationType::USER_INITIATED, 560 web::NavigationInitiationType::USER_INITIATED,
529 web::NavigationManager::UserAgentOverrideOption::INHERIT); 561 web::NavigationManager::UserAgentOverrideOption::INHERIT);
530 [session_controller() commitPendingItem]; 562 navigation_manager()->CommitPendingItem();
531 navigation_manager()->AddPendingItem( 563 navigation_manager()->AddPendingItem(
532 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, 564 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK,
533 web::NavigationInitiationType::USER_INITIATED, 565 web::NavigationInitiationType::USER_INITIATED,
534 web::NavigationManager::UserAgentOverrideOption::INHERIT); 566 web::NavigationManager::UserAgentOverrideOption::INHERIT);
535 [session_controller() commitPendingItem]; 567 navigation_manager()->CommitPendingItem();
536 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; 568 navigation_manager()->AddTransientItem(GURL("http://www.url.com/1"));
537 [session_controller() setPendingItemIndex:1]; 569 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
570 [session_controller() setPendingItemIndex:1];
571 }
538 572
539 ASSERT_EQ(3, navigation_manager()->GetItemCount()); 573 ASSERT_EQ(3, navigation_manager()->GetItemCount());
540 ASSERT_EQ(2, navigation_manager()->GetLastCommittedItemIndex()); 574 ASSERT_EQ(2, navigation_manager()->GetLastCommittedItemIndex());
541 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); 575 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
542 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); 576 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
543 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); 577 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1));
544 578
545 // Now go forward to that middle transient item (pending index is 1, 579 // Now go forward to that middle transient item (pending index is 1,
546 // current index is 0). 580 // current index is 0).
547 [session_controller() goToItemAtIndex:0 discardNonCommittedItems:NO]; 581 navigation_manager()->GoToIndex(0);
548 [session_controller() setPendingItemIndex:1]; 582 if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
583 [session_controller() setPendingItemIndex:1];
584 }
549 ASSERT_EQ(3, navigation_manager()->GetItemCount()); 585 ASSERT_EQ(3, navigation_manager()->GetItemCount());
550 ASSERT_EQ(0, navigation_manager()->GetLastCommittedItemIndex()); 586 ASSERT_EQ(0, navigation_manager()->GetLastCommittedItemIndex());
551 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); 587 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex());
552 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); 588 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1));
553 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); 589 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1));
554 } 590 }
555 591
556 // Tests that when given a pending item, adding a new pending item replaces the 592 // Tests that when given a pending item, adding a new pending item replaces the
557 // existing pending item if their URLs are different. 593 // existing pending item if their URLs are different.
558 TEST_P(NavigationManagerTest, ReplacePendingItemIfDiffernetURL) { 594 TEST_P(NavigationManagerTest, ReplacePendingItemIfDiffernetURL) {
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 } 747 }
712 748
713 // Tests that when the last committed item exists, adding a pending item 749 // Tests that when the last committed item exists, adding a pending item
714 // succeeds if the new item's URL is different from the last committed item. 750 // succeeds if the new item's URL is different from the last committed item.
715 TEST_P(NavigationManagerTest, AddPendingItemIfDiffernetURL) { 751 TEST_P(NavigationManagerTest, AddPendingItemIfDiffernetURL) {
716 GURL existing_url = GURL("http://www.existing.com"); 752 GURL existing_url = GURL("http://www.existing.com");
717 navigation_manager()->AddPendingItem( 753 navigation_manager()->AddPendingItem(
718 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 754 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
719 web::NavigationInitiationType::USER_INITIATED, 755 web::NavigationInitiationType::USER_INITIATED,
720 web::NavigationManager::UserAgentOverrideOption::INHERIT); 756 web::NavigationManager::UserAgentOverrideOption::INHERIT);
721 [session_controller() commitPendingItem]; 757 navigation_manager()->CommitPendingItem();
722 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 758 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
723 EXPECT_EQ(existing_url, 759 EXPECT_EQ(existing_url,
724 navigation_manager()->GetLastCommittedItem()->GetURL()); 760 navigation_manager()->GetLastCommittedItem()->GetURL());
725 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 761 EXPECT_EQ(1, navigation_manager()->GetItemCount());
726 762
727 GURL new_url = GURL("http://www.new.com"); 763 GURL new_url = GURL("http://www.new.com");
728 navigation_manager()->AddPendingItem( 764 navigation_manager()->AddPendingItem(
729 new_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 765 new_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
730 web::NavigationInitiationType::USER_INITIATED, 766 web::NavigationInitiationType::USER_INITIATED,
731 web::NavigationManager::UserAgentOverrideOption::INHERIT); 767 web::NavigationManager::UserAgentOverrideOption::INHERIT);
732 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 768 ASSERT_TRUE(navigation_manager()->GetPendingItem());
733 EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL()); 769 EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL());
734 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 770 EXPECT_EQ(1, navigation_manager()->GetItemCount());
735 } 771 }
736 772
737 // Tests that when the last committed item exists, adding a pending item with 773 // Tests that when the last committed item exists, adding a pending item with
738 // the same URL fails if the new item is not form submission. 774 // the same URL fails if the new item is not form submission.
739 TEST_P(NavigationManagerTest, NotAddSameUrlPendingItemIfNotFormSubmission) { 775 TEST_P(NavigationManagerTest, NotAddSameUrlPendingItemIfNotFormSubmission) {
740 GURL existing_url = GURL("http://www.existing.com"); 776 GURL existing_url = GURL("http://www.existing.com");
741 navigation_manager()->AddPendingItem( 777 navigation_manager()->AddPendingItem(
742 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 778 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
743 web::NavigationInitiationType::USER_INITIATED, 779 web::NavigationInitiationType::USER_INITIATED,
744 web::NavigationManager::UserAgentOverrideOption::INHERIT); 780 web::NavigationManager::UserAgentOverrideOption::INHERIT);
745 [session_controller() commitPendingItem]; 781 navigation_manager()->CommitPendingItem();
746 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 782 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
747 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 783 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
748 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), 784 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
749 ui::PAGE_TRANSITION_TYPED)); 785 ui::PAGE_TRANSITION_TYPED));
750 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 786 EXPECT_FALSE(navigation_manager()->GetPendingItem());
751 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 787 EXPECT_EQ(1, navigation_manager()->GetItemCount());
752 788
753 navigation_manager()->AddPendingItem( 789 navigation_manager()->AddPendingItem(
754 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, 790 existing_url, Referrer(), ui::PAGE_TRANSITION_LINK,
755 web::NavigationInitiationType::USER_INITIATED, 791 web::NavigationInitiationType::USER_INITIATED,
756 web::NavigationManager::UserAgentOverrideOption::INHERIT); 792 web::NavigationManager::UserAgentOverrideOption::INHERIT);
757 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 793 EXPECT_FALSE(navigation_manager()->GetPendingItem());
758 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 794 EXPECT_EQ(1, navigation_manager()->GetItemCount());
759 } 795 }
760 796
761 // Tests that when the last committed item exists, adding a pending item with 797 // Tests that when the last committed item exists, adding a pending item with
762 // the same URL succeeds if the new item is a form submission while the last 798 // the same URL succeeds if the new item is a form submission while the last
763 // committed item is not. 799 // committed item is not.
764 TEST_P(NavigationManagerTest, AddSameUrlPendingItemIfFormSubmission) { 800 TEST_P(NavigationManagerTest, AddSameUrlPendingItemIfFormSubmission) {
765 GURL existing_url = GURL("http://www.existing.com"); 801 GURL existing_url = GURL("http://www.existing.com");
766 navigation_manager()->AddPendingItem( 802 navigation_manager()->AddPendingItem(
767 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 803 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
768 web::NavigationInitiationType::USER_INITIATED, 804 web::NavigationInitiationType::USER_INITIATED,
769 web::NavigationManager::UserAgentOverrideOption::INHERIT); 805 web::NavigationManager::UserAgentOverrideOption::INHERIT);
770 [session_controller() commitPendingItem]; 806 navigation_manager()->CommitPendingItem();
771 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 807 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
772 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 808 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
773 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), 809 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
774 ui::PAGE_TRANSITION_TYPED)); 810 ui::PAGE_TRANSITION_TYPED));
775 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 811 EXPECT_FALSE(navigation_manager()->GetPendingItem());
776 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 812 EXPECT_EQ(1, navigation_manager()->GetItemCount());
777 813
778 // Add if new transition is a form submission. 814 // Add if new transition is a form submission.
779 navigation_manager()->AddPendingItem( 815 navigation_manager()->AddPendingItem(
780 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, 816 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
781 web::NavigationInitiationType::USER_INITIATED, 817 web::NavigationInitiationType::USER_INITIATED,
782 web::NavigationManager::UserAgentOverrideOption::INHERIT); 818 web::NavigationManager::UserAgentOverrideOption::INHERIT);
783 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 819 ASSERT_TRUE(navigation_manager()->GetPendingItem());
784 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 820 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
785 navigation_manager()->GetPendingItem()->GetTransitionType(), 821 navigation_manager()->GetPendingItem()->GetTransitionType(),
786 ui::PAGE_TRANSITION_FORM_SUBMIT)); 822 ui::PAGE_TRANSITION_FORM_SUBMIT));
787 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 823 EXPECT_EQ(1, navigation_manager()->GetItemCount());
788 } 824 }
789 825
790 // Tests that when the last committed item exists, adding a pending item with 826 // Tests that when the last committed item exists, adding a pending item with
791 // the same URL fails if both the new item and the last committed item are form 827 // the same URL fails if both the new item and the last committed item are form
792 // submissions. 828 // submissions.
793 TEST_P(NavigationManagerTest, 829 TEST_P(NavigationManagerTest,
794 NotAddSameUrlPendingItemIfDuplicateFormSubmission) { 830 NotAddSameUrlPendingItemIfDuplicateFormSubmission) {
795 GURL existing_url = GURL("http://www.existing.com"); 831 GURL existing_url = GURL("http://www.existing.com");
796 navigation_manager()->AddPendingItem( 832 navigation_manager()->AddPendingItem(
797 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, 833 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
798 web::NavigationInitiationType::USER_INITIATED, 834 web::NavigationInitiationType::USER_INITIATED,
799 web::NavigationManager::UserAgentOverrideOption::INHERIT); 835 web::NavigationManager::UserAgentOverrideOption::INHERIT);
800 [session_controller() commitPendingItem]; 836 navigation_manager()->CommitPendingItem();
801 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 837 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
802 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 838 EXPECT_FALSE(navigation_manager()->GetPendingItem());
803 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 839 EXPECT_EQ(1, navigation_manager()->GetItemCount());
804 840
805 navigation_manager()->AddPendingItem( 841 navigation_manager()->AddPendingItem(
806 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, 842 existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT,
807 web::NavigationInitiationType::USER_INITIATED, 843 web::NavigationInitiationType::USER_INITIATED,
808 web::NavigationManager::UserAgentOverrideOption::INHERIT); 844 web::NavigationManager::UserAgentOverrideOption::INHERIT);
809 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 845 EXPECT_FALSE(navigation_manager()->GetPendingItem());
810 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 846 EXPECT_EQ(1, navigation_manager()->GetItemCount());
811 } 847 }
812 848
813 // Tests that when the last committed item exists, adding a pending item with 849 // Tests that when the last committed item exists, adding a pending item with
814 // the same URL fails if the user agent override option is INHERIT. 850 // the same URL fails if the user agent override option is INHERIT.
815 TEST_P(NavigationManagerTest, NotAddSameUrlPendingItemIfOverrideInherit) { 851 TEST_P(NavigationManagerTest, NotAddSameUrlPendingItemIfOverrideInherit) {
816 GURL existing_url = GURL("http://www.existing.com"); 852 GURL existing_url = GURL("http://www.existing.com");
817 navigation_manager()->AddPendingItem( 853 navigation_manager()->AddPendingItem(
818 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 854 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
819 web::NavigationInitiationType::USER_INITIATED, 855 web::NavigationInitiationType::USER_INITIATED,
820 web::NavigationManager::UserAgentOverrideOption::INHERIT); 856 web::NavigationManager::UserAgentOverrideOption::INHERIT);
821 [session_controller() commitPendingItem]; 857 navigation_manager()->CommitPendingItem();
822 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 858 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
823 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 859 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
824 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), 860 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
825 ui::PAGE_TRANSITION_TYPED)); 861 ui::PAGE_TRANSITION_TYPED));
826 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 862 EXPECT_EQ(1, navigation_manager()->GetItemCount());
827 863
828 navigation_manager()->AddPendingItem( 864 navigation_manager()->AddPendingItem(
829 existing_url, Referrer(), ui::PAGE_TRANSITION_RELOAD, 865 existing_url, Referrer(), ui::PAGE_TRANSITION_RELOAD,
830 web::NavigationInitiationType::USER_INITIATED, 866 web::NavigationInitiationType::USER_INITIATED,
831 web::NavigationManager::UserAgentOverrideOption::INHERIT); 867 web::NavigationManager::UserAgentOverrideOption::INHERIT);
832 EXPECT_FALSE(navigation_manager()->GetPendingItem()); 868 EXPECT_FALSE(navigation_manager()->GetPendingItem());
833 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 869 EXPECT_EQ(1, navigation_manager()->GetItemCount());
834 } 870 }
835 871
836 // Tests that when the last committed item exists, adding a pending item with 872 // Tests that when the last committed item exists, adding a pending item with
837 // the same URL succeeds if the user agent override option is DESKTOP. 873 // the same URL succeeds if the user agent override option is DESKTOP.
838 TEST_P(NavigationManagerTest, AddSameUrlPendingItemIfOverrideDesktop) { 874 TEST_P(NavigationManagerTest, AddSameUrlPendingItemIfOverrideDesktop) {
839 GURL existing_url = GURL("http://www.existing.com"); 875 GURL existing_url = GURL("http://www.existing.com");
840 navigation_manager()->AddPendingItem( 876 navigation_manager()->AddPendingItem(
841 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 877 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
842 web::NavigationInitiationType::USER_INITIATED, 878 web::NavigationInitiationType::USER_INITIATED,
843 web::NavigationManager::UserAgentOverrideOption::MOBILE); 879 web::NavigationManager::UserAgentOverrideOption::MOBILE);
844 [session_controller() commitPendingItem]; 880 navigation_manager()->CommitPendingItem();
845 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 881 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
846 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 882 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
847 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), 883 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
848 ui::PAGE_TRANSITION_TYPED)); 884 ui::PAGE_TRANSITION_TYPED));
849 EXPECT_EQ(web::UserAgentType::MOBILE, 885 EXPECT_EQ(web::UserAgentType::MOBILE,
850 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 886 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
851 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 887 EXPECT_EQ(1, navigation_manager()->GetItemCount());
852 888
853 navigation_manager()->AddPendingItem( 889 navigation_manager()->AddPendingItem(
854 existing_url, Referrer(), ui::PAGE_TRANSITION_RELOAD, 890 existing_url, Referrer(), ui::PAGE_TRANSITION_RELOAD,
855 web::NavigationInitiationType::USER_INITIATED, 891 web::NavigationInitiationType::USER_INITIATED,
856 web::NavigationManager::UserAgentOverrideOption::DESKTOP); 892 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
857 893
858 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 894 ASSERT_TRUE(navigation_manager()->GetPendingItem());
859 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 895 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
860 navigation_manager()->GetPendingItem()->GetTransitionType(), 896 navigation_manager()->GetPendingItem()->GetTransitionType(),
861 ui::PAGE_TRANSITION_RELOAD)); 897 ui::PAGE_TRANSITION_RELOAD));
862 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 898 EXPECT_EQ(1, navigation_manager()->GetItemCount());
863 } 899 }
864 900
865 // Tests that when the last committed item exists, adding a pending item with 901 // Tests that when the last committed item exists, adding a pending item with
866 // the same URL succeeds if the user agent override option is MOBILE. 902 // the same URL succeeds if the user agent override option is MOBILE.
867 TEST_P(NavigationManagerTest, AddSameUrlPendingItemIfOverrideMobile) { 903 TEST_P(NavigationManagerTest, AddSameUrlPendingItemIfOverrideMobile) {
868 GURL existing_url = GURL("http://www.existing.com"); 904 GURL existing_url = GURL("http://www.existing.com");
869 navigation_manager()->AddPendingItem( 905 navigation_manager()->AddPendingItem(
870 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, 906 existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED,
871 web::NavigationInitiationType::USER_INITIATED, 907 web::NavigationInitiationType::USER_INITIATED,
872 web::NavigationManager::UserAgentOverrideOption::DESKTOP); 908 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
873 [session_controller() commitPendingItem]; 909 navigation_manager()->CommitPendingItem();
874 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 910 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
875 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 911 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
876 navigation_manager()->GetLastCommittedItem()->GetTransitionType(), 912 navigation_manager()->GetLastCommittedItem()->GetTransitionType(),
877 ui::PAGE_TRANSITION_TYPED)); 913 ui::PAGE_TRANSITION_TYPED));
878 EXPECT_EQ(web::UserAgentType::DESKTOP, 914 EXPECT_EQ(web::UserAgentType::DESKTOP,
879 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 915 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
880 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 916 EXPECT_EQ(1, navigation_manager()->GetItemCount());
881 917
882 navigation_manager()->AddPendingItem( 918 navigation_manager()->AddPendingItem(
883 existing_url, Referrer(), ui::PAGE_TRANSITION_RELOAD, 919 existing_url, Referrer(), ui::PAGE_TRANSITION_RELOAD,
884 web::NavigationInitiationType::USER_INITIATED, 920 web::NavigationInitiationType::USER_INITIATED,
885 web::NavigationManager::UserAgentOverrideOption::MOBILE); 921 web::NavigationManager::UserAgentOverrideOption::MOBILE);
886 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 922 ASSERT_TRUE(navigation_manager()->GetPendingItem());
887 EXPECT_TRUE(ui::PageTransitionCoreTypeIs( 923 EXPECT_TRUE(ui::PageTransitionCoreTypeIs(
888 navigation_manager()->GetPendingItem()->GetTransitionType(), 924 navigation_manager()->GetPendingItem()->GetTransitionType(),
889 ui::PAGE_TRANSITION_RELOAD)); 925 ui::PAGE_TRANSITION_RELOAD));
890 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 926 EXPECT_EQ(1, navigation_manager()->GetItemCount());
891 } 927 }
892 928
893 // Tests that desktop user agent can be enforced to use for next pending item 929 // Tests that desktop user agent can be enforced to use for next pending item
894 // when UserAgentOverrideOption is DESKTOP. 930 // when UserAgentOverrideOption is DESKTOP.
895 TEST_P(NavigationManagerTest, OverrideUserAgentWithDesktop) { 931 TEST_P(NavigationManagerTest, OverrideUserAgentWithDesktop) {
896 navigation_manager()->AddPendingItem( 932 navigation_manager()->AddPendingItem(
897 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 933 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
898 web::NavigationInitiationType::USER_INITIATED, 934 web::NavigationInitiationType::USER_INITIATED,
899 web::NavigationManager::UserAgentOverrideOption::MOBILE); 935 web::NavigationManager::UserAgentOverrideOption::MOBILE);
900 [session_controller() commitPendingItem]; 936 navigation_manager()->CommitPendingItem();
901 NavigationItem* last_committed_item = 937 NavigationItem* last_committed_item =
902 navigation_manager()->GetLastCommittedItem(); 938 navigation_manager()->GetLastCommittedItem();
903 EXPECT_EQ(UserAgentType::MOBILE, last_committed_item->GetUserAgentType()); 939 EXPECT_EQ(UserAgentType::MOBILE, last_committed_item->GetUserAgentType());
904 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 940 EXPECT_EQ(1, navigation_manager()->GetItemCount());
905 941
906 navigation_manager()->AddPendingItem( 942 navigation_manager()->AddPendingItem(
907 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 943 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
908 web::NavigationInitiationType::USER_INITIATED, 944 web::NavigationInitiationType::USER_INITIATED,
909 web::NavigationManager::UserAgentOverrideOption::DESKTOP); 945 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
910 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 946 ASSERT_TRUE(navigation_manager()->GetPendingItem());
911 EXPECT_EQ(UserAgentType::DESKTOP, 947 EXPECT_EQ(UserAgentType::DESKTOP,
912 navigation_manager()->GetPendingItem()->GetUserAgentType()); 948 navigation_manager()->GetPendingItem()->GetUserAgentType());
913 EXPECT_EQ(1, navigation_manager()->GetItemCount()); 949 EXPECT_EQ(1, navigation_manager()->GetItemCount());
914 } 950 }
915 951
916 // Tests that mobile user agent can be enforced to use for next pending item 952 // Tests that mobile user agent can be enforced to use for next pending item
917 // when UserAgentOverrideOption is MOBILE. 953 // when UserAgentOverrideOption is MOBILE.
918 TEST_P(NavigationManagerTest, OverrideUserAgentWithMobile) { 954 TEST_P(NavigationManagerTest, OverrideUserAgentWithMobile) {
919 navigation_manager()->AddPendingItem( 955 navigation_manager()->AddPendingItem(
920 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 956 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
921 web::NavigationInitiationType::USER_INITIATED, 957 web::NavigationInitiationType::USER_INITIATED,
922 web::NavigationManager::UserAgentOverrideOption::INHERIT); 958 web::NavigationManager::UserAgentOverrideOption::INHERIT);
923 [session_controller() commitPendingItem]; 959 navigation_manager()->CommitPendingItem();
924 NavigationItem* last_committed_item = 960 NavigationItem* last_committed_item =
925 navigation_manager()->GetLastCommittedItem(); 961 navigation_manager()->GetLastCommittedItem();
926 last_committed_item->SetUserAgentType(UserAgentType::DESKTOP); 962 last_committed_item->SetUserAgentType(UserAgentType::DESKTOP);
927 EXPECT_EQ(UserAgentType::DESKTOP, last_committed_item->GetUserAgentType()); 963 EXPECT_EQ(UserAgentType::DESKTOP, last_committed_item->GetUserAgentType());
928 964
929 navigation_manager()->AddPendingItem( 965 navigation_manager()->AddPendingItem(
930 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 966 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
931 web::NavigationInitiationType::USER_INITIATED, 967 web::NavigationInitiationType::USER_INITIATED,
932 web::NavigationManager::UserAgentOverrideOption::MOBILE); 968 web::NavigationManager::UserAgentOverrideOption::MOBILE);
933 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 969 ASSERT_TRUE(navigation_manager()->GetPendingItem());
934 EXPECT_EQ(UserAgentType::MOBILE, 970 EXPECT_EQ(UserAgentType::MOBILE,
935 navigation_manager()->GetPendingItem()->GetUserAgentType()); 971 navigation_manager()->GetPendingItem()->GetUserAgentType());
936 } 972 }
937 973
938 // Tests that the UserAgentType of an INHERIT item is propagated to subsequent 974 // Tests that the UserAgentType of an INHERIT item is propagated to subsequent
939 // item when UserAgentOverrideOption is INHERIT 975 // item when UserAgentOverrideOption is INHERIT
940 TEST_P(NavigationManagerTest, OverrideUserAgentWithInheritAfterInherit) { 976 TEST_P(NavigationManagerTest, OverrideUserAgentWithInheritAfterInherit) {
941 navigation_manager()->AddPendingItem( 977 navigation_manager()->AddPendingItem(
942 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 978 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
943 web::NavigationInitiationType::USER_INITIATED, 979 web::NavigationInitiationType::USER_INITIATED,
944 web::NavigationManager::UserAgentOverrideOption::INHERIT); 980 web::NavigationManager::UserAgentOverrideOption::INHERIT);
945 [session_controller() commitPendingItem]; 981 navigation_manager()->CommitPendingItem();
946 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 982 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
947 EXPECT_EQ(web::UserAgentType::MOBILE, 983 EXPECT_EQ(web::UserAgentType::MOBILE,
948 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 984 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
949 985
950 navigation_manager()->AddPendingItem( 986 navigation_manager()->AddPendingItem(
951 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 987 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
952 web::NavigationInitiationType::USER_INITIATED, 988 web::NavigationInitiationType::USER_INITIATED,
953 web::NavigationManager::UserAgentOverrideOption::INHERIT); 989 web::NavigationManager::UserAgentOverrideOption::INHERIT);
954 [session_controller() commitPendingItem]; 990 navigation_manager()->CommitPendingItem();
955 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 991 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
956 EXPECT_EQ(web::UserAgentType::MOBILE, 992 EXPECT_EQ(web::UserAgentType::MOBILE,
957 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 993 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
958 } 994 }
959 995
960 // Tests that the UserAgentType of a MOBILE item is propagated to subsequent 996 // Tests that the UserAgentType of a MOBILE item is propagated to subsequent
961 // item when UserAgentOverrideOption is INHERIT 997 // item when UserAgentOverrideOption is INHERIT
962 TEST_P(NavigationManagerTest, OverrideUserAgentWithInheritAfterMobile) { 998 TEST_P(NavigationManagerTest, OverrideUserAgentWithInheritAfterMobile) {
963 navigation_manager()->AddPendingItem( 999 navigation_manager()->AddPendingItem(
964 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1000 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
965 web::NavigationInitiationType::USER_INITIATED, 1001 web::NavigationInitiationType::USER_INITIATED,
966 web::NavigationManager::UserAgentOverrideOption::MOBILE); 1002 web::NavigationManager::UserAgentOverrideOption::MOBILE);
967 [session_controller() commitPendingItem]; 1003 navigation_manager()->CommitPendingItem();
968 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1004 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
969 EXPECT_EQ(web::UserAgentType::MOBILE, 1005 EXPECT_EQ(web::UserAgentType::MOBILE,
970 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 1006 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
971 1007
972 navigation_manager()->AddPendingItem( 1008 navigation_manager()->AddPendingItem(
973 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1009 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
974 web::NavigationInitiationType::USER_INITIATED, 1010 web::NavigationInitiationType::USER_INITIATED,
975 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1011 web::NavigationManager::UserAgentOverrideOption::INHERIT);
976 [session_controller() commitPendingItem]; 1012 navigation_manager()->CommitPendingItem();
977 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1013 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
978 EXPECT_EQ(web::UserAgentType::MOBILE, 1014 EXPECT_EQ(web::UserAgentType::MOBILE,
979 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 1015 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
980 } 1016 }
981 1017
982 // Tests that the UserAgentType of a DESKTOP item is propagated to subsequent 1018 // Tests that the UserAgentType of a DESKTOP item is propagated to subsequent
983 // item when UserAgentOverrideOption is INHERIT 1019 // item when UserAgentOverrideOption is INHERIT
984 TEST_P(NavigationManagerTest, OverrideUserAgentWithInheritAfterDesktop) { 1020 TEST_P(NavigationManagerTest, OverrideUserAgentWithInheritAfterDesktop) {
985 navigation_manager()->AddPendingItem( 1021 navigation_manager()->AddPendingItem(
986 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1022 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
987 web::NavigationInitiationType::USER_INITIATED, 1023 web::NavigationInitiationType::USER_INITIATED,
988 web::NavigationManager::UserAgentOverrideOption::DESKTOP); 1024 web::NavigationManager::UserAgentOverrideOption::DESKTOP);
989 [session_controller() commitPendingItem]; 1025 navigation_manager()->CommitPendingItem();
990 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1026 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
991 EXPECT_EQ(web::UserAgentType::DESKTOP, 1027 EXPECT_EQ(web::UserAgentType::DESKTOP,
992 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 1028 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
993 1029
994 navigation_manager()->AddPendingItem( 1030 navigation_manager()->AddPendingItem(
995 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1031 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
996 web::NavigationInitiationType::USER_INITIATED, 1032 web::NavigationInitiationType::USER_INITIATED,
997 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1033 web::NavigationManager::UserAgentOverrideOption::INHERIT);
998 [session_controller() commitPendingItem]; 1034 navigation_manager()->CommitPendingItem();
999 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1035 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
1000 EXPECT_EQ(web::UserAgentType::DESKTOP, 1036 EXPECT_EQ(web::UserAgentType::DESKTOP,
1001 navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); 1037 navigation_manager()->GetLastCommittedItem()->GetUserAgentType());
1002 } 1038 }
1003 1039
1004 // Tests that the UserAgentType is propagated to subsequent NavigationItems if 1040 // Tests that the UserAgentType is propagated to subsequent NavigationItems if
1005 // a native URL exists in between naviations. 1041 // a native URL exists in between naviations.
1006 TEST_P(NavigationManagerTest, UserAgentTypePropagationPastNativeItems) { 1042 TEST_P(NavigationManagerTest, UserAgentTypePropagationPastNativeItems) {
1007 // GURL::Replacements that will replace a GURL's scheme with the test native 1043 // GURL::Replacements that will replace a GURL's scheme with the test native
1008 // scheme. 1044 // scheme.
1009 GURL::Replacements native_scheme_replacement; 1045 GURL::Replacements native_scheme_replacement;
1010 native_scheme_replacement.SetSchemeStr(kTestNativeContentScheme); 1046 native_scheme_replacement.SetSchemeStr(kTestNativeContentScheme);
1011 1047
1012 // Create two non-native navigations that are separated by a native one. 1048 // Create two non-native navigations that are separated by a native one.
1013 navigation_manager()->AddPendingItem( 1049 navigation_manager()->AddPendingItem(
1014 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1050 GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1015 web::NavigationInitiationType::USER_INITIATED, 1051 web::NavigationInitiationType::USER_INITIATED,
1016 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1052 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1017 [session_controller() commitPendingItem]; 1053 navigation_manager()->CommitPendingItem();
1018 web::NavigationItem* item1 = navigation_manager()->GetLastCommittedItem(); 1054 web::NavigationItem* item1 = navigation_manager()->GetLastCommittedItem();
1019 ASSERT_EQ(web::UserAgentType::MOBILE, item1->GetUserAgentType()); 1055 ASSERT_EQ(web::UserAgentType::MOBILE, item1->GetUserAgentType());
1020 navigation_manager()->AddPendingItem( 1056 navigation_manager()->AddPendingItem(
1021 item1->GetURL().ReplaceComponents(native_scheme_replacement), Referrer(), 1057 item1->GetURL().ReplaceComponents(native_scheme_replacement), Referrer(),
1022 ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED, 1058 ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED,
1023 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1059 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1024 [session_controller() commitPendingItem]; 1060 navigation_manager()->CommitPendingItem();
1025 web::NavigationItem* native_item1 = 1061 web::NavigationItem* native_item1 =
1026 navigation_manager()->GetLastCommittedItem(); 1062 navigation_manager()->GetLastCommittedItem();
1027 ASSERT_EQ(web::UserAgentType::NONE, native_item1->GetUserAgentType()); 1063 ASSERT_EQ(web::UserAgentType::NONE, native_item1->GetUserAgentType());
1028 navigation_manager()->AddPendingItem( 1064 navigation_manager()->AddPendingItem(
1029 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1065 GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1030 web::NavigationInitiationType::USER_INITIATED, 1066 web::NavigationInitiationType::USER_INITIATED,
1031 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1067 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1032 [session_controller() commitPendingItem]; 1068 navigation_manager()->CommitPendingItem();
1033 web::NavigationItem* item2 = navigation_manager()->GetLastCommittedItem(); 1069 web::NavigationItem* item2 = navigation_manager()->GetLastCommittedItem();
1034 1070
1035 // Verify that |item1|'s UserAgentType is propagated to |item2|. 1071 // Verify that |item1|'s UserAgentType is propagated to |item2|.
1036 EXPECT_EQ(item1->GetUserAgentType(), item2->GetUserAgentType()); 1072 EXPECT_EQ(item1->GetUserAgentType(), item2->GetUserAgentType());
1037 1073
1038 // Update |item2|'s UA type to DESKTOP and add a third non-native navigation, 1074 // Update |item2|'s UA type to DESKTOP and add a third non-native navigation,
1039 // once again separated by a native one. 1075 // once again separated by a native one.
1040 item2->SetUserAgentType(web::UserAgentType::DESKTOP); 1076 item2->SetUserAgentType(web::UserAgentType::DESKTOP);
1041 ASSERT_EQ(web::UserAgentType::DESKTOP, item2->GetUserAgentType()); 1077 ASSERT_EQ(web::UserAgentType::DESKTOP, item2->GetUserAgentType());
1042 navigation_manager()->AddPendingItem( 1078 navigation_manager()->AddPendingItem(
1043 item2->GetURL().ReplaceComponents(native_scheme_replacement), Referrer(), 1079 item2->GetURL().ReplaceComponents(native_scheme_replacement), Referrer(),
1044 ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED, 1080 ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED,
1045 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1081 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1046 [session_controller() commitPendingItem]; 1082 navigation_manager()->CommitPendingItem();
1047 web::NavigationItem* native_item2 = 1083 web::NavigationItem* native_item2 =
1048 navigation_manager()->GetLastCommittedItem(); 1084 navigation_manager()->GetLastCommittedItem();
1049 ASSERT_EQ(web::UserAgentType::NONE, native_item2->GetUserAgentType()); 1085 ASSERT_EQ(web::UserAgentType::NONE, native_item2->GetUserAgentType());
1050 navigation_manager()->AddPendingItem( 1086 navigation_manager()->AddPendingItem(
1051 GURL("http://www.3.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1087 GURL("http://www.3.com"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1052 web::NavigationInitiationType::USER_INITIATED, 1088 web::NavigationInitiationType::USER_INITIATED,
1053 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1089 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1054 [session_controller() commitPendingItem]; 1090 navigation_manager()->CommitPendingItem();
1055 web::NavigationItem* item3 = navigation_manager()->GetLastCommittedItem(); 1091 web::NavigationItem* item3 = navigation_manager()->GetLastCommittedItem();
1056 1092
1057 // Verify that |item2|'s UserAgentType is propagated to |item3|. 1093 // Verify that |item2|'s UserAgentType is propagated to |item3|.
1058 EXPECT_EQ(item2->GetUserAgentType(), item3->GetUserAgentType()); 1094 EXPECT_EQ(item2->GetUserAgentType(), item3->GetUserAgentType());
1059 } 1095 }
1060 1096
1061 // Tests that adding transient item for a pending item with mobile user agent 1097 // Tests that adding transient item for a pending item with mobile user agent
1062 // type results in a transient item with mobile user agent type. 1098 // type results in a transient item with mobile user agent type.
1063 TEST_P(NavigationManagerTest, AddTransientItemForMobilePendingItem) { 1099 TEST_P(NavigationManagerTest, AddTransientItemForMobilePendingItem) {
1064 navigation_manager()->AddPendingItem( 1100 navigation_manager()->AddPendingItem(
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 navigation_manager()->GetPendingItem()->GetURL()); 1184 navigation_manager()->GetPendingItem()->GetURL());
1149 } 1185 }
1150 1186
1151 // Tests that calling |Reload| with web::ReloadType::NORMAL leaves the url of 1187 // Tests that calling |Reload| with web::ReloadType::NORMAL leaves the url of
1152 // the last committed item unchanged when there is no pending item. 1188 // the last committed item unchanged when there is no pending item.
1153 TEST_P(NavigationManagerTest, ReloadLastCommittedItemWithNormalType) { 1189 TEST_P(NavigationManagerTest, ReloadLastCommittedItemWithNormalType) {
1154 navigation_manager()->AddPendingItem( 1190 navigation_manager()->AddPendingItem(
1155 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1191 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1156 web::NavigationInitiationType::USER_INITIATED, 1192 web::NavigationInitiationType::USER_INITIATED,
1157 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1193 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1158 [session_controller() commitPendingItem]; 1194 navigation_manager()->CommitPendingItem();
1159 1195
1160 GURL url_before_reload = GURL("http://www.url.com/1"); 1196 GURL url_before_reload = GURL("http://www.url.com/1");
1161 navigation_manager()->AddPendingItem( 1197 navigation_manager()->AddPendingItem(
1162 url_before_reload, Referrer(), ui::PAGE_TRANSITION_TYPED, 1198 url_before_reload, Referrer(), ui::PAGE_TRANSITION_TYPED,
1163 web::NavigationInitiationType::USER_INITIATED, 1199 web::NavigationInitiationType::USER_INITIATED,
1164 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1200 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1165 [session_controller() commitPendingItem]; 1201 navigation_manager()->CommitPendingItem();
1166 1202
1167 navigation_manager()->Reload(web::ReloadType::NORMAL, 1203 navigation_manager()->Reload(web::ReloadType::NORMAL,
1168 false /* check_for_repost */); 1204 false /* check_for_repost */);
1169 EXPECT_TRUE(navigation_manager_delegate().reload_called()); 1205 EXPECT_TRUE(navigation_manager_delegate().reload_called());
1170 1206
1171 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1207 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
1172 EXPECT_EQ(url_before_reload, 1208 EXPECT_EQ(url_before_reload,
1173 navigation_manager()->GetLastCommittedItem()->GetURL()); 1209 navigation_manager()->GetLastCommittedItem()->GetURL());
1174 } 1210 }
1175 1211
1176 // Tests that calling |Reload| with web::ReloadType::NORMAL leaves the url of 1212 // Tests that calling |Reload| with web::ReloadType::NORMAL leaves the url of
1177 // the last committed item unchanged when there is no pending item, but there 1213 // the last committed item unchanged when there is no pending item, but there
1178 // forward items after last committed item. 1214 // forward items after last committed item.
1179 TEST_P(NavigationManagerTest, 1215 TEST_P(NavigationManagerTest,
1180 ReloadLastCommittedItemWithNormalTypeWithForwardItems) { 1216 ReloadLastCommittedItemWithNormalTypeWithForwardItems) {
1181 navigation_manager()->AddPendingItem( 1217 navigation_manager()->AddPendingItem(
1182 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1218 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1183 web::NavigationInitiationType::USER_INITIATED, 1219 web::NavigationInitiationType::USER_INITIATED,
1184 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1220 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1185 [session_controller() commitPendingItem]; 1221 navigation_manager()->CommitPendingItem();
1186 1222
1187 GURL url_before_reload = GURL("http://www.url.com/1"); 1223 GURL url_before_reload = GURL("http://www.url.com/1");
1188 navigation_manager()->AddPendingItem( 1224 navigation_manager()->AddPendingItem(
1189 url_before_reload, Referrer(), ui::PAGE_TRANSITION_TYPED, 1225 url_before_reload, Referrer(), ui::PAGE_TRANSITION_TYPED,
1190 web::NavigationInitiationType::USER_INITIATED, 1226 web::NavigationInitiationType::USER_INITIATED,
1191 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1227 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1192 [session_controller() commitPendingItem]; 1228 navigation_manager()->CommitPendingItem();
1193 1229
1194 navigation_manager()->AddPendingItem( 1230 navigation_manager()->AddPendingItem(
1195 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1231 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1196 web::NavigationInitiationType::USER_INITIATED, 1232 web::NavigationInitiationType::USER_INITIATED,
1197 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1233 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1198 [session_controller() commitPendingItem]; 1234 navigation_manager()->CommitPendingItem();
1199 1235
1200 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 1236 navigation_manager()->GoToIndex(1);
1201 EXPECT_EQ(1, navigation_manager()->GetLastCommittedItemIndex()); 1237 EXPECT_EQ(1, navigation_manager()->GetLastCommittedItemIndex());
1202 1238
1203 navigation_manager()->Reload(web::ReloadType::NORMAL, 1239 navigation_manager()->Reload(web::ReloadType::NORMAL,
1204 false /* check_for_repost */); 1240 false /* check_for_repost */);
1205 EXPECT_TRUE(navigation_manager_delegate().reload_called()); 1241 EXPECT_TRUE(navigation_manager_delegate().reload_called());
1206 1242
1207 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1243 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
1208 EXPECT_EQ(url_before_reload, 1244 EXPECT_EQ(url_before_reload,
1209 navigation_manager()->GetLastCommittedItem()->GetURL()); 1245 navigation_manager()->GetLastCommittedItem()->GetURL());
1210 } 1246 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 } 1306 }
1271 1307
1272 // Tests that calling |Reload| with web::ReloadType::ORIGINAL_REQUEST_URL 1308 // Tests that calling |Reload| with web::ReloadType::ORIGINAL_REQUEST_URL
1273 // changes the last committed item's url to its original request url when there 1309 // changes the last committed item's url to its original request url when there
1274 // is no pending item. 1310 // is no pending item.
1275 TEST_P(NavigationManagerTest, ReloadLastCommittedItemWithOriginalType) { 1311 TEST_P(NavigationManagerTest, ReloadLastCommittedItemWithOriginalType) {
1276 navigation_manager()->AddPendingItem( 1312 navigation_manager()->AddPendingItem(
1277 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1313 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1278 web::NavigationInitiationType::USER_INITIATED, 1314 web::NavigationInitiationType::USER_INITIATED,
1279 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1315 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1280 [session_controller() commitPendingItem]; 1316 navigation_manager()->CommitPendingItem();
1281 1317
1282 navigation_manager()->AddPendingItem( 1318 navigation_manager()->AddPendingItem(
1283 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1319 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1284 web::NavigationInitiationType::USER_INITIATED, 1320 web::NavigationInitiationType::USER_INITIATED,
1285 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1321 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1286 GURL expected_original_url = GURL("http://www.url.com/1/original"); 1322 GURL expected_original_url = GURL("http://www.url.com/1/original");
1287 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 1323 ASSERT_TRUE(navigation_manager()->GetPendingItem());
1288 navigation_manager()->GetPendingItem()->SetOriginalRequestURL( 1324 navigation_manager()->GetPendingItem()->SetOriginalRequestURL(
1289 expected_original_url); 1325 expected_original_url);
1290 [session_controller() commitPendingItem]; 1326 navigation_manager()->CommitPendingItem();
1291 1327
1292 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL, 1328 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL,
1293 false /* check_for_repost */); 1329 false /* check_for_repost */);
1294 EXPECT_TRUE(navigation_manager_delegate().reload_called()); 1330 EXPECT_TRUE(navigation_manager_delegate().reload_called());
1295 1331
1296 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1332 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
1297 EXPECT_EQ(expected_original_url, 1333 EXPECT_EQ(expected_original_url,
1298 navigation_manager()->GetLastCommittedItem()->GetURL()); 1334 navigation_manager()->GetLastCommittedItem()->GetURL());
1299 } 1335 }
1300 1336
1301 // Tests that calling |Reload| with web::ReloadType::ORIGINAL_REQUEST_URL 1337 // Tests that calling |Reload| with web::ReloadType::ORIGINAL_REQUEST_URL
1302 // changes the last committed item's url to its original request url when there 1338 // changes the last committed item's url to its original request url when there
1303 // is no pending item, but there are forward items after last committed item. 1339 // is no pending item, but there are forward items after last committed item.
1304 TEST_P(NavigationManagerTest, 1340 TEST_P(NavigationManagerTest,
1305 ReloadLastCommittedItemWithOriginalTypeWithForwardItems) { 1341 ReloadLastCommittedItemWithOriginalTypeWithForwardItems) {
1306 navigation_manager()->AddPendingItem( 1342 navigation_manager()->AddPendingItem(
1307 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1343 GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1308 web::NavigationInitiationType::USER_INITIATED, 1344 web::NavigationInitiationType::USER_INITIATED,
1309 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1345 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1310 [session_controller() commitPendingItem]; 1346 navigation_manager()->CommitPendingItem();
1311 1347
1312 navigation_manager()->AddPendingItem( 1348 navigation_manager()->AddPendingItem(
1313 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1349 GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1314 web::NavigationInitiationType::USER_INITIATED, 1350 web::NavigationInitiationType::USER_INITIATED,
1315 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1351 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1316 GURL expected_original_url = GURL("http://www.url.com/1/original"); 1352 GURL expected_original_url = GURL("http://www.url.com/1/original");
1317 ASSERT_TRUE(navigation_manager()->GetPendingItem()); 1353 ASSERT_TRUE(navigation_manager()->GetPendingItem());
1318 navigation_manager()->GetPendingItem()->SetOriginalRequestURL( 1354 navigation_manager()->GetPendingItem()->SetOriginalRequestURL(
1319 expected_original_url); 1355 expected_original_url);
1320 [session_controller() commitPendingItem]; 1356 navigation_manager()->CommitPendingItem();
1321 1357
1322 navigation_manager()->AddPendingItem( 1358 navigation_manager()->AddPendingItem(
1323 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_TYPED, 1359 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_TYPED,
1324 web::NavigationInitiationType::USER_INITIATED, 1360 web::NavigationInitiationType::USER_INITIATED,
1325 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1361 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1326 [session_controller() commitPendingItem]; 1362 navigation_manager()->CommitPendingItem();
1327 1363
1328 [session_controller() goToItemAtIndex:1 discardNonCommittedItems:NO]; 1364 navigation_manager()->GoToIndex(1);
1329 EXPECT_EQ(1, navigation_manager()->GetLastCommittedItemIndex()); 1365 EXPECT_EQ(1, navigation_manager()->GetLastCommittedItemIndex());
1330 1366
1331 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL, 1367 navigation_manager()->Reload(web::ReloadType::ORIGINAL_REQUEST_URL,
1332 false /* check_for_repost */); 1368 false /* check_for_repost */);
1333 EXPECT_TRUE(navigation_manager_delegate().reload_called()); 1369 EXPECT_TRUE(navigation_manager_delegate().reload_called());
1334 1370
1335 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); 1371 ASSERT_TRUE(navigation_manager()->GetLastCommittedItem());
1336 EXPECT_EQ(expected_original_url, 1372 EXPECT_EQ(expected_original_url,
1337 navigation_manager()->GetLastCommittedItem()->GetURL()); 1373 navigation_manager()->GetLastCommittedItem()->GetURL());
1338 } 1374 }
1339 1375
1340 // Tests that app-specific URLs are not rewritten for renderer-initiated loads 1376 // Tests that app-specific URLs are not rewritten for renderer-initiated loads
1341 // unless requested by a page with app-specific url. 1377 // unless requested by a page with app-specific url.
1342 TEST_P(NavigationManagerTest, RewritingAppSpecificUrls) { 1378 TEST_P(NavigationManagerTest, RewritingAppSpecificUrls) {
1343 // URL should not be rewritten as there is no committed URL. 1379 // URL should not be rewritten as there is no committed URL.
1344 GURL url1(url::SchemeHostPort(kSchemeToRewrite, "test", 0).Serialize()); 1380 GURL url1(url::SchemeHostPort(kSchemeToRewrite, "test", 0).Serialize());
1345 navigation_manager()->AddPendingItem( 1381 navigation_manager()->AddPendingItem(
1346 url1, Referrer(), ui::PAGE_TRANSITION_LINK, 1382 url1, Referrer(), ui::PAGE_TRANSITION_LINK,
1347 web::NavigationInitiationType::RENDERER_INITIATED, 1383 web::NavigationInitiationType::RENDERER_INITIATED,
1348 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1384 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1349 EXPECT_EQ(url1, navigation_manager()->GetPendingItem()->GetURL()); 1385 EXPECT_EQ(url1, navigation_manager()->GetPendingItem()->GetURL());
1350 1386
1351 // URL should not be rewritten because last committed URL is not app-specific. 1387 // URL should not be rewritten because last committed URL is not app-specific.
1352 [session_controller() commitPendingItem]; 1388 navigation_manager()->CommitPendingItem();
1353 GURL url2(url::SchemeHostPort(kSchemeToRewrite, "test2", 0).Serialize()); 1389 GURL url2(url::SchemeHostPort(kSchemeToRewrite, "test2", 0).Serialize());
1354 navigation_manager()->AddPendingItem( 1390 navigation_manager()->AddPendingItem(
1355 url2, Referrer(), ui::PAGE_TRANSITION_LINK, 1391 url2, Referrer(), ui::PAGE_TRANSITION_LINK,
1356 web::NavigationInitiationType::RENDERER_INITIATED, 1392 web::NavigationInitiationType::RENDERER_INITIATED,
1357 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1393 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1358 EXPECT_EQ(url2, navigation_manager()->GetPendingItem()->GetURL()); 1394 EXPECT_EQ(url2, navigation_manager()->GetPendingItem()->GetURL());
1359 1395
1360 // URL should be rewritten for user initiated navigations. 1396 // URL should be rewritten for user initiated navigations.
1361 GURL url3(url::SchemeHostPort(kSchemeToRewrite, "test3", 0).Serialize()); 1397 GURL url3(url::SchemeHostPort(kSchemeToRewrite, "test3", 0).Serialize());
1362 navigation_manager()->AddPendingItem( 1398 navigation_manager()->AddPendingItem(
1363 url3, Referrer(), ui::PAGE_TRANSITION_LINK, 1399 url3, Referrer(), ui::PAGE_TRANSITION_LINK,
1364 web::NavigationInitiationType::USER_INITIATED, 1400 web::NavigationInitiationType::USER_INITIATED,
1365 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1401 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1366 GURL rewritten_url3( 1402 GURL rewritten_url3(
1367 url::SchemeHostPort(kTestWebUIScheme, "test3", 0).Serialize()); 1403 url::SchemeHostPort(kTestWebUIScheme, "test3", 0).Serialize());
1368 EXPECT_EQ(rewritten_url3, navigation_manager()->GetPendingItem()->GetURL()); 1404 EXPECT_EQ(rewritten_url3, navigation_manager()->GetPendingItem()->GetURL());
1369 1405
1370 // URL should be rewritten because last committed URL is app-specific. 1406 // URL should be rewritten because last committed URL is app-specific.
1371 [session_controller() commitPendingItem]; 1407 navigation_manager()->CommitPendingItem();
1372 GURL url4(url::SchemeHostPort(kSchemeToRewrite, "test4", 0).Serialize()); 1408 GURL url4(url::SchemeHostPort(kSchemeToRewrite, "test4", 0).Serialize());
1373 navigation_manager()->AddPendingItem( 1409 navigation_manager()->AddPendingItem(
1374 url4, Referrer(), ui::PAGE_TRANSITION_LINK, 1410 url4, Referrer(), ui::PAGE_TRANSITION_LINK,
1375 web::NavigationInitiationType::RENDERER_INITIATED, 1411 web::NavigationInitiationType::RENDERER_INITIATED,
1376 web::NavigationManager::UserAgentOverrideOption::INHERIT); 1412 web::NavigationManager::UserAgentOverrideOption::INHERIT);
1377 GURL rewritten_url4( 1413 GURL rewritten_url4(
1378 url::SchemeHostPort(kTestWebUIScheme, "test4", 0).Serialize()); 1414 url::SchemeHostPort(kTestWebUIScheme, "test4", 0).Serialize());
1379 EXPECT_EQ(rewritten_url4, navigation_manager()->GetPendingItem()->GetURL()); 1415 EXPECT_EQ(rewritten_url4, navigation_manager()->GetPendingItem()->GetURL());
1380 } 1416 }
1381 1417
(...skipping 17 matching lines...) Expand all
1399 web::NavigationItem::Create(); 1435 web::NavigationItem::Create();
1400 // Verify GetIndexOfItem() results. 1436 // Verify GetIndexOfItem() results.
1401 EXPECT_EQ(0, navigation_manager()->GetIndexOfItem(item0)); 1437 EXPECT_EQ(0, navigation_manager()->GetIndexOfItem(item0));
1402 EXPECT_EQ(1, navigation_manager()->GetIndexOfItem(item1)); 1438 EXPECT_EQ(1, navigation_manager()->GetIndexOfItem(item1));
1403 EXPECT_EQ(-1, navigation_manager()->GetIndexOfItem(item_not_found.get())); 1439 EXPECT_EQ(-1, navigation_manager()->GetIndexOfItem(item_not_found.get()));
1404 } 1440 }
1405 1441
1406 INSTANTIATE_TEST_CASE_P( 1442 INSTANTIATE_TEST_CASE_P(
1407 ProgrammaticNavigationManagerTest, 1443 ProgrammaticNavigationManagerTest,
1408 NavigationManagerTest, 1444 NavigationManagerTest,
1409 ::testing::Values(true /* test_legacy_navigation_manager */)); 1445 ::testing::Values(NavigationManagerChoice::TEST_LEGACY_NAVIGATION_MANAGER));
1410 1446
1411 } // namespace web 1447 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_impl.mm ('k') | ios/web/navigation/session_storage_builder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698