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

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

Issue 2704663004: Remove CRWSessionEntry from NavigationManagerImpl. (Closed)
Patch Set: Added size_t todos Created 3 years, 9 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
« no previous file with comments | « ios/web/navigation/navigation_manager_impl.h ('k') | ios/web/public/navigation_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 12 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
13 #import "ios/web/navigation/crw_session_controller.h" 13 #import "ios/web/navigation/crw_session_controller.h"
14 #import "ios/web/navigation/crw_session_entry.h"
15 #import "ios/web/navigation/navigation_item_impl.h" 14 #import "ios/web/navigation/navigation_item_impl.h"
16 #import "ios/web/navigation/navigation_manager_delegate.h" 15 #import "ios/web/navigation/navigation_manager_delegate.h"
17 #include "ios/web/navigation/navigation_manager_facade_delegate.h" 16 #include "ios/web/navigation/navigation_manager_facade_delegate.h"
18 #include "ios/web/public/load_committed_details.h" 17 #include "ios/web/public/load_committed_details.h"
19 #import "ios/web/public/navigation_item.h" 18 #import "ios/web/public/navigation_item.h"
20 #import "ios/web/public/web_state/web_state.h" 19 #import "ios/web/public/web_state/web_state.h"
21 #include "ui/base/page_transition_types.h" 20 #include "ui/base/page_transition_types.h"
22 21
23 #if !defined(__has_feature) || !__has_feature(objc_arc) 22 #if !defined(__has_feature) || !__has_feature(objc_arc)
24 #error "This file requires ARC support." 23 #error "This file requires ARC support."
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 if (facade_delegate_) 138 if (facade_delegate_)
140 facade_delegate_->OnNavigationItemChanged(); 139 facade_delegate_->OnNavigationItemChanged();
141 } 140 }
142 141
143 void NavigationManagerImpl::OnNavigationItemCommitted() { 142 void NavigationManagerImpl::OnNavigationItemCommitted() {
144 LoadCommittedDetails details; 143 LoadCommittedDetails details;
145 details.item = GetLastCommittedItem(); 144 details.item = GetLastCommittedItem();
146 DCHECK(details.item); 145 DCHECK(details.item);
147 details.previous_item_index = [session_controller_ previousNavigationIndex]; 146 details.previous_item_index = [session_controller_ previousNavigationIndex];
148 if (details.previous_item_index >= 0) { 147 if (details.previous_item_index >= 0) {
149 DCHECK([session_controller_ previousEntry]); 148 DCHECK(GetPreviousItem());
150 details.previous_url = 149 details.previous_url = GetPreviousItem()->GetURL();
151 [session_controller_ previousEntry].navigationItem->GetURL();
152 details.is_in_page = 150 details.is_in_page =
153 AreURLsInPageNavigation(details.previous_url, details.item->GetURL()); 151 AreURLsInPageNavigation(details.previous_url, details.item->GetURL());
154 } else { 152 } else {
155 details.previous_url = GURL(); 153 details.previous_url = GURL();
156 details.is_in_page = NO; 154 details.is_in_page = NO;
157 } 155 }
158 156
159 delegate_->OnNavigationItemCommitted(details); 157 delegate_->OnNavigationItemCommitted(details);
160 158
161 if (facade_delegate_) { 159 if (facade_delegate_) {
(...skipping 29 matching lines...) Expand all
191 bool use_desktop_user_agent = 189 bool use_desktop_user_agent =
192 override_desktop_user_agent_for_next_pending_item_ || 190 override_desktop_user_agent_for_next_pending_item_ ||
193 (GetLastCommittedItem() && 191 (GetLastCommittedItem() &&
194 GetLastCommittedItem()->IsOverridingUserAgent()); 192 GetLastCommittedItem()->IsOverridingUserAgent());
195 GetPendingItem()->SetIsOverridingUserAgent(use_desktop_user_agent); 193 GetPendingItem()->SetIsOverridingUserAgent(use_desktop_user_agent);
196 override_desktop_user_agent_for_next_pending_item_ = false; 194 override_desktop_user_agent_for_next_pending_item_ = false;
197 } 195 }
198 } 196 }
199 197
200 NavigationItem* NavigationManagerImpl::GetLastUserItem() const { 198 NavigationItem* NavigationManagerImpl::GetLastUserItem() const {
201 CRWSessionEntry* entry = [session_controller_ lastUserEntry]; 199 return [session_controller_ lastUserItem];
202 return [entry navigationItem];
203 } 200 }
204 201
205 NavigationItem* NavigationManagerImpl::GetPreviousItem() const { 202 NavigationItem* NavigationManagerImpl::GetPreviousItem() const {
206 CRWSessionEntry* entry = [session_controller_ previousEntry]; 203 return [session_controller_ previousItem];
207 return [entry navigationItem];
208 } 204 }
209 205
210 std::vector<NavigationItem*> NavigationManagerImpl::GetItems() { 206 NavigationItemList NavigationManagerImpl::GetItems() const {
211 std::vector<NavigationItem*> items; 207 return [session_controller_ items];
212 size_t i = 0;
213 items.resize([session_controller_ entries].count);
214 for (CRWSessionEntry* entry in [session_controller_ entries]) {
215 items[i++] = entry.navigationItem;
216 }
217 return items;
218 } 208 }
219 209
220 BrowserState* NavigationManagerImpl::GetBrowserState() const { 210 BrowserState* NavigationManagerImpl::GetBrowserState() const {
221 return browser_state_; 211 return browser_state_;
222 } 212 }
223 213
224 WebState* NavigationManagerImpl::GetWebState() const { 214 WebState* NavigationManagerImpl::GetWebState() const {
225 return delegate_->GetWebState(); 215 return delegate_->GetWebState();
226 } 216 }
227 217
228 NavigationItem* NavigationManagerImpl::GetVisibleItem() const { 218 NavigationItem* NavigationManagerImpl::GetVisibleItem() const {
229 CRWSessionEntry* entry = [session_controller_ visibleEntry]; 219 return [session_controller_ visibleItem];
230 return [entry navigationItem];
231 } 220 }
232 221
233 NavigationItem* NavigationManagerImpl::GetLastCommittedItem() const { 222 NavigationItem* NavigationManagerImpl::GetLastCommittedItem() const {
234 CRWSessionEntry* entry = [session_controller_ lastCommittedEntry]; 223 return [session_controller_ lastCommittedItem];
235 return [entry navigationItem];
236 } 224 }
237 225
238 NavigationItem* NavigationManagerImpl::GetPendingItem() const { 226 NavigationItem* NavigationManagerImpl::GetPendingItem() const {
239 return [[session_controller_ pendingEntry] navigationItem]; 227 return [session_controller_ pendingItem];
240 } 228 }
241 229
242 NavigationItem* NavigationManagerImpl::GetTransientItem() const { 230 NavigationItem* NavigationManagerImpl::GetTransientItem() const {
243 return [[session_controller_ transientEntry] navigationItem]; 231 return [session_controller_ transientItem];
244 } 232 }
245 233
246 void NavigationManagerImpl::DiscardNonCommittedItems() { 234 void NavigationManagerImpl::DiscardNonCommittedItems() {
247 [session_controller_ discardNonCommittedItems]; 235 [session_controller_ discardNonCommittedItems];
248 } 236 }
249 237
250 void NavigationManagerImpl::LoadIfNecessary() { 238 void NavigationManagerImpl::LoadIfNecessary() {
251 // Nothing to do; iOS loads lazily. 239 // Nothing to do; iOS loads lazily.
252 } 240 }
253 241
254 void NavigationManagerImpl::LoadURLWithParams( 242 void NavigationManagerImpl::LoadURLWithParams(
255 const NavigationManager::WebLoadParams& params) { 243 const NavigationManager::WebLoadParams& params) {
256 delegate_->LoadURLWithParams(params); 244 delegate_->LoadURLWithParams(params);
257 } 245 }
258 246
259 void NavigationManagerImpl::AddTransientURLRewriter( 247 void NavigationManagerImpl::AddTransientURLRewriter(
260 BrowserURLRewriter::URLRewriter rewriter) { 248 BrowserURLRewriter::URLRewriter rewriter) {
261 DCHECK(rewriter); 249 DCHECK(rewriter);
262 if (!transient_url_rewriters_) { 250 if (!transient_url_rewriters_) {
263 transient_url_rewriters_.reset( 251 transient_url_rewriters_.reset(
264 new std::vector<BrowserURLRewriter::URLRewriter>()); 252 new std::vector<BrowserURLRewriter::URLRewriter>());
265 } 253 }
266 transient_url_rewriters_->push_back(rewriter); 254 transient_url_rewriters_->push_back(rewriter);
267 } 255 }
268 256
269 int NavigationManagerImpl::GetItemCount() const { 257 int NavigationManagerImpl::GetItemCount() const {
270 return [[session_controller_ entries] count]; 258 return GetItems().size();
271 } 259 }
272 260
273 NavigationItem* NavigationManagerImpl::GetItemAtIndex(size_t index) const { 261 NavigationItem* NavigationManagerImpl::GetItemAtIndex(size_t index) const {
274 NSArray* entries = [session_controller_ entries]; 262 NavigationItemList items = GetItems();
275 return index < entries.count ? [entries[index] navigationItem] : nullptr; 263 return index < items.size() ? items[index] : nullptr;
276 } 264 }
277 265
278 int NavigationManagerImpl::GetCurrentItemIndex() const { 266 int NavigationManagerImpl::GetCurrentItemIndex() const {
279 return [session_controller_ currentNavigationIndex]; 267 return [session_controller_ currentNavigationIndex];
280 } 268 }
281 269
282 int NavigationManagerImpl::GetPendingItemIndex() const { 270 int NavigationManagerImpl::GetPendingItemIndex() const {
283 if ([session_controller_ pendingEntry]) { 271 if (GetPendingItem()) {
284 if ([session_controller_ pendingItemIndex] != -1) { 272 if ([session_controller_ pendingItemIndex] != -1) {
285 return [session_controller_ pendingItemIndex]; 273 return [session_controller_ pendingItemIndex];
286 } 274 }
287 // TODO(crbug.com/665189): understand why current item index is 275 // TODO(crbug.com/665189): understand why current item index is
288 // returned here. 276 // returned here.
289 return GetCurrentItemIndex(); 277 return GetCurrentItemIndex();
290 } 278 }
291 return -1; 279 return -1;
292 } 280 }
293 281
294 int NavigationManagerImpl::GetLastCommittedItemIndex() const { 282 int NavigationManagerImpl::GetLastCommittedItemIndex() const {
295 if (![[session_controller_ entries] count]) 283 if (GetItems().empty())
296 return -1; 284 return -1;
297 return [session_controller_ currentNavigationIndex]; 285 return [session_controller_ currentNavigationIndex];
298 } 286 }
299 287
300 bool NavigationManagerImpl::RemoveItemAtIndex(int index) { 288 bool NavigationManagerImpl::RemoveItemAtIndex(int index) {
301 if (index == GetLastCommittedItemIndex() || index == GetPendingItemIndex()) 289 if (index == GetLastCommittedItemIndex() || index == GetPendingItemIndex())
302 return false; 290 return false;
303 291
304 NSUInteger idx = static_cast<NSUInteger>(index); 292 size_t idx = static_cast<size_t>(index);
305 NSArray* entries = [session_controller_ entries]; 293 if (idx >= GetItems().size())
306 if (idx >= entries.count)
307 return false; 294 return false;
308 295
309 [session_controller_ removeItemAtIndex:index]; 296 [session_controller_ removeItemAtIndex:index];
310 return true; 297 return true;
311 } 298 }
312 299
313 bool NavigationManagerImpl::CanGoBack() const { 300 bool NavigationManagerImpl::CanGoBack() const {
314 return CanGoToOffset(-1); 301 return CanGoToOffset(-1);
315 } 302 }
316 303
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } 415 }
429 416
430 bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const { 417 bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const {
431 DCHECK_GT(index, 0); 418 DCHECK_GT(index, 0);
432 DCHECK_LT(index, GetItemCount()); 419 DCHECK_LT(index, GetItemCount());
433 ui::PageTransition transition = GetItemAtIndex(index)->GetTransitionType(); 420 ui::PageTransition transition = GetItemAtIndex(index)->GetTransitionType();
434 return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK; 421 return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK;
435 } 422 }
436 423
437 } // namespace web 424 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_impl.h ('k') | ios/web/public/navigation_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698