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

Unified Diff: content/renderer/render_view_impl.cc

Issue 1027863002: Move provisional navigation parameters to RenderFrame, and use the HistoryController to distribute … (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes 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
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index d9a9d022e72aec08145befd022df7035e747901a..45caf426cea18be0f1115f6fdc3079a8b718e745 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -330,13 +330,6 @@ static RenderViewImpl* (*g_create_render_view_impl)(const ViewMsg_New_Params&) =
NULL;
// static
-bool RenderViewImpl::IsReload(FrameMsg_Navigate_Type::Value navigation_type) {
- return navigation_type == FrameMsg_Navigate_Type::RELOAD ||
- navigation_type == FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE ||
- navigation_type == FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
-}
-
-// static
Referrer RenderViewImpl::GetReferrerFromRequest(
WebFrame* frame,
const WebURLRequest& request) {
@@ -2081,161 +2074,6 @@ const std::string& RenderViewImpl::GetAcceptLanguages() const {
return renderer_preferences_.accept_languages;
}
-void RenderViewImpl::didCreateDataSource(WebLocalFrame* frame,
- WebDataSource* ds) {
- bool content_initiated = !pending_navigation_params_.get();
-
- // Make sure any previous redirect URLs end up in our new data source.
- if (pending_navigation_params_.get()) {
- for (std::vector<GURL>::const_iterator i =
- pending_navigation_params_->request_params.redirects.begin();
- i != pending_navigation_params_->request_params.redirects.end(); ++i) {
- ds->appendRedirect(*i);
- }
- }
-
- DocumentState* document_state = DocumentState::FromDataSource(ds);
- if (!document_state) {
- document_state = new DocumentState;
- ds->setExtraData(document_state);
- if (!content_initiated)
- PopulateDocumentStateFromPending(document_state);
- }
-
- // Carry over the user agent override flag, if it exists.
- if (content_initiated && webview() && webview()->mainFrame() &&
- webview()->mainFrame()->isWebLocalFrame() &&
- webview()->mainFrame()->dataSource()) {
- DocumentState* old_document_state =
- DocumentState::FromDataSource(webview()->mainFrame()->dataSource());
- if (old_document_state) {
- InternalDocumentStateData* internal_data =
- InternalDocumentStateData::FromDocumentState(document_state);
- InternalDocumentStateData* old_internal_data =
- InternalDocumentStateData::FromDocumentState(old_document_state);
- internal_data->set_is_overriding_user_agent(
- old_internal_data->is_overriding_user_agent());
- }
- }
-
- // The rest of RenderView assumes that a WebDataSource will always have a
- // non-null NavigationState.
- if (content_initiated) {
- document_state->set_navigation_state(
- NavigationStateImpl::CreateContentInitiated());
- } else {
- document_state->set_navigation_state(CreateNavigationStateFromPending());
- pending_navigation_params_.reset();
- }
-
- // DocumentState::referred_by_prefetcher_ is true if we are
- // navigating from a page that used prefetching using a link on that
- // page. We are early enough in the request process here that we
- // can still see the DocumentState of the previous page and set
- // this value appropriately.
- // TODO(gavinp): catch the important case of navigation in a new
- // renderer process.
- if (webview()) {
- if (WebFrame* old_frame = webview()->mainFrame()) {
- const WebURLRequest& original_request = ds->originalRequest();
- const GURL referrer(
- original_request.httpHeaderField(WebString::fromUTF8("Referer")));
- if (!referrer.is_empty() && old_frame->isWebLocalFrame() &&
- DocumentState::FromDataSource(old_frame->dataSource())
- ->was_prefetcher()) {
- for (; old_frame; old_frame = old_frame->traverseNext(false)) {
- WebDataSource* old_frame_ds = old_frame->dataSource();
- if (old_frame_ds && referrer == GURL(old_frame_ds->request().url())) {
- document_state->set_was_referred_by_prefetcher(true);
- break;
- }
- }
- }
- }
- }
-
- if (content_initiated) {
- const WebURLRequest& request = ds->request();
- switch (request.cachePolicy()) {
- case WebURLRequest::UseProtocolCachePolicy: // normal load.
- document_state->set_load_type(DocumentState::LINK_LOAD_NORMAL);
- break;
- case WebURLRequest::ReloadIgnoringCacheData: // reload.
- case WebURLRequest::ReloadBypassingCache: // end-to-end reload.
- document_state->set_load_type(DocumentState::LINK_LOAD_RELOAD);
- break;
- case WebURLRequest::ReturnCacheDataElseLoad: // allow stale data.
- document_state->set_load_type(
- DocumentState::LINK_LOAD_CACHE_STALE_OK);
- break;
- case WebURLRequest::ReturnCacheDataDontLoad: // Don't re-post.
- document_state->set_load_type(DocumentState::LINK_LOAD_CACHE_ONLY);
- break;
- default:
- NOTREACHED();
- }
- }
-
- FOR_EACH_OBSERVER(
- RenderViewObserver, observers_, DidCreateDataSource(frame, ds));
-}
-
-void RenderViewImpl::PopulateDocumentStateFromPending(
- DocumentState* document_state) {
- document_state->set_request_time(
- pending_navigation_params_->request_params.request_time);
-
- InternalDocumentStateData* internal_data =
- InternalDocumentStateData::FromDocumentState(document_state);
-
- if (!pending_navigation_params_->common_params.url.SchemeIs(
- url::kJavaScriptScheme) &&
- pending_navigation_params_->common_params.navigation_type ==
- FrameMsg_Navigate_Type::RESTORE) {
- // We're doing a load of a page that was restored from the last session. By
- // default this prefers the cache over loading (LOAD_PREFERRING_CACHE) which
- // can result in stale data for pages that are set to expire. We explicitly
- // override that by setting the policy here so that as necessary we load
- // from the network.
- //
- // TODO(davidben): Remove this in favor of passing a cache policy to the
- // loadHistoryItem call in OnNavigate. That requires not overloading
- // UseProtocolCachePolicy to mean both "normal load" and "determine cache
- // policy based on load type, etc".
- internal_data->set_cache_policy_override(
- WebURLRequest::UseProtocolCachePolicy);
- }
-
- if (IsReload(pending_navigation_params_->common_params.navigation_type))
- document_state->set_load_type(DocumentState::RELOAD);
- else if (pending_navigation_params_->request_params.page_state.IsValid())
- document_state->set_load_type(DocumentState::HISTORY_LOAD);
- else
- document_state->set_load_type(DocumentState::NORMAL_LOAD);
-
- internal_data->set_is_overriding_user_agent(
- pending_navigation_params_->request_params.is_overriding_user_agent);
- internal_data->set_must_reset_scroll_and_scale_state(
- pending_navigation_params_->common_params.navigation_type ==
- FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL);
- document_state->set_can_load_local_resources(
- pending_navigation_params_->request_params.can_load_local_resources);
-}
-
-NavigationState* RenderViewImpl::CreateNavigationStateFromPending() {
- // A navigation resulting from loading a javascript URL should not be treated
- // as a browser initiated event. Instead, we want it to look as if the page
- // initiated any load resulting from JS execution.
- if (!pending_navigation_params_->common_params.url.SchemeIs(
- url::kJavaScriptScheme)) {
- return NavigationStateImpl::CreateBrowserInitiated(
- pending_navigation_params_->common_params,
- pending_navigation_params_->start_params,
- pending_navigation_params_->request_params);
- }
- return NavigationStateImpl::CreateContentInitiated();
-}
-
void RenderViewImpl::didChangeIcon(WebLocalFrame* frame,
WebIconURL::Type icon_type) {
if (frame->parent())
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698