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

Unified Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1309323004: Create a NavigationEntry for the initial blank page. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix GetEntryCount, more tests Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/web_contents/web_contents_impl.cc
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 4802886938a4dc9816d57cf2cbdd3b68a40deca7..f0fb76831d2eb9f8561ab5d87f67dbf267c221df 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -712,21 +712,15 @@ BrowserContext* WebContentsImpl::GetBrowserContext() const {
}
const GURL& WebContentsImpl::GetURL() const {
- // We may not have a navigation entry yet.
- NavigationEntry* entry = controller_.GetVisibleEntry();
- return entry ? entry->GetVirtualURL() : GURL::EmptyGURL();
+ return controller_.GetVisibleEntry()->GetVirtualURL();
}
const GURL& WebContentsImpl::GetVisibleURL() const {
- // We may not have a navigation entry yet.
- NavigationEntry* entry = controller_.GetVisibleEntry();
- return entry ? entry->GetVirtualURL() : GURL::EmptyGURL();
+ return controller_.GetVisibleEntry()->GetVirtualURL();
}
const GURL& WebContentsImpl::GetLastCommittedURL() const {
- // We may not have a navigation entry yet.
- NavigationEntry* entry = controller_.GetLastCommittedEntry();
- return entry ? entry->GetVirtualURL() : GURL::EmptyGURL();
+ return controller_.GetLastCommittedEntry()->GetVirtualURL();
}
WebContentsDelegate* WebContentsImpl::GetDelegate() {
@@ -955,19 +949,17 @@ const base::string16& WebContentsImpl::GetTitle() const {
// Otherwise, we want to stick with the last committed entry's title during
// new navigations, which have pending entries at index -1 with no title.
if (controller_.IsInitialNavigation() &&
- ((controller_.GetVisibleEntry() &&
- !controller_.GetVisibleEntry()->GetTitle().empty()) ||
+ (!controller_.GetVisibleEntry()->GetTitle().empty() ||
controller_.GetPendingEntryIndex() != -1)) {
entry = controller_.GetVisibleEntry();
}
- if (entry) {
- return entry->GetTitleForDisplay(accept_languages);
- }
+ // Return the empty string (not about:blank) for the initial blank page.
+ if (controller_.IsInitialNavigation() &&
+ entry == controller_.GetLastCommittedEntry())
+ return entry->GetTitle();
- // |page_title_when_no_navigation_entry_| is finally used
- // if no title cannot be retrieved.
- return page_title_when_no_navigation_entry_;
+ return entry->GetTitleForDisplay(accept_languages);
}
int32 WebContentsImpl::GetMaxPageID() {
@@ -1352,6 +1344,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
params.routing_id, params.main_frame_routing_id,
MSG_ROUTING_NONE);
frame_tree_.root()->SetFrameName(params.main_frame_name);
+ controller_.Init(params.site_instance);
WebContentsViewDelegate* delegate =
GetContentClient()->browser()->GetWebContentsViewDelegate(this);
@@ -3520,6 +3513,8 @@ void WebContentsImpl::UpdateMaxPageIDIfNecessary(RenderViewHost* rvh) {
bool WebContentsImpl::UpdateTitleForEntry(NavigationEntryImpl* entry,
const base::string16& title) {
+ DCHECK(entry);
+
// For file URLs without a title, use the pathname instead. In the case of a
// synthesized title, we don't want the update to count toward the "one set
// per page of the title to history."
@@ -3533,20 +3528,10 @@ bool WebContentsImpl::UpdateTitleForEntry(NavigationEntryImpl* entry,
explicit_set = true;
}
- // If a page is created via window.open and never navigated,
- // there will be no navigation entry. In this situation,
- // |page_title_when_no_navigation_entry_| will be used for page title.
- if (entry) {
- if (final_title == entry->GetTitle())
- return false; // Nothing changed, don't bother.
-
- entry->SetTitle(final_title);
- } else {
- if (page_title_when_no_navigation_entry_ == final_title)
- return false; // Nothing changed, don't bother.
+ if (final_title == entry->GetTitle())
+ return false; // Nothing changed, don't bother.
- page_title_when_no_navigation_entry_ = final_title;
- }
+ entry->SetTitle(final_title);
// Lastly, set the title for the view.
view_->SetPageTitle(final_title);
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/web_contents/web_contents_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698