| OLD | NEW |
| 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_item_impl.h" | 5 #import "ios/web/navigation/navigation_item_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 // Most pages have real titles. Don't even bother caching anything if this is | 147 // Most pages have real titles. Don't even bother caching anything if this is |
| 148 // the case. | 148 // the case. |
| 149 if (!title_.empty()) | 149 if (!title_.empty()) |
| 150 return title_; | 150 return title_; |
| 151 | 151 |
| 152 // More complicated cases will use the URLs as the title. This result we will | 152 // More complicated cases will use the URLs as the title. This result we will |
| 153 // cache since it's more complicated to compute. | 153 // cache since it's more complicated to compute. |
| 154 if (!cached_display_title_.empty()) | 154 if (!cached_display_title_.empty()) |
| 155 return cached_display_title_; | 155 return cached_display_title_; |
| 156 | 156 |
| 157 // Use the virtual URL first if any, and fall back on using the real URL. | 157 cached_display_title_ = |
| 158 base::string16 title; | 158 NavigationItemImpl::GetDisplayTitleForURL(GetVirtualURL()); |
| 159 if (!virtual_url_.is_empty()) { | |
| 160 title = url_formatter::FormatUrl(virtual_url_); | |
| 161 } else if (!url_.is_empty()) { | |
| 162 title = url_formatter::FormatUrl(url_); | |
| 163 } | |
| 164 | |
| 165 // For file:// URLs use the filename as the title, not the full path. | |
| 166 if (url_.SchemeIsFile()) { | |
| 167 base::string16::size_type slashpos = title.rfind('/'); | |
| 168 if (slashpos != base::string16::npos) | |
| 169 title = title.substr(slashpos + 1); | |
| 170 } | |
| 171 | |
| 172 const size_t kMaxTitleChars = 4 * 1024; | |
| 173 gfx::ElideString(title, kMaxTitleChars, &cached_display_title_); | |
| 174 return cached_display_title_; | 159 return cached_display_title_; |
| 175 } | 160 } |
| 176 | 161 |
| 177 void NavigationItemImpl::SetTransitionType(ui::PageTransition transition_type) { | 162 void NavigationItemImpl::SetTransitionType(ui::PageTransition transition_type) { |
| 178 transition_type_ = transition_type; | 163 transition_type_ = transition_type; |
| 179 } | 164 } |
| 180 | 165 |
| 181 ui::PageTransition NavigationItemImpl::GetTransitionType() const { | 166 ui::PageTransition NavigationItemImpl::GetTransitionType() const { |
| 182 return transition_type_; | 167 return transition_type_; |
| 183 } | 168 } |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 void NavigationItemImpl::ResetHttpRequestHeaders() { | 288 void NavigationItemImpl::ResetHttpRequestHeaders() { |
| 304 http_request_headers_.reset(); | 289 http_request_headers_.reset(); |
| 305 } | 290 } |
| 306 | 291 |
| 307 void NavigationItemImpl::ResetForCommit() { | 292 void NavigationItemImpl::ResetForCommit() { |
| 308 // Navigation initiation type is only valid for pending navigations, thus | 293 // Navigation initiation type is only valid for pending navigations, thus |
| 309 // always reset to NONE after the item is committed. | 294 // always reset to NONE after the item is committed. |
| 310 SetNavigationInitiationType(web::NavigationInitiationType::NONE); | 295 SetNavigationInitiationType(web::NavigationInitiationType::NONE); |
| 311 } | 296 } |
| 312 | 297 |
| 298 // static |
| 299 base::string16 NavigationItemImpl::GetDisplayTitleForURL(const GURL& url) { |
| 300 if (url.is_empty()) |
| 301 return base::string16(); |
| 302 |
| 303 base::string16 title = url_formatter::FormatUrl(url); |
| 304 |
| 305 // For file:// URLs use the filename as the title, not the full path. |
| 306 if (url.SchemeIsFile()) { |
| 307 base::string16::size_type slashpos = title.rfind('/'); |
| 308 if (slashpos != base::string16::npos) |
| 309 title = title.substr(slashpos + 1); |
| 310 } |
| 311 |
| 312 const size_t kMaxTitleChars = 4 * 1024; |
| 313 gfx::ElideString(title, kMaxTitleChars, &title); |
| 314 return title; |
| 315 } |
| 316 |
| 313 } // namespace web | 317 } // namespace web |
| OLD | NEW |