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

Unified Diff: content/renderer/history_controller.cc

Issue 1157863005: Use WebFrame::loadRequest for reloads and history navigations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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: 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,

Powered by Google App Engine
This is Rietveld 408576698