Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index f0683e73497d8a02c922bdf83544b3bd26e6f42b..23d0fd7e4a6bc7cf1114b73e42c302ab0c16d614 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -428,6 +428,7 @@ WebURLRequest CreateURLRequestForNavigation( |
RequestExtraData* extra_data = new RequestExtraData(); |
extra_data->set_stream_override(stream_override.Pass()); |
+ extra_data->set_lofi_state(common_params.lofi_state); |
megjablon
2015/10/07 02:22:48
I'm finding that setting this extra data here does
|
request.setExtraData(extra_data); |
// Set the ui timestamp for this navigation. Currently the timestamp here is |
@@ -494,7 +495,7 @@ CommonNavigationParams MakeCommonNavigationParams( |
return CommonNavigationParams( |
request->url(), referrer, extra_data->transition_type(), |
FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, |
- ui_timestamp, report_type, GURL(), GURL()); |
+ ui_timestamp, report_type, GURL(), GURL(), LOFI_UNSPECIFIED); |
} |
#if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
@@ -721,6 +722,7 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
manifest_manager_(NULL), |
accessibility_mode_(AccessibilityModeOff), |
renderer_accessibility_(NULL), |
+ is_using_lofi_(false), |
weak_factory_(this) { |
std::pair<RoutingIDFrameMap::iterator, bool> result = |
g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); |
@@ -795,6 +797,11 @@ void RenderFrameImpl::Initialize() { |
is_main_frame_ = !frame_->parent(); |
is_local_root_ = is_main_frame_ || frame_->parent()->isWebRemoteFrame(); |
+ RenderFrameImpl* parent_frame = RenderFrameImpl::FromWebFrame( |
+ frame_->parent()); |
+ if (parent_frame) |
+ is_using_lofi_ = parent_frame->IsUsingLoFi(); |
+ |
bool is_tracing = false; |
TRACE_EVENT_CATEGORY_GROUP_ENABLED("navigation", &is_tracing); |
if (is_tracing) { |
@@ -806,8 +813,6 @@ void RenderFrameImpl::Initialize() { |
if (parent_proxy) |
parent_id = parent_proxy->routing_id(); |
} else { |
- RenderFrameImpl* parent_frame = RenderFrameImpl::FromWebFrame( |
- frame_->parent()); |
if (parent_frame) |
parent_id = parent_frame->GetRoutingID(); |
} |
@@ -2022,6 +2027,10 @@ void RenderFrameImpl::AddMessageToConsole(ConsoleMessageLevel level, |
devtools_agent_->AddMessageToConsole(level, message); |
} |
+bool RenderFrameImpl::IsUsingLoFi() { |
+ return is_using_lofi_; |
+} |
+ |
// blink::WebFrameClient implementation ---------------------------------------- |
blink::WebPlugin* RenderFrameImpl::createPlugin( |
@@ -2721,6 +2730,9 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
DocumentState::FromDataSource(frame->dataSource()); |
NavigationStateImpl* navigation_state = |
static_cast<NavigationStateImpl*>(document_state->navigation_state()); |
+ WebURLResponseExtraDataImpl* extra_data = GetExtraDataFromResponse( |
+ frame->dataSource()->response()); |
+ is_using_lofi_ = extra_data && extra_data->is_using_lofi(); |
if (proxy_routing_id_ != MSG_ROUTING_NONE) { |
RenderFrameProxy* proxy = |
@@ -3285,6 +3297,7 @@ void RenderFrameImpl::willSendRequest( |
WebString custom_user_agent; |
WebString requested_with; |
scoped_ptr<StreamOverrideParameters> stream_override; |
+ LoFiState lofi_state = LOFI_UNSPECIFIED; |
if (request.extraData()) { |
RequestExtraData* old_extra_data = |
static_cast<RequestExtraData*>(request.extraData()); |
@@ -3305,6 +3318,7 @@ void RenderFrameImpl::willSendRequest( |
request.setHTTPHeaderField("X-Requested-With", requested_with); |
} |
stream_override = old_extra_data->TakeStreamOverrideOwnership(); |
+ lofi_state = old_extra_data->lofi_state(); |
} |
// Add the default accept header for frame request if it has not been set |
@@ -3388,6 +3402,14 @@ 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()); |
+ // TODO(megjablon): Set the navigation params for single image loads to |
+ // LOFI_OFF and remove the dependency on ReloadBypassingCache. |
+ if (request.cachePolicy() == WebURLRequest::ReloadBypassingCache) |
+ extra_data->set_lofi_state(LOFI_OFF); |
+ else if (!navigation_state->request_committed()) |
+ extra_data->set_lofi_state(lofi_state); |
+ else |
+ extra_data->set_lofi_state(is_using_lofi_ ? LOFI_ON : LOFI_OFF); |
request.setExtraData(extra_data); |
// TODO(creis): Update prefetching to work with out-of-process iframes. |