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

Side by Side Diff: content/renderer/history_controller.cc

Issue 2023013002: Prevent renderer kills for in-page navigations on subframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase filter file Created 4 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 /* 5 /*
6 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
9 * (http://www.torchmobile.com/) 9 * (http://www.torchmobile.com/)
10 * 10 *
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 128
129 void HistoryController::RecursiveGoToEntry( 129 void HistoryController::RecursiveGoToEntry(
130 WebFrame* frame, 130 WebFrame* frame,
131 HistoryFrameLoadVector& same_document_loads, 131 HistoryFrameLoadVector& same_document_loads,
132 HistoryFrameLoadVector& different_document_loads) { 132 HistoryFrameLoadVector& different_document_loads) {
133 DCHECK(provisional_entry_); 133 DCHECK(provisional_entry_);
134 DCHECK(current_entry_); 134 DCHECK(current_entry_);
135 RenderFrameImpl* render_frame = RenderFrameImpl::FromWebFrame(frame); 135 RenderFrameImpl* render_frame = RenderFrameImpl::FromWebFrame(frame);
136 const WebHistoryItem& new_item = 136 const WebHistoryItem& new_item =
137 provisional_entry_->GetItemForFrame(render_frame); 137 provisional_entry_->GetItemForFrame(render_frame);
138 const WebHistoryItem& old_item = 138
139 current_entry_->GetItemForFrame(render_frame); 139 // Use the last committed history item for the frame rather than
140 // current_entry_, since the latter may not accurately reflect which URL is
141 // currently committed in the frame. See https://crbug.com/612713#c12.
142 const WebHistoryItem& old_item = render_frame->current_history_item();
143
140 if (new_item.isNull()) 144 if (new_item.isNull())
141 return; 145 return;
142 146
143 if (old_item.isNull() || 147 if (old_item.isNull() ||
144 new_item.itemSequenceNumber() != old_item.itemSequenceNumber()) { 148 new_item.itemSequenceNumber() != old_item.itemSequenceNumber()) {
145 if (!old_item.isNull() && 149 if (!old_item.isNull() &&
146 new_item.documentSequenceNumber() == 150 new_item.documentSequenceNumber() ==
147 old_item.documentSequenceNumber()) { 151 old_item.documentSequenceNumber()) {
148 same_document_loads.push_back(std::make_pair(frame, new_item)); 152 same_document_loads.push_back(std::make_pair(frame, new_item));
149 153
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 bool clone_children_of_target) { 288 bool clone_children_of_target) {
285 if (!current_entry_) { 289 if (!current_entry_) {
286 current_entry_.reset(new HistoryEntry(new_item)); 290 current_entry_.reset(new HistoryEntry(new_item));
287 } else { 291 } else {
288 current_entry_.reset(current_entry_->CloneAndReplace( 292 current_entry_.reset(current_entry_->CloneAndReplace(
289 new_item, clone_children_of_target, target_frame, render_view_)); 293 new_item, clone_children_of_target, target_frame, render_view_));
290 } 294 }
291 } 295 }
292 296
293 } // namespace content 297 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_controller_impl_browsertest.cc ('k') | content/renderer/history_entry.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698