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

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

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

Powered by Google App Engine
This is Rietveld 408576698