| OLD | NEW |
| 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 #include "content/browser/frame_host/navigation_entry_impl.h" | 5 #include "content/browser/frame_host/navigation_entry_impl.h" |
| 6 | 6 |
| 7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "content/public/common/content_constants.h" | 10 #include "content/public/common/content_constants.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 ui::PAGE_TRANSITION_LINK, false) { | 41 ui::PAGE_TRANSITION_LINK, false) { |
| 42 } | 42 } |
| 43 | 43 |
| 44 NavigationEntryImpl::NavigationEntryImpl(SiteInstanceImpl* instance, | 44 NavigationEntryImpl::NavigationEntryImpl(SiteInstanceImpl* instance, |
| 45 int page_id, | 45 int page_id, |
| 46 const GURL& url, | 46 const GURL& url, |
| 47 const Referrer& referrer, | 47 const Referrer& referrer, |
| 48 const base::string16& title, | 48 const base::string16& title, |
| 49 ui::PageTransition transition_type, | 49 ui::PageTransition transition_type, |
| 50 bool is_renderer_initiated) | 50 bool is_renderer_initiated) |
| 51 : unique_id_(GetUniqueIDInConstructor()), | 51 : frame_entry_(instance, url, referrer), |
| 52 site_instance_(instance), | 52 unique_id_(GetUniqueIDInConstructor()), |
| 53 bindings_(kInvalidBindings), | 53 bindings_(kInvalidBindings), |
| 54 page_type_(PAGE_TYPE_NORMAL), | 54 page_type_(PAGE_TYPE_NORMAL), |
| 55 url_(url), | |
| 56 referrer_(referrer), | |
| 57 update_virtual_url_with_url_(false), | 55 update_virtual_url_with_url_(false), |
| 58 title_(title), | 56 title_(title), |
| 59 page_id_(page_id), | 57 page_id_(page_id), |
| 60 transition_type_(transition_type), | 58 transition_type_(transition_type), |
| 61 has_post_data_(false), | 59 has_post_data_(false), |
| 62 post_id_(-1), | 60 post_id_(-1), |
| 63 restore_type_(RESTORE_NONE), | 61 restore_type_(RESTORE_NONE), |
| 64 is_overriding_user_agent_(false), | 62 is_overriding_user_agent_(false), |
| 65 http_status_code_(0), | 63 http_status_code_(0), |
| 66 is_renderer_initiated_(is_renderer_initiated), | 64 is_renderer_initiated_(is_renderer_initiated), |
| 67 should_replace_entry_(false), | 65 should_replace_entry_(false), |
| 68 should_clear_history_list_(false), | 66 should_clear_history_list_(false), |
| 69 can_load_local_resources_(false), | 67 can_load_local_resources_(false), |
| 70 frame_tree_node_id_(-1) { | 68 frame_tree_node_id_(-1) { |
| 71 } | 69 } |
| 72 | 70 |
| 73 NavigationEntryImpl::~NavigationEntryImpl() { | 71 NavigationEntryImpl::~NavigationEntryImpl() { |
| 74 } | 72 } |
| 75 | 73 |
| 76 int NavigationEntryImpl::GetUniqueID() const { | 74 int NavigationEntryImpl::GetUniqueID() const { |
| 77 return unique_id_; | 75 return unique_id_; |
| 78 } | 76 } |
| 79 | 77 |
| 80 PageType NavigationEntryImpl::GetPageType() const { | 78 PageType NavigationEntryImpl::GetPageType() const { |
| 81 return page_type_; | 79 return page_type_; |
| 82 } | 80 } |
| 83 | 81 |
| 84 void NavigationEntryImpl::SetURL(const GURL& url) { | 82 void NavigationEntryImpl::SetURL(const GURL& url) { |
| 85 url_ = url; | 83 frame_entry_.set_url(url); |
| 86 cached_display_title_.clear(); | 84 cached_display_title_.clear(); |
| 87 } | 85 } |
| 88 | 86 |
| 89 const GURL& NavigationEntryImpl::GetURL() const { | 87 const GURL& NavigationEntryImpl::GetURL() const { |
| 90 return url_; | 88 return frame_entry_.url(); |
| 91 } | 89 } |
| 92 | 90 |
| 93 void NavigationEntryImpl::SetBaseURLForDataURL(const GURL& url) { | 91 void NavigationEntryImpl::SetBaseURLForDataURL(const GURL& url) { |
| 94 base_url_for_data_url_ = url; | 92 base_url_for_data_url_ = url; |
| 95 } | 93 } |
| 96 | 94 |
| 97 const GURL& NavigationEntryImpl::GetBaseURLForDataURL() const { | 95 const GURL& NavigationEntryImpl::GetBaseURLForDataURL() const { |
| 98 return base_url_for_data_url_; | 96 return base_url_for_data_url_; |
| 99 } | 97 } |
| 100 | 98 |
| 101 void NavigationEntryImpl::SetReferrer(const Referrer& referrer) { | 99 void NavigationEntryImpl::SetReferrer(const Referrer& referrer) { |
| 102 referrer_ = referrer; | 100 frame_entry_.set_referrer(referrer); |
| 103 } | 101 } |
| 104 | 102 |
| 105 const Referrer& NavigationEntryImpl::GetReferrer() const { | 103 const Referrer& NavigationEntryImpl::GetReferrer() const { |
| 106 return referrer_; | 104 return frame_entry_.referrer(); |
| 107 } | 105 } |
| 108 | 106 |
| 109 void NavigationEntryImpl::SetVirtualURL(const GURL& url) { | 107 void NavigationEntryImpl::SetVirtualURL(const GURL& url) { |
| 110 virtual_url_ = (url == url_) ? GURL() : url; | 108 virtual_url_ = (url == GetURL()) ? GURL() : url; |
| 111 cached_display_title_.clear(); | 109 cached_display_title_.clear(); |
| 112 } | 110 } |
| 113 | 111 |
| 114 const GURL& NavigationEntryImpl::GetVirtualURL() const { | 112 const GURL& NavigationEntryImpl::GetVirtualURL() const { |
| 115 return virtual_url_.is_empty() ? url_ : virtual_url_; | 113 return virtual_url_.is_empty() ? GetURL() : virtual_url_; |
| 116 } | 114 } |
| 117 | 115 |
| 118 void NavigationEntryImpl::SetTitle(const base::string16& title) { | 116 void NavigationEntryImpl::SetTitle(const base::string16& title) { |
| 119 title_ = title; | 117 title_ = title; |
| 120 cached_display_title_.clear(); | 118 cached_display_title_.clear(); |
| 121 } | 119 } |
| 122 | 120 |
| 123 const base::string16& NavigationEntryImpl::GetTitle() const { | 121 const base::string16& NavigationEntryImpl::GetTitle() const { |
| 124 return title_; | 122 return title_; |
| 125 } | 123 } |
| 126 | 124 |
| 127 void NavigationEntryImpl::SetPageState(const PageState& state) { | 125 void NavigationEntryImpl::SetPageState(const PageState& state) { |
| 128 CHECK(state.ToEncodedData().empty() || state.IsValid()); | 126 CHECK(state.ToEncodedData().empty() || state.IsValid()); |
| 129 page_state_ = state; | 127 page_state_ = state; |
| 130 } | 128 } |
| 131 | 129 |
| 132 const PageState& NavigationEntryImpl::GetPageState() const { | 130 const PageState& NavigationEntryImpl::GetPageState() const { |
| 133 return page_state_; | 131 return page_state_; |
| 134 } | 132 } |
| 135 | 133 |
| 136 void NavigationEntryImpl::SetPageID(int page_id) { | 134 void NavigationEntryImpl::SetPageID(int page_id) { |
| 137 page_id_ = page_id; | 135 page_id_ = page_id; |
| 138 } | 136 } |
| 139 | 137 |
| 140 int32 NavigationEntryImpl::GetPageID() const { | 138 int32 NavigationEntryImpl::GetPageID() const { |
| 141 return page_id_; | 139 return page_id_; |
| 142 } | 140 } |
| 143 | 141 |
| 144 void NavigationEntryImpl::set_site_instance(SiteInstanceImpl* site_instance) { | 142 void NavigationEntryImpl::set_site_instance(SiteInstanceImpl* site_instance) { |
| 145 site_instance_ = site_instance; | 143 frame_entry_.set_site_instance(site_instance); |
| 146 } | 144 } |
| 147 | 145 |
| 148 void NavigationEntryImpl::set_source_site_instance( | 146 void NavigationEntryImpl::set_source_site_instance( |
| 149 SiteInstanceImpl* source_site_instance) { | 147 SiteInstanceImpl* source_site_instance) { |
| 150 source_site_instance_ = source_site_instance; | 148 source_site_instance_ = source_site_instance; |
| 151 } | 149 } |
| 152 | 150 |
| 153 void NavigationEntryImpl::SetBindings(int bindings) { | 151 void NavigationEntryImpl::SetBindings(int bindings) { |
| 154 // Ensure this is set to a valid value, and that it stays the same once set. | 152 // Ensure this is set to a valid value, and that it stays the same once set. |
| 155 CHECK_NE(bindings, kInvalidBindings); | 153 CHECK_NE(bindings, kInvalidBindings); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 166 | 164 |
| 167 // More complicated cases will use the URLs as the title. This result we will | 165 // More complicated cases will use the URLs as the title. This result we will |
| 168 // cache since it's more complicated to compute. | 166 // cache since it's more complicated to compute. |
| 169 if (!cached_display_title_.empty()) | 167 if (!cached_display_title_.empty()) |
| 170 return cached_display_title_; | 168 return cached_display_title_; |
| 171 | 169 |
| 172 // Use the virtual URL first if any, and fall back on using the real URL. | 170 // Use the virtual URL first if any, and fall back on using the real URL. |
| 173 base::string16 title; | 171 base::string16 title; |
| 174 if (!virtual_url_.is_empty()) { | 172 if (!virtual_url_.is_empty()) { |
| 175 title = net::FormatUrl(virtual_url_, languages); | 173 title = net::FormatUrl(virtual_url_, languages); |
| 176 } else if (!url_.is_empty()) { | 174 } else if (!GetURL().is_empty()) { |
| 177 title = net::FormatUrl(url_, languages); | 175 title = net::FormatUrl(GetURL(), languages); |
| 178 } | 176 } |
| 179 | 177 |
| 180 // For file:// URLs use the filename as the title, not the full path. | 178 // For file:// URLs use the filename as the title, not the full path. |
| 181 if (url_.SchemeIsFile()) { | 179 if (GetURL().SchemeIsFile()) { |
| 182 base::string16::size_type slashpos = title.rfind('/'); | 180 base::string16::size_type slashpos = title.rfind('/'); |
| 183 if (slashpos != base::string16::npos) | 181 if (slashpos != base::string16::npos) |
| 184 title = title.substr(slashpos + 1); | 182 title = title.substr(slashpos + 1); |
| 185 } | 183 } |
| 186 | 184 |
| 187 gfx::ElideString(title, kMaxTitleChars, &cached_display_title_); | 185 gfx::ElideString(title, kMaxTitleChars, &cached_display_title_); |
| 188 return cached_display_title_; | 186 return cached_display_title_; |
| 189 } | 187 } |
| 190 | 188 |
| 191 bool NavigationEntryImpl::IsViewSourceMode() const { | 189 bool NavigationEntryImpl::IsViewSourceMode() const { |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 } | 346 } |
| 349 | 347 |
| 350 void NavigationEntryImpl::SetScreenshotPNGData( | 348 void NavigationEntryImpl::SetScreenshotPNGData( |
| 351 scoped_refptr<base::RefCountedBytes> png_data) { | 349 scoped_refptr<base::RefCountedBytes> png_data) { |
| 352 screenshot_ = png_data; | 350 screenshot_ = png_data; |
| 353 if (screenshot_.get()) | 351 if (screenshot_.get()) |
| 354 UMA_HISTOGRAM_MEMORY_KB("Overscroll.ScreenshotSize", screenshot_->size()); | 352 UMA_HISTOGRAM_MEMORY_KB("Overscroll.ScreenshotSize", screenshot_->size()); |
| 355 } | 353 } |
| 356 | 354 |
| 357 } // namespace content | 355 } // namespace content |
| OLD | NEW |