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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 971653004: Remove the FrameMsg_Navigate_Params (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@history-params
Patch Set: Created 5 years, 9 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/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 3e4317cb0cbaff6cbc8d6b50a8e16408c2184dfe..f6f2816a27abbf3c200fd3308b6a52dfe9c0af8d 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -456,12 +456,9 @@ CommonNavigationParams MakeCommonNavigationParams(
static_cast<RequestExtraData*>(request->extraData());
if (!extra_data)
extra_data = &kEmptyData;
- CommonNavigationParams params;
- params.url = request->url();
- params.referrer = Referrer(
+ Referrer referrer(
GURL(request->httpHeaderField(WebString::fromUTF8("Referer")).latin1()),
request->referrerPolicy());
- params.transition = extra_data->transition_type();
// Set the ui timestamp for this navigation. Currently the timestamp here is
// only non empty when the navigation was triggered by an Android intent, or
@@ -469,11 +466,15 @@ CommonNavigationParams MakeCommonNavigationParams(
// version supported by blink. It will be passed back to the renderer in the
// CommitNavigation IPC, and then back to the browser again in the
// DidCommitProvisionalLoad and the DocumentLoadComplete IPCs.
- params.ui_timestamp =
+ base::TimeTicks ui_timestamp =
base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime());
- params.report_type = static_cast<FrameMsg_UILoadMetricsReportType::Value>(
- request->inputPerfMetricReportPolicy());
- return params;
+ FrameMsg_UILoadMetricsReportType::Value report_type =
+ static_cast<FrameMsg_UILoadMetricsReportType::Value>(
+ request->inputPerfMetricReportPolicy());
+ return CommonNavigationParams(request->url(), referrer,
+ extra_data->transition_type(),
+ FrameMsg_Navigate_Type::NORMAL, true,
+ ui_timestamp, report_type, GURL(), GURL());
}
#if !defined(OS_ANDROID)
@@ -1032,31 +1033,34 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
return handled;
}
-void RenderFrameImpl::OnNavigate(const FrameMsg_Navigate_Params& params) {
- TRACE_EVENT2("navigation", "RenderFrameImpl::OnNavigate",
- "id", routing_id_,
- "url", params.common_params.url.possibly_invalid_spec());
+void RenderFrameImpl::OnNavigate(
+ const CommonNavigationParams& common_params,
+ const StartNavigationParams& start_params,
+ const CommitNavigationParams& commit_params,
+ const HistoryNavigationParams& history_params) {
+ TRACE_EVENT2("navigation", "RenderFrameImpl::OnNavigate", "id", routing_id_,
+ "url", common_params.url.possibly_invalid_spec());
- bool is_reload =
- RenderViewImpl::IsReload(params.common_params.navigation_type);
- bool is_history_navigation = params.history_params.page_state.IsValid();
+ bool is_reload = RenderViewImpl::IsReload(common_params.navigation_type);
+ bool is_history_navigation = history_params.page_state.IsValid();
WebURLRequest::CachePolicy cache_policy =
WebURLRequest::UseProtocolCachePolicy;
if (!RenderFrameImpl::PrepareRenderViewForNavigation(
- params.common_params.url, is_history_navigation,
- params.history_params, &is_reload, &cache_policy)) {
+ common_params.url, is_history_navigation, history_params, &is_reload,
+ &cache_policy)) {
Send(new FrameHostMsg_DidDropNavigation(routing_id_));
return;
}
- GetContentClient()->SetActiveURL(params.common_params.url);
+ GetContentClient()->SetActiveURL(common_params.url);
WebFrame* frame = frame_;
- if (!params.frame_to_navigate.empty()) {
+ if (!commit_params.frame_to_navigate.empty()) {
// TODO(nasko): Move this lookup to the browser process.
frame = render_view_->webview()->findFrameByName(
- WebString::fromUTF8(params.frame_to_navigate));
- CHECK(frame) << "Invalid frame name passed: " << params.frame_to_navigate;
+ WebString::fromUTF8(commit_params.frame_to_navigate));
+ CHECK(frame) << "Invalid frame name passed: "
+ << commit_params.frame_to_navigate;
}
if (is_reload && !render_view_->history_controller()->GetCurrentEntry()) {
@@ -1066,8 +1070,14 @@ void RenderFrameImpl::OnNavigate(const FrameMsg_Navigate_Params& params) {
cache_policy = WebURLRequest::ReloadIgnoringCacheData;
}
- render_view_->pending_navigation_params_.reset(
- new FrameMsg_Navigate_Params(params));
+ render_view_->pending_common_params_.reset(
clamy 2015/03/09 14:34:47 We probably need to do something similar in OnComm
+ new CommonNavigationParams(common_params));
+ render_view_->pending_start_params_.reset(
+ new StartNavigationParams(start_params));
+ render_view_->pending_commit_params_.reset(
+ new CommitNavigationParams(commit_params));
+ render_view_->pending_history_params_.reset(
+ new HistoryNavigationParams(history_params));
// If we are reloading, then WebKit will use the history state of the current
// page, so we should just ignore any given history state. Otherwise, if we
@@ -1075,38 +1085,37 @@ void RenderFrameImpl::OnNavigate(const FrameMsg_Navigate_Params& params) {
// back/forward navigation event.
if (is_reload) {
bool reload_original_url =
- (params.common_params.navigation_type ==
+ (common_params.navigation_type ==
FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL);
- bool ignore_cache = (params.common_params.navigation_type ==
+ bool ignore_cache = (common_params.navigation_type ==
FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE);
if (reload_original_url)
- frame->reloadWithOverrideURL(params.common_params.url, true);
+ frame->reloadWithOverrideURL(common_params.url, true);
else
frame->reload(ignore_cache);
} else if (is_history_navigation) {
// We must know the page ID of the page we are navigating back to.
- DCHECK_NE(params.history_params.page_id, -1);
+ DCHECK_NE(history_params.page_id, -1);
scoped_ptr<HistoryEntry> entry =
- PageStateToHistoryEntry(params.history_params.page_state);
+ PageStateToHistoryEntry(history_params.page_state);
if (entry) {
// Ensure we didn't save the swapped out URL in UpdateState, since the
// browser should never be telling us to navigate to swappedout://.
CHECK(entry->root().urlString() != WebString::fromUTF8(kSwappedOutURL));
render_view_->history_controller()->GoToEntry(entry.Pass(), cache_policy);
}
- } else if (!params.common_params.base_url_for_data_url.is_empty()) {
- LoadDataURL(params.common_params, frame);
+ } else if (!common_params.base_url_for_data_url.is_empty()) {
+ LoadDataURL(common_params, frame);
} else {
// Navigate to the given URL.
- WebURLRequest request =
- CreateURLRequestForNavigation(params.common_params,
- scoped_ptr<StreamOverrideParameters>(),
- frame->isViewSourceModeEnabled());
-
- if (!params.extra_headers.empty()) {
- for (net::HttpUtil::HeadersIterator i(params.extra_headers.begin(),
- params.extra_headers.end(),
+ WebURLRequest request = CreateURLRequestForNavigation(
+ common_params, scoped_ptr<StreamOverrideParameters>(),
+ frame->isViewSourceModeEnabled());
+
+ if (!start_params.extra_headers.empty()) {
+ for (net::HttpUtil::HeadersIterator i(start_params.extra_headers.begin(),
+ start_params.extra_headers.end(),
"\n");
i.GetNext();) {
request.addHTTPHeaderField(WebString::fromUTF8(i.name()),
@@ -1114,37 +1123,39 @@ void RenderFrameImpl::OnNavigate(const FrameMsg_Navigate_Params& params) {
}
}
- if (params.is_post) {
+ if (start_params.is_post) {
request.setHTTPMethod(WebString::fromUTF8("POST"));
// Set post data.
WebHTTPBody http_body;
http_body.initialize();
const char* data = NULL;
- if (params.browser_initiated_post_data.size()) {
+ if (start_params.browser_initiated_post_data.size()) {
data = reinterpret_cast<const char*>(
- &params.browser_initiated_post_data.front());
+ &start_params.browser_initiated_post_data.front());
}
http_body.appendData(
- WebData(data, params.browser_initiated_post_data.size()));
+ WebData(data, start_params.browser_initiated_post_data.size()));
request.setHTTPBody(http_body);
}
// A session history navigation should have been accompanied by state.
- CHECK_EQ(params.history_params.page_id, -1);
+ CHECK_EQ(history_params.page_id, -1);
// Record this before starting the load, we need a lower bound of this time
// to sanitize the navigationStart override set below.
base::TimeTicks renderer_navigation_start = base::TimeTicks::Now();
frame->loadRequest(request);
- UpdateFrameNavigationTiming(
- frame, params.commit_params.browser_navigation_start,
- renderer_navigation_start);
+ UpdateFrameNavigationTiming(frame, commit_params.browser_navigation_start,
+ renderer_navigation_start);
}
// In case LoadRequest failed before DidCreateDataSource was called.
- render_view_->pending_navigation_params_.reset();
+ render_view_->pending_common_params_.reset();
+ render_view_->pending_start_params_.reset();
+ render_view_->pending_commit_params_.reset();
+ render_view_->pending_history_params_.reset();
}
void RenderFrameImpl::NavigateToSwappedOutURL() {
@@ -2431,20 +2442,19 @@ void RenderFrameImpl::didFailProvisionalLoad(blink::WebLocalFrame* frame,
// If we failed on a browser initiated request, then make sure that our error
// page load is regarded as the same browser initiated request.
if (!navigation_state->is_content_initiated()) {
clamy 2015/03/09 14:34:47 This is quite bulky, and my intention is to refact
- render_view_->pending_navigation_params_.reset(
- new FrameMsg_Navigate_Params);
- FrameMsg_Navigate_Params* pending_params =
- render_view_->pending_navigation_params_.get();
- pending_params->history_params.page_id =
- navigation_state->pending_page_id();
- pending_params->history_params.pending_history_list_offset =
- navigation_state->pending_history_list_offset();
- pending_params->history_params.should_clear_history_list =
- navigation_state->history_list_was_cleared();
- pending_params->common_params.transition =
- navigation_state->transition_type();
- pending_params->request_time = document_state->request_time();
- pending_params->should_replace_current_entry = replace;
+ render_view_->pending_common_params_.reset(new CommonNavigationParams(
+ error.unreachableURL, Referrer(), navigation_state->transition_type(),
+ FrameMsg_Navigate_Type::NORMAL, true, base::TimeTicks(),
+ FrameMsg_UILoadMetricsReportType::NO_REPORT, GURL(), GURL()));
+ render_view_->pending_commit_params_.reset(new CommitNavigationParams(
+ false, base::TimeTicks(), std::vector<GURL>(), false, std::string(),
+ document_state->request_time()));
+ render_view_->pending_start_params_.reset(new StartNavigationParams(
+ false, std::string(), std::vector<unsigned char>(), replace, -1, -1));
+ render_view_->pending_history_params_.reset(new HistoryNavigationParams(
+ PageState(), navigation_state->pending_page_id(),
+ navigation_state->pending_history_list_offset(), -1, 0,
+ navigation_state->history_list_was_cleared()));
}
// Load an error page.

Powered by Google App Engine
This is Rietveld 408576698