Index: content/renderer/history_controller.cc |
diff --git a/content/renderer/history_controller.cc b/content/renderer/history_controller.cc |
index f2d3d96d341213eeb0ceda09b3d1aa2d1c9fd9e3..798440d68cb5f0078e2f06f0333ec224bea46971 100644 |
--- a/content/renderer/history_controller.cc |
+++ b/content/renderer/history_controller.cc |
@@ -89,9 +89,10 @@ void HistoryController::GoToEntry( |
continue; |
render_frame->SetPendingNavigationParams(make_scoped_ptr( |
new NavigationParams(*navigation_params_.get()))); |
- frame->loadHistoryItem(item.second, |
- blink::WebHistorySameDocumentLoad, |
- cache_policy); |
+ WebURLRequest request = |
+ frame->RequestFromHistoryItem(item.second, cache_policy); |
+ frame->loadRequest(request, WebFrame::WebFrameLoadTypeHistorySameDocument, |
+ item.second); |
} |
for (const auto& item : different_document_loads) { |
WebFrame* frame = item.first; |
@@ -100,12 +101,48 @@ void HistoryController::GoToEntry( |
continue; |
render_frame->SetPendingNavigationParams(make_scoped_ptr( |
new NavigationParams(*navigation_params_.get()))); |
- frame->loadHistoryItem(item.second, |
- blink::WebHistoryDifferentDocumentLoad, |
- cache_policy); |
+ WebURLRequest request = |
+ frame->RequestFromHistoryItem(item.second, cache_policy); |
+ frame->loadRequest(request, WebFrame::WebFrameLoadTypeBackForward, |
Charlie Reis
2015/05/27 23:34:35
The old names seemed like a clearer pair to me (Sa
clamy
2015/05/29 14:47:01
I brought back the WebHistoryLoadType following co
|
+ item.second); |
} |
} |
+blink::WebHistoryItem HistoryController::FindItemForFrame( |
+ scoped_ptr<HistoryEntry> target_entry, |
+ RenderFrameImpl* target_frame, |
+ blink::WebURLRequest::CachePolicy cache_policy, |
+ blink::WebFrame::WebFrameLoadType* load_type) { |
+ HistoryFrameLoadVector same_document_loads; |
+ HistoryFrameLoadVector different_document_loads; |
+ |
+ provisional_entry_ = target_entry.Pass(); |
+ |
+ WebFrame* main_frame = render_view_->GetMainRenderFrame()->GetWebFrame(); |
+ if (current_entry_) { |
+ RecursiveGoToEntry(main_frame, same_document_loads, |
Charlie Reis
2015/05/27 23:34:35
I'd like to avoid this if we can. I'm trying to m
clamy
2015/05/29 14:47:01
Done.
|
+ different_document_loads); |
+ } |
+ |
+ for (const auto& item : same_document_loads) { |
+ WebFrame* frame = item.first; |
+ RenderFrameImpl* render_frame = RenderFrameImpl::FromWebFrame(frame); |
+ if (!render_frame || render_frame != target_frame) |
+ continue; |
+ *load_type = WebFrame::WebFrameLoadTypeHistorySameDocument; |
+ return item.second; |
+ } |
+ for (const auto& item : different_document_loads) { |
+ WebFrame* frame = item.first; |
+ RenderFrameImpl* render_frame = RenderFrameImpl::FromWebFrame(frame); |
+ if (!render_frame || render_frame != target_frame) |
+ continue; |
+ *load_type = WebFrame::WebFrameLoadTypeBackForward; |
+ return item.second; |
+ } |
+ return blink::WebHistoryItem(); |
+} |
+ |
void HistoryController::RecursiveGoToEntry( |
WebFrame* frame, |
HistoryFrameLoadVector& same_document_loads, |