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

Side by Side Diff: content/browser/tab_contents/navigation_entry.cc

Issue 8956059: Rename NavigationController to NavigationControllerImpl and put it into the content namespace. Al... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 8 years, 11 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/tab_contents/navigation_entry.h"
6
7 #include "base/string_util.h"
8 #include "base/utf_string_conversions.h"
9 #include "content/browser/site_instance.h"
10 #include "content/public/common/content_constants.h"
11 #include "content/public/common/url_constants.h"
12 #include "net/base/net_util.h"
13 #include "ui/base/text/text_elider.h"
14
15 using content::FaviconStatus;
16 using content::SSLStatus;
17
18 // Use this to get a new unique ID for a NavigationEntry during construction.
19 // The returned ID is guaranteed to be nonzero (which is the "no ID" indicator).
20 static int GetUniqueIDInConstructor() {
21 static int unique_id_counter = 0;
22 return ++unique_id_counter;
23 }
24
25 namespace content {
26
27 NavigationEntry* NavigationEntry::Create() {
28 return new ::NavigationEntry();
29 }
30
31 NavigationEntry* NavigationEntry::Create(const NavigationEntry& copy) {
32 return new ::NavigationEntry(static_cast<const ::NavigationEntry&>(copy));
33 }
34
35 }
36
37 NavigationEntry* NavigationEntry::FromNavigationEntry(
38 content::NavigationEntry* entry) {
39 return static_cast<NavigationEntry*>(entry);
40 }
41
42 NavigationEntry::NavigationEntry()
43 : unique_id_(GetUniqueIDInConstructor()),
44 site_instance_(NULL),
45 page_type_(content::PAGE_TYPE_NORMAL),
46 update_virtual_url_with_url_(false),
47 page_id_(-1),
48 transition_type_(content::PAGE_TRANSITION_LINK),
49 has_post_data_(false),
50 restore_type_(RESTORE_NONE),
51 is_renderer_initiated_(false) {
52 }
53
54 NavigationEntry::NavigationEntry(SiteInstance* instance,
55 int page_id,
56 const GURL& url,
57 const content::Referrer& referrer,
58 const string16& title,
59 content::PageTransition transition_type,
60 bool is_renderer_initiated)
61 : unique_id_(GetUniqueIDInConstructor()),
62 site_instance_(instance),
63 page_type_(content::PAGE_TYPE_NORMAL),
64 url_(url),
65 referrer_(referrer),
66 update_virtual_url_with_url_(false),
67 title_(title),
68 page_id_(page_id),
69 transition_type_(transition_type),
70 has_post_data_(false),
71 restore_type_(RESTORE_NONE),
72 is_renderer_initiated_(is_renderer_initiated) {
73 }
74
75 NavigationEntry::~NavigationEntry() {
76 }
77
78 int NavigationEntry::GetUniqueID() const {
79 return unique_id_;
80 }
81
82 content::PageType NavigationEntry::GetPageType() const {
83 return page_type_;
84 }
85
86 void NavigationEntry::SetURL(const GURL& url) {
87 url_ = url;
88 cached_display_title_.clear();
89 }
90
91 const GURL& NavigationEntry::GetURL() const {
92 return url_;
93 }
94
95 void NavigationEntry::SetReferrer(const content::Referrer& referrer) {
96 referrer_ = referrer;
97 }
98
99 const content::Referrer& NavigationEntry::GetReferrer() const {
100 return referrer_;
101 }
102
103 void NavigationEntry::SetVirtualURL(const GURL& url) {
104 virtual_url_ = (url == url_) ? GURL() : url;
105 cached_display_title_.clear();
106 }
107
108 const GURL& NavigationEntry::GetVirtualURL() const {
109 return virtual_url_.is_empty() ? url_ : virtual_url_;
110 }
111
112 void NavigationEntry::SetTitle(const string16& title) {
113 title_ = title;
114 cached_display_title_.clear();
115 }
116
117 const string16& NavigationEntry::GetTitle() const {
118 return title_;
119 }
120
121 void NavigationEntry::SetContentState(const std::string& state) {
122 content_state_ = state;
123 }
124
125 const std::string& NavigationEntry::GetContentState() const {
126 return content_state_;
127 }
128
129 void NavigationEntry::SetPageID(int page_id) {
130 page_id_ = page_id;
131 }
132
133 int32 NavigationEntry::GetPageID() const {
134 return page_id_;
135 }
136
137 void NavigationEntry::set_site_instance(SiteInstance* site_instance) {
138 site_instance_ = site_instance;
139 }
140
141 const string16& NavigationEntry::GetTitleForDisplay(
142 const std::string& languages) const {
143 // Most pages have real titles. Don't even bother caching anything if this is
144 // the case.
145 if (!title_.empty())
146 return title_;
147
148 // More complicated cases will use the URLs as the title. This result we will
149 // cache since it's more complicated to compute.
150 if (!cached_display_title_.empty())
151 return cached_display_title_;
152
153 // Use the virtual URL first if any, and fall back on using the real URL.
154 string16 title;
155 if (!virtual_url_.is_empty()) {
156 title = net::FormatUrl(virtual_url_, languages);
157 } else if (!url_.is_empty()) {
158 title = net::FormatUrl(url_, languages);
159 }
160
161 // For file:// URLs use the filename as the title, not the full path.
162 if (url_.SchemeIsFile()) {
163 string16::size_type slashpos = title.rfind('/');
164 if (slashpos != string16::npos)
165 title = title.substr(slashpos + 1);
166 }
167
168 ui::ElideString(title, content::kMaxTitleChars, &cached_display_title_);
169 return cached_display_title_;
170 }
171
172 bool NavigationEntry::IsViewSourceMode() const {
173 return virtual_url_.SchemeIs(chrome::kViewSourceScheme);
174 }
175
176 void NavigationEntry::SetTransitionType(
177 content::PageTransition transition_type) {
178 transition_type_ = transition_type;
179 }
180
181 content::PageTransition NavigationEntry::GetTransitionType() const {
182 return transition_type_;
183 }
184
185 const GURL& NavigationEntry::GetUserTypedURL() const {
186 return user_typed_url_;
187 }
188
189 void NavigationEntry::SetHasPostData(bool has_post_data) {
190 has_post_data_ = has_post_data;
191 }
192
193 bool NavigationEntry::GetHasPostData() const {
194 return has_post_data_;
195 }
196
197 const FaviconStatus& NavigationEntry::GetFavicon() const {
198 return favicon_;
199 }
200
201 FaviconStatus& NavigationEntry::GetFavicon() {
202 return favicon_;
203 }
204
205 const SSLStatus& NavigationEntry::GetSSL() const {
206 return ssl_;
207 }
208
209 SSLStatus& NavigationEntry::GetSSL() {
210 return ssl_;
211 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/navigation_entry.h ('k') | content/browser/tab_contents/navigation_entry_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698