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

Unified Diff: content/renderer/render_view_impl.cc

Issue 10450002: Transfer user agent override info between browser and renderer (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Diff shows what we do downstream Created 8 years, 7 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_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 1bb2373787bc251c0914ddf7c45de945bc4fe72c..4897a3be6c95eaae83ad4497851b5b7fa42ccefc 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -493,6 +493,7 @@ RenderViewImpl::RenderViewImpl(
int32 surface_id,
int64 session_storage_namespace_id,
const string16& frame_name,
+ const std::string& user_agent_override,
bool is_renderer_created,
bool swapped_out,
int32 next_page_id,
@@ -504,6 +505,8 @@ RenderViewImpl::RenderViewImpl(
send_content_state_immediately_(false),
enabled_bindings_(0),
send_preferred_size_changes_(false),
+ user_agent_override_(user_agent_override),
+ is_overriding_user_agent_(false),
is_loading_(false),
navigation_gesture_(NavigationGestureUnknown),
opened_by_user_gesture_(true),
@@ -712,6 +715,7 @@ RenderViewImpl* RenderViewImpl::Create(
int32 surface_id,
int64 session_storage_namespace_id,
const string16& frame_name,
+ const std::string& user_agent_override,
bool is_renderer_created,
bool swapped_out,
int32 next_page_id,
@@ -729,6 +733,7 @@ RenderViewImpl* RenderViewImpl::Create(
surface_id,
session_storage_namespace_id,
frame_name,
+ user_agent_override,
is_renderer_created,
swapped_out,
next_page_id,
@@ -853,6 +858,7 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_Find, OnFind)
IPC_MESSAGE_HANDLER(ViewMsg_StopFinding, OnStopFinding)
IPC_MESSAGE_HANDLER(ViewMsg_FindReplyACK, OnFindReplyAck)
+ IPC_MESSAGE_HANDLER(ViewMsg_SetUserAgentOverride, OnSetUserAgentOverride)
IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom)
IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevel, OnSetZoomLevel)
IPC_MESSAGE_HANDLER(ViewMsg_ZoomFactor, OnZoomFactor)
@@ -967,6 +973,9 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
if (is_swapped_out_)
SetSwappedOut(false);
+ // Track whether we're using the user agent string override.
+ is_overriding_user_agent_ = params.is_overriding_user_agent;
+
history_list_offset_ = params.current_history_list_offset;
history_list_length_ = params.current_history_list_length;
if (history_list_length_ >= 0)
@@ -1399,6 +1408,12 @@ void RenderViewImpl::UpdateURL(WebFrame* frame) {
params.post_id = ExtractPostId(item);
}
+ // Send the user agent override back.
+ params.is_overriding_user_agent = is_overriding_user_agent_;
+
+ // Track the URL of the original request.
+ params.original_request_url = original_request.url();
+
// Save some histogram data so we can compute the average memory used per
// page load of the glyphs.
UMA_HISTOGRAM_COUNTS_10000("Memory.GlyphPagesPerLoad",
@@ -1599,6 +1614,7 @@ WebView* RenderViewImpl::createView(
surface_id,
cloned_session_storage_namespace_id,
frame_name,
+ user_agent_override_,
true,
false,
1,
@@ -3636,6 +3652,14 @@ void RenderViewImpl::willOpenSocketStream(
SocketStreamHandleData::AddToHandle(handle, routing_id_);
}
+bool RenderViewImpl::userAgent(const WebKit::WebURL& url,
+ WebKit::WebString* userAgent) {
+ if (!is_overriding_user_agent_ || user_agent_override_.empty())
+ return false;
+ *userAgent = WebString::fromUTF8(user_agent_override_);
+ return true;
+}
+
// WebKit::WebPageSerializerClient implementation ------------------------------
void RenderViewImpl::didSerializeDataForFrame(
@@ -4222,6 +4246,10 @@ void RenderViewImpl::OnFindReplyAck() {
}
}
+void RenderViewImpl::OnSetUserAgentOverride(const std::string& override) {
+ user_agent_override_ = override;
+}
+
void RenderViewImpl::OnZoom(content::PageZoom zoom) {
if (!webview()) // Not sure if this can happen, but no harm in being safe.
return;

Powered by Google App Engine
This is Rietveld 408576698