OLD | NEW |
---|---|
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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
180 } | 180 } |
181 | 181 |
182 void HistoryController::UpdateForCommit(RenderFrameImpl* frame, | 182 void HistoryController::UpdateForCommit(RenderFrameImpl* frame, |
183 const WebHistoryItem& item, | 183 const WebHistoryItem& item, |
184 WebHistoryCommitType commit_type, | 184 WebHistoryCommitType commit_type, |
185 bool navigation_within_page) { | 185 bool navigation_within_page) { |
186 switch (commit_type) { | 186 switch (commit_type) { |
187 case blink::WebBackForwardCommit: | 187 case blink::WebBackForwardCommit: |
188 if (!provisional_entry_) | 188 if (!provisional_entry_) |
189 return; | 189 return; |
190 current_entry_.reset(provisional_entry_.release()); | 190 // Commit the provisional entry, but only if this back/forward item |
191 // matches it. Otherwise it could be a commit from an earlier attempt to | |
192 // go back/forward, and we should leave the provisional entry in place. | |
193 if (HistoryEntry::HistoryNode* node = | |
Nate Chapin
2016/04/01 17:33:51
In most cases, we'll end up looking up the node tw
Charlie Reis
2016/04/01 19:05:35
We can't early exit if the node is null. When the
| |
194 provisional_entry_->GetHistoryNodeForFrame(frame)) { | |
195 if (node->item().itemSequenceNumber() == item.itemSequenceNumber()) | |
Charlie Reis
2016/04/01 17:28:05
Is it safe to assume that a back/forward navigatio
| |
196 current_entry_.reset(provisional_entry_.release()); | |
197 } | |
191 if (HistoryEntry::HistoryNode* node = | 198 if (HistoryEntry::HistoryNode* node = |
192 current_entry_->GetHistoryNodeForFrame(frame)) { | 199 current_entry_->GetHistoryNodeForFrame(frame)) { |
193 node->set_item(item); | 200 node->set_item(item); |
194 } | 201 } |
195 break; | 202 break; |
196 case blink::WebStandardCommit: | 203 case blink::WebStandardCommit: |
197 CreateNewBackForwardItem(frame, item, navigation_within_page); | 204 CreateNewBackForwardItem(frame, item, navigation_within_page); |
198 break; | 205 break; |
199 case blink::WebInitialCommitInChildFrame: | 206 case blink::WebInitialCommitInChildFrame: |
200 UpdateForInitialLoadInChildFrame(frame, item); | 207 UpdateForInitialLoadInChildFrame(frame, item); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
248 bool clone_children_of_target) { | 255 bool clone_children_of_target) { |
249 if (!current_entry_) { | 256 if (!current_entry_) { |
250 current_entry_.reset(new HistoryEntry(new_item)); | 257 current_entry_.reset(new HistoryEntry(new_item)); |
251 } else { | 258 } else { |
252 current_entry_.reset(current_entry_->CloneAndReplace( | 259 current_entry_.reset(current_entry_->CloneAndReplace( |
253 new_item, clone_children_of_target, target_frame, render_view_)); | 260 new_item, clone_children_of_target, target_frame, render_view_)); |
254 } | 261 } |
255 } | 262 } |
256 | 263 |
257 } // namespace content | 264 } // namespace content |
OLD | NEW |