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

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: Cleand up userAgentOverride Created 8 years, 6 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 2b6e5b18f1af5c242a4b3a5671f84bfc44edf5d3..244c22fdbfaf1d9b18f97cb146d572619d079373 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1448,6 +1448,10 @@ void RenderViewImpl::UpdateURL(WebFrame* frame) {
params.post_id = ExtractPostId(item);
}
+ // Send the user agent override back.
+ params.is_overriding_user_agent =
+ document_state->is_overriding_user_agent();
+
// Save some histogram data so we can compute the average memory used per
// page load of the glyphs.
UMA_HISTOGRAM_COUNTS_10000("Memory.GlyphPagesPerLoad",
@@ -2740,6 +2744,17 @@ void RenderViewImpl::didCreateDataSource(WebFrame* frame, WebDataSource* ds) {
PopulateDocumentStateFromPending(document_state);
}
+ // Carry over the user agent override flag, if it exists.
+ if (content_initiated && webview() && webview()->mainFrame() &&
+ webview()->mainFrame()->dataSource()) {
+ DocumentState* old_document_state =
+ DocumentState::FromDataSource(webview()->mainFrame()->dataSource());
+ if (old_document_state) {
+ document_state->set_is_overriding_user_agent(
+ old_document_state->is_overriding_user_agent());
+ }
+ }
+
// The rest of RenderView assumes that a WebDataSource will always have a
// non-null NavigationState.
if (content_initiated)
@@ -2823,6 +2838,7 @@ void RenderViewImpl::PopulateDocumentStateFromPending(
document_state->set_load_type(DocumentState::NORMAL_LOAD);
document_state->set_referrer_policy(params.referrer.policy);
+ document_state->set_is_overriding_user_agent(params.is_overriding_user_agent);
}
NavigationState* RenderViewImpl::CreateNavigationStateFromPending() {
@@ -3699,6 +3715,32 @@ void RenderViewImpl::willOpenSocketStream(
SocketStreamHandleData::AddToHandle(handle, routing_id_);
}
+WebKit::WebString RenderViewImpl::userAgentOverride(
+ WebKit::WebFrame* frame,
+ const WebKit::WebURL& url) {
+ if (!webview() || !webview()->mainFrame() ||
+ renderer_preferences_.user_agent_override.empty())
Charlie Reis 2012/06/19 22:47:59 nit: This condition takes two lines, so I think yo
gone 2012/06/20 00:01:10 Done.
+ return WebKit::WebString();
+
+ // If we're in the middle of committing a load, the data source we need
+ // will still be provisional.
+ WebFrame* main_frame = webview()->mainFrame();
+ WebDataSource* data_source = NULL;
+ if (main_frame->provisionalDataSource()) {
+ data_source = main_frame->provisionalDataSource();
+ } else {
+ data_source = main_frame->dataSource();
+ }
+
+ DocumentState* document_state =
+ data_source ? DocumentState::FromDataSource(data_source) : NULL;
+ if (document_state && document_state->is_overriding_user_agent()) {
+ return WebString::fromUTF8(renderer_preferences_.user_agent_override);
+ } else {
+ return WebKit::WebString();
+ }
+}
+
// WebKit::WebPageSerializerClient implementation ------------------------------
void RenderViewImpl::didSerializeDataForFrame(
« content/browser/web_contents/web_contents_impl.cc ('K') | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698