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

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

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

Powered by Google App Engine
This is Rietveld 408576698