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

Unified Diff: content/renderer/render_view.cc

Issue 7649009: Merge of 97624 to 835 branch. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/835/src/
Patch Set: Created 9 years, 4 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
« no previous file with comments | « content/renderer/render_view.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view.cc
===================================================================
--- content/renderer/render_view.cc (revision 96734)
+++ content/renderer/render_view.cc (working copy)
@@ -699,8 +699,9 @@
#endif
IPC_MESSAGE_HANDLER(ViewMsg_UpdateRemoteAccessClientFirewallTraversal,
OnUpdateRemoteAccessClientFirewallTraversal)
- IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndClear,
- OnSetHistoryLengthAndClear)
+ IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune,
+ OnSetHistoryLengthAndPrune)
+
// Have the super handle all other messages.
IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message))
IPC_END_MESSAGE_MAP()
@@ -979,6 +980,27 @@
WebString::fromUTF8("SelectAll"));
}
+void RenderView::OnSetHistoryLengthAndPrune(int history_length,
+ int32 minimum_page_id) {
+ DCHECK(history_length >= 0);
+ DCHECK(history_list_offset_ == history_list_length_ - 1);
+ DCHECK(minimum_page_id >= -1);
+
+ // Generate the new list.
+ std::vector<int32> new_history_page_ids(history_length, -1);
+ for (size_t i = 0; i < history_page_ids_.size(); ++i) {
+ if (minimum_page_id >= 0 && history_page_ids_[i] < minimum_page_id)
+ continue;
+ new_history_page_ids.push_back(history_page_ids_[i]);
+ }
+ new_history_page_ids.swap(history_page_ids_);
+
+ // Update indexes.
+ history_list_length_ = history_page_ids_.size();
+ history_list_offset_ = history_list_length_ - 1;
+}
+
+
void RenderView::OnSetInitialFocus(bool reverse) {
if (!webview())
return;
@@ -1006,32 +1028,6 @@
}
}
-void RenderView::OnSetHistoryLengthAndClear(int history_length) {
- DCHECK(history_length >= 0);
-
- // history_list_length_ may be 0 if this is called between
- // a navigate and a commit of the provisional load. Otherwise,
- // only add one entry, regardless of how long the current history is.
- // TODO(cbentzel): Investigate what happens if a prerendered page
- // navigates to several entries before it is swapped in. Cropping
- // those may be a bad idea.
- int new_history_list_length = history_length;
- if (history_list_length_ > 0)
- ++new_history_list_length;
-
- DCHECK(page_id_ == -1 ||
- (history_list_offset_ >= 0 &&
- page_id_ == history_page_ids_[history_list_offset_]));
-
- // Generate the new list.
- std::vector<int32> new_history_page_ids(new_history_list_length, -1);
- if (page_id_ != -1)
- new_history_page_ids[new_history_list_length - 1] = page_id_;
- new_history_page_ids.swap(history_page_ids_);
- history_list_offset_ = new_history_list_length - 1;
- history_list_length_ = new_history_list_length;
-}
-
///////////////////////////////////////////////////////////////////////////////
// Tell the embedding application that the URL of the active page has changed
« no previous file with comments | « content/renderer/render_view.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698