Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index e10966913fddfc67356d6519f541d8b4686452f8..ed2ab3af61c7b3c5726687daf0187b6208bcce46 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -40,7 +40,6 @@ |
#include "content/common/frame_messages.h" |
#include "content/common/frame_replication_state.h" |
#include "content/common/input_messages.h" |
-#include "content/common/navigation_params.h" |
#include "content/common/service_worker/service_worker_types.h" |
#include "content/common/site_isolation_policy.h" |
#include "content/common/swapped_out_messages.h" |
@@ -636,7 +635,7 @@ void RenderFrameImpl::CreateFrame( |
render_frame->render_widget_->RegisterRenderFrame(render_frame); |
} |
- render_frame->Initialize(); |
+ render_frame->Initialize(LOFI_DEFAULT); |
} |
// static |
@@ -737,6 +736,7 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
manifest_manager_(NULL), |
accessibility_mode_(AccessibilityModeOff), |
renderer_accessibility_(NULL), |
+ lofi_state_(LOFI_DEFAULT), |
weak_factory_(this) { |
std::pair<RoutingIDFrameMap::iterator, bool> result = |
g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); |
@@ -804,9 +804,10 @@ void RenderFrameImpl::SetWebFrame(blink::WebLocalFrame* web_frame) { |
frame_ = web_frame; |
} |
-void RenderFrameImpl::Initialize() { |
+void RenderFrameImpl::Initialize(LoFiState lofi_state) { |
is_subframe_ = !!frame_->parent(); |
is_local_root_ = !frame_->parent() || frame_->parent()->isWebRemoteFrame(); |
+ lofi_state_ = lofi_state; |
#if defined(ENABLE_PLUGINS) |
new PepperBrowserConnection(this); |
@@ -2223,7 +2224,7 @@ blink::WebFrame* RenderFrameImpl::createChildFrame( |
// Add the frame to the frame tree and initialize it. |
parent->appendChild(web_frame); |
- child_render_frame->Initialize(); |
+ child_render_frame->Initialize(lofi_state_); |
return web_frame; |
} |
@@ -2303,7 +2304,7 @@ void RenderFrameImpl::willClose(blink::WebFrame* frame) { |
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, FrameWillClose()); |
FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), |
- FrameWillClose(frame)); |
+ FrameWillClose(frame, lofi_state_ == LOFI_ON)); |
} |
void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame, |
@@ -2695,6 +2696,12 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
DocumentState::FromDataSource(frame->dataSource()); |
NavigationStateImpl* navigation_state = |
static_cast<NavigationStateImpl*>(document_state->navigation_state()); |
+ WebURLResponseExtraDataImpl* extra_data = GetExtraDataFromResponse( |
+ frame->dataSource()->response()); |
+ if (extra_data && extra_data->is_lofi()) |
nasko
2015/09/04 22:47:42
nit: Maybe use tertiary operator, which will fit a
megjablon
2015/09/09 20:54:16
Done.
|
+ lofi_state_ = LOFI_ON; |
+ else |
+ lofi_state_ = LOFI_OFF; |
if (proxy_routing_id_ != MSG_ROUTING_NONE) { |
RenderFrameProxy* proxy = |
@@ -3349,6 +3356,10 @@ void RenderFrameImpl::willSendRequest( |
navigation_state->start_params().transferred_request_request_id); |
extra_data->set_service_worker_provider_id(provider_id); |
extra_data->set_stream_override(stream_override.Pass()); |
+ if (request.cachePolicy() == WebURLRequest::ReloadBypassingCache) |
+ extra_data->set_lofi_state(LOFI_OFF); |
+ else |
+ extra_data->set_lofi_state(lofi_state_); |
request.setExtraData(extra_data); |
// TODO(creis): Update prefetching to work with out-of-process iframes. |
@@ -4484,6 +4495,8 @@ void RenderFrameImpl::NavigateInternal( |
GetContentClient()->SetActiveURL(common_params.url); |
+ lofi_state_ = (LoFiState) request_params.lofi_state; |
+ |
// If this frame isn't in the same process as the main frame, it may naively |
// assume that this is the first navigation in the iframe, but this may not |
// actually be the case. Inform the frame's state machine if this frame has |