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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 1310743003: Consistently use LoFi for an entire page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mmenke comments Created 5 years, 3 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
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_);
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);
mmenke 2015/09/30 19:33:41 We should have tests for each of these cases.
megjablon 2015/09/30 22:14:08 I'm unfamiliar with the test infrastructure in con
request.setExtraData(extra_data);
// TODO(creis): Update prefetching to work with out-of-process iframes.

Powered by Google App Engine
This is Rietveld 408576698