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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 1371673002: Remove a bunch of provisionalDataSource() usage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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_frame_impl.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 551545eb266cc147cb0d83ef246234a110e9dd27..575e282b2ef68f46cd0bb8bd6b8ac36468b00b17 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2460,11 +2460,9 @@ void RenderFrameImpl::willSendSubmitEvent(blink::WebLocalFrame* frame,
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WillSendSubmitEvent(form));
}
-void RenderFrameImpl::willSubmitForm(blink::WebLocalFrame* frame,
+void RenderFrameImpl::willSubmitForm(blink::WebDataSource* datasource,
const blink::WebFormElement& form) {
- DCHECK(!frame_ || frame_ == frame);
- DocumentState* document_state =
- DocumentState::FromDataSource(frame->provisionalDataSource());
+ DocumentState* document_state = DocumentState::FromDataSource(datasource);
NavigationStateImpl* navigation_state =
static_cast<NavigationStateImpl*>(document_state->navigation_state());
InternalDocumentStateData* internal_data =
@@ -2600,22 +2598,17 @@ void RenderFrameImpl::didCreateDataSource(blink::WebLocalFrame* frame,
}
}
-void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
+void RenderFrameImpl::didStartProvisionalLoad(blink::WebDataSource* datasource,
double triggering_event_time) {
- DCHECK(!frame_ || frame_ == frame);
- WebDataSource* ds = frame->provisionalDataSource();
-
- // In fast/loader/stop-provisional-loads.html, we abort the load before this
- // callback is invoked.
- if (!ds)
- return;
+ DCHECK(datasource);
- TRACE_EVENT2("navigation", "RenderFrameImpl::didStartProvisionalLoad",
- "id", routing_id_, "url", ds->request().url().string().utf8());
- DocumentState* document_state = DocumentState::FromDataSource(ds);
+ TRACE_EVENT2("navigation", "RenderFrameImpl::didStartProvisionalLoad", "id",
+ routing_id_, "url", datasource->request().url().string().utf8());
+ DocumentState* document_state = DocumentState::FromDataSource(datasource);
// We should only navigate to swappedout:// when is_swapped_out_ is true.
- CHECK_IMPLIES(ds->request().url() == GURL(kSwappedOutURL), is_swapped_out_)
+ CHECK_IMPLIES(datasource->request().url() == GURL(kSwappedOutURL),
+ is_swapped_out_)
<< "Heard swappedout:// when not swapped out.";
// Update the request time if WebKit has better knowledge of it.
@@ -2627,12 +2620,12 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
// Start time is only set after request time.
document_state->set_start_load_time(Time::Now());
- bool is_top_most = !frame->parent();
+ bool is_top_most = !frame_->parent();
if (is_top_most) {
render_view_->set_navigation_gesture(
WebUserGestureIndicator::isProcessingUserGesture() ?
NavigationGestureUser : NavigationGestureAuto);
- } else if (ds->replacesCurrentHistoryItem()) {
+ } else if (datasource->replacesCurrentHistoryItem()) {
// Subframe navigations that don't add session history items must be
// marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we
// handle loading of error pages.
@@ -2641,11 +2634,12 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
}
FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
- DidStartProvisionalLoad(frame));
- FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad());
+ DidStartProvisionalLoad(datasource));
+ FOR_EACH_OBSERVER(RenderFrameObserver, observers_,
+ DidStartProvisionalLoad(datasource));
Send(new FrameHostMsg_DidStartProvisionalLoadForFrame(
- routing_id_, ds->request().url()));
+ routing_id_, datasource->request().url()));
}
void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
@@ -2655,16 +2649,14 @@ void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
}
void RenderFrameImpl::didFailProvisionalLoad(
- blink::WebLocalFrame* frame,
+ blink::WebDataSource* datasource,
const blink::WebURLError& error,
blink::WebHistoryCommitType commit_type) {
TRACE_EVENT1("navigation", "RenderFrameImpl::didFailProvisionalLoad",
"id", routing_id_);
- DCHECK(!frame_ || frame_ == frame);
- WebDataSource* ds = frame->provisionalDataSource();
- DCHECK(ds);
+ DCHECK(datasource);
- const WebURLRequest& failed_request = ds->request();
+ const WebURLRequest& failed_request = datasource->request();
// Notify the browser that we failed a provisional load with an error.
//
@@ -2673,19 +2665,19 @@ void RenderFrameImpl::didFailProvisionalLoad(
// notified the load stopped.
//
FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
- DidFailProvisionalLoad(frame, error));
+ DidFailProvisionalLoad(frame_, error));
FOR_EACH_OBSERVER(RenderFrameObserver, observers_,
DidFailProvisionalLoad(error));
- SendFailedProvisionalLoad(failed_request, error, frame);
+ SendFailedProvisionalLoad(failed_request, error, frame_);
if (!ShouldDisplayErrorPageForFailedLoad(error.reason, error.unreachableURL))
return;
// Make sure we never show errors in view source mode.
- frame->enableViewSourceMode(false);
+ frame_->enableViewSourceMode(false);
- DocumentState* document_state = DocumentState::FromDataSource(ds);
+ DocumentState* document_state = DocumentState::FromDataSource(datasource);
NavigationStateImpl* navigation_state =
static_cast<NavigationStateImpl*>(document_state->navigation_state());
@@ -2992,27 +2984,21 @@ void RenderFrameImpl::didHandleOnloadEvents(blink::WebLocalFrame* frame) {
}
}
-void RenderFrameImpl::didFailLoad(blink::WebLocalFrame* frame,
+void RenderFrameImpl::didFailLoad(blink::WebDataSource* datasource,
const blink::WebURLError& error,
blink::WebHistoryCommitType commit_type) {
TRACE_EVENT1("navigation", "RenderFrameImpl::didFailLoad",
"id", routing_id_);
- DCHECK(!frame_ || frame_ == frame);
// TODO(nasko): Move implementation here. No state needed.
- WebDataSource* ds = frame->dataSource();
- DCHECK(ds);
+ DCHECK(datasource);
FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
- DidFailLoad(frame, error));
+ DidFailLoad(frame_, error));
- const WebURLRequest& failed_request = ds->request();
+ const WebURLRequest& failed_request = datasource->request();
base::string16 error_description;
GetContentClient()->renderer()->GetNavigationErrorStrings(
- render_view_.get(),
- frame,
- failed_request,
- error,
- NULL,
+ render_view_.get(), frame_, failed_request, error, NULL,
&error_description);
Send(new FrameHostMsg_DidFailLoadWithError(routing_id_,
failed_request.url(),
@@ -3221,11 +3207,11 @@ void RenderFrameImpl::clearContextMenu() {
}
void RenderFrameImpl::willSendRequest(
- blink::WebLocalFrame* frame,
+ blink::WebDataSource* datasource,
unsigned identifier,
blink::WebURLRequest& request,
const blink::WebURLResponse& redirect_response) {
- DCHECK(!frame_ || frame_ == frame);
+ DCHECK(datasource);
// The request my be empty during tests.
if (request.url().isEmpty())
return;
@@ -3238,26 +3224,23 @@ void RenderFrameImpl::willSendRequest(
} else {
// TODO(nasko): When the top-level frame is remote, there is no document.
// This is broken and should be fixed to propagate the first party.
- WebFrame* top = frame->top();
+ WebFrame* top = frame_->top();
if (top->isWebLocalFrame()) {
request.setFirstPartyForCookies(
- frame->top()->document().firstPartyForCookies());
+ frame_->top()->document().firstPartyForCookies());
}
}
}
- WebDataSource* provisional_data_source = frame->provisionalDataSource();
- WebDataSource* data_source =
- provisional_data_source ? provisional_data_source : frame->dataSource();
-
- DocumentState* document_state = DocumentState::FromDataSource(data_source);
+ DocumentState* document_state = DocumentState::FromDataSource(datasource);
DCHECK(document_state);
InternalDocumentStateData* internal_data =
InternalDocumentStateData::FromDocumentState(document_state);
NavigationStateImpl* navigation_state =
static_cast<NavigationStateImpl*>(document_state->navigation_state());
ui::PageTransition transition_type = navigation_state->GetTransitionType();
- if (provisional_data_source && provisional_data_source->isClientRedirect()) {
+ if (request.frameType() != blink::WebURLRequest::FrameTypeNone &&
+ datasource->isClientRedirect()) {
transition_type = ui::PageTransitionFromInt(
transition_type | ui::PAGE_TRANSITION_CLIENT_REDIRECT);
}
@@ -3265,10 +3248,7 @@ void RenderFrameImpl::willSendRequest(
GURL request_url(request.url());
GURL new_url;
if (GetContentClient()->renderer()->WillSendRequest(
- frame,
- transition_type,
- request_url,
- request.firstPartyForCookies(),
+ frame_, transition_type, request_url, request.firstPartyForCookies(),
&new_url)) {
request.setURL(WebURL(new_url));
}
@@ -3325,7 +3305,7 @@ void RenderFrameImpl::willSendRequest(
// when it is re-created in the new process.
bool should_replace_current_entry = false;
if (navigation_state->IsContentInitiated()) {
- should_replace_current_entry = data_source->replacesCurrentHistoryItem();
+ should_replace_current_entry = datasource->replacesCurrentHistoryItem();
} else {
// If the navigation is browser-initiated, the NavigationState contains the
// correct value instead of the WebDataSource.
@@ -3336,29 +3316,16 @@ void RenderFrameImpl::willSendRequest(
navigation_state->common_params().should_replace_current_entry;
}
- int provider_id = kInvalidServiceWorkerProviderId;
- if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel ||
- request.frameType() == blink::WebURLRequest::FrameTypeNested) {
- // |provisionalDataSource| may be null in some content::ResourceFetcher
- // use cases, we don't hook those requests.
- if (frame->provisionalDataSource()) {
- ServiceWorkerNetworkProvider* provider =
- ServiceWorkerNetworkProvider::FromDocumentState(
- DocumentState::FromDataSource(frame->provisionalDataSource()));
- provider_id = provider->provider_id();
- }
- } else if (frame->dataSource()) {
- ServiceWorkerNetworkProvider* provider =
- ServiceWorkerNetworkProvider::FromDocumentState(
- DocumentState::FromDataSource(frame->dataSource()));
- provider_id = provider->provider_id();
- // Explicitly set the SkipServiceWorker flag here if the renderer process
- // hasn't received SetControllerServiceWorker message.
- if (!provider->IsControlledByServiceWorker())
- request.setSkipServiceWorker(true);
- }
-
- WebFrame* parent = frame->parent();
+ ServiceWorkerNetworkProvider* provider =
+ ServiceWorkerNetworkProvider::FromDocumentState(document_state);
+ int provider_id = provider->provider_id();
+ if (request.frameType() != blink::WebURLRequest::FrameTypeTopLevel &&
+ request.frameType() != blink::WebURLRequest::FrameTypeNested &&
+ !provider->IsControlledByServiceWorker()) {
+ request.setSkipServiceWorker(true);
+ }
+
+ WebFrame* parent = frame_->parent();
int parent_routing_id = MSG_ROUTING_NONE;
if (!parent) {
parent_routing_id = -1;
@@ -3375,7 +3342,7 @@ void RenderFrameImpl::willSendRequest(
extra_data->set_render_frame_id(routing_id_);
extra_data->set_is_main_frame(!parent);
extra_data->set_frame_origin(
- GURL(frame->document().securityOrigin().toString()));
+ GURL(frame_->document().securityOrigin().toString()));
extra_data->set_parent_is_main_frame(parent && !parent->parent());
extra_data->set_parent_render_frame_id(parent_routing_id);
extra_data->set_allow_download(
@@ -3391,7 +3358,7 @@ void RenderFrameImpl::willSendRequest(
request.setExtraData(extra_data);
// TODO(creis): Update prefetching to work with out-of-process iframes.
- WebFrame* top_frame = frame->top();
+ WebFrame* top_frame = frame_->top();
if (top_frame && top_frame->isWebLocalFrame()) {
DocumentState* top_document_state =
DocumentState::FromDataSource(top_frame->dataSource());
@@ -4906,11 +4873,6 @@ void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request) {
// modifications should take place in willSendRequest, and in the
// implementation of willSendRequest for the various InspectorAgents
// (devtools).
- //
- // TODO(clamy): Apply devtools override.
- // TODO(clamy): Make sure that navigation requests are not modified somewhere
- // else in blink.
- willSendRequest(frame_, 0, *request, blink::WebURLResponse());
// TODO(clamy): Same-document navigations should not be sent back to the
// browser.
@@ -4920,6 +4882,11 @@ void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request) {
WebDataSource* current_data_source = frame_->dataSource();
WebDataSource* data_source =
provisional_data_source ? provisional_data_source : current_data_source;
+ //
+ // TODO(clamy): Apply devtools override.
+ // TODO(clamy): Make sure that navigation requests are not modified somewhere
+ // else in blink.
+ willSendRequest(data_source, 0, *request, blink::WebURLResponse());
// The current entry can only be replaced if there already is an entry in the
// history list.
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698