Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index b2e454f4cdece95127e38118fd56c6f05e9fb887..681d216d0112b32801ce8971831717c23a1a35d5 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); |
| request.setExtraData(extra_data); |
| // Set the ui timestamp for this navigation. Currently the timestamp here is |
| @@ -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)); |
| @@ -791,9 +793,10 @@ void RenderFrameImpl::SetWebFrame(blink::WebLocalFrame* web_frame) { |
| frame_ = web_frame; |
| } |
| -void RenderFrameImpl::Initialize() { |
| +void RenderFrameImpl::Initialize(bool is_using_lofi) { |
| is_main_frame_ = !frame_->parent(); |
| is_local_root_ = is_main_frame_ || frame_->parent()->isWebRemoteFrame(); |
| + is_using_lofi_ = is_using_lofi; |
| bool is_tracing = false; |
| TRACE_EVENT_CATEGORY_GROUP_ENABLED("navigation", &is_tracing); |
| @@ -2017,6 +2020,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( |
| @@ -2244,7 +2251,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(is_using_lofi_); |
|
nasko
2015/10/01 18:28:57
Since we've exposed from RenderFrame whether it is
megjablon
2015/10/01 19:43:25
Done.
|
| return web_frame; |
| } |
| @@ -2716,6 +2723,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 = |
| @@ -3272,6 +3282,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()); |
| @@ -3292,6 +3303,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 |
| @@ -3375,6 +3387,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. |