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

Unified Diff: chrome/browser/native_ui_contents.cc

Issue 479: DidNavigate refactor of doom (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 3 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: chrome/browser/native_ui_contents.cc
===================================================================
--- chrome/browser/native_ui_contents.cc (revision 1840)
+++ chrome/browser/native_ui_contents.cc (working copy)
@@ -210,20 +210,20 @@
state_.reset(page_state);
NavigationController* ctrl = controller();
if (ctrl) {
- NavigationEntry* ne = ctrl->GetLastCommittedEntry();
+ int ne_index = ctrl->GetLastCommittedEntryIndex();
+ NavigationEntry* ne = ctrl->GetEntryAtIndex(ne_index);
if (ne) {
// NavigationEntry is null if we're being restored.
DCHECK(ne);
std::string rep;
state_->GetByteRepresentation(&rep);
ne->set_content_state(rep);
- // This is not a WebContents, so we use a NULL SiteInstance.
- ctrl->NotifyEntryChangedByPageID(type(), NULL, ne->page_id());
+ ctrl->NotifyEntryChanged(ne, ne_index);
}
}
}
-bool NativeUIContents::Navigate(const NavigationEntry& entry, bool reload) {
+bool NativeUIContents::NavigateToPendingEntry(bool reload) {
ChromeViews::RootView* root_view = GetRootView();
DCHECK(root_view);
@@ -234,7 +234,8 @@
current_view_ = NULL;
}
- NativeUI* new_ui = GetNativeUIForURL(entry.url());
+ NavigationEntry* pending_entry = controller()->GetPendingEntry();
+ NativeUI* new_ui = GetNativeUIForURL(pending_entry->url());
if (new_ui) {
current_ui_ = new_ui;
is_visible_ = true;
@@ -242,9 +243,9 @@
current_view_ = new_ui->GetView();
root_view->AddChildView(current_view_);
- std::string s = entry.content_state();
+ std::string s = pending_entry->content_state();
if (s.empty())
- state_->InitWithURL(entry.url());
+ state_->InitWithURL(pending_entry->url());
else
state_->InitWithBytes(s);
@@ -252,29 +253,32 @@
Layout();
}
- NavigationEntry* new_entry = new NavigationEntry(entry);
- if (new_entry->page_id() == -1)
- new_entry->set_page_id(++g_next_page_id);
- new_entry->set_title(GetDefaultTitle());
- new_entry->favicon().set_bitmap(GetFavIcon());
- new_entry->favicon().set_is_valid(true);
+ // Commit the new load in the navigation controller. If the ID of the
+ // NavigationEntry we were given was -1, that means this is a new load, so
+ // we have to generate a new ID.
+ controller()->CommitPendingEntry();
+
+ // Populate the committed entry.
+ NavigationEntry* committed_entry = controller()->GetLastCommittedEntry();
+ committed_entry->set_title(GetDefaultTitle());
+ committed_entry->favicon().set_bitmap(GetFavIcon());
+ committed_entry->favicon().set_is_valid(true);
if (new_ui) {
// Strip out the query params, they should have moved to state.
// TODO(sky): use GURL methods for replacements once bug is fixed.
size_t scheme_end, host_end;
- GetSchemeAndHostEnd(entry.url(), &scheme_end, &host_end);
- new_entry->set_url(GURL(entry.url().spec().substr(0, host_end)));
+ GetSchemeAndHostEnd(committed_entry->url(), &scheme_end, &host_end);
+ committed_entry->set_url(
+ GURL(committed_entry->url().spec().substr(0, host_end)));
}
std::string content_state;
state_->GetByteRepresentation(&content_state);
- new_entry->set_content_state(content_state);
- const int32 page_id = new_entry->page_id();
+ committed_entry->set_content_state(content_state);
- // The default details is "new navigation", and that's OK with us.
- NavigationController::LoadCommittedDetails details;
- DidNavigateToEntry(new_entry, &details);
- // This is not a WebContents, so we use a NULL SiteInstance.
- controller()->NotifyEntryChangedByPageID(type(), NULL, page_id);
+ // Broadcast the fact that we just updated all that crap.
+ controller()->NotifyEntryChanged(
+ committed_entry,
+ controller()->GetIndexOfEntry(committed_entry));
return true;
}

Powered by Google App Engine
This is Rietveld 408576698