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

Unified Diff: chrome/browser/sessions/base_session_service.cc

Issue 10170016: Add info about user agent overrides to WebContents (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Forgot to initialize bool in constructor; win_rel caught it 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
« no previous file with comments | « chrome/browser/sessions/base_session_service.h ('k') | chrome/browser/sessions/session_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sessions/base_session_service.cc
diff --git a/chrome/browser/sessions/base_session_service.cc b/chrome/browser/sessions/base_session_service.cc
index 54ec8ba501498994d9985e1c0d7769891708564e..6fbcd2bac3ded415f6dc9d521c3e928544f2feea 100644
--- a/chrome/browser/sessions/base_session_service.cc
+++ b/chrome/browser/sessions/base_session_service.cc
@@ -187,9 +187,11 @@ SessionCommand* BaseSessionService::CreateUpdateTabNavigationCommand(
entry.GetReferrer().url.spec() : std::string());
pickle.WriteInt(entry.GetReferrer().policy);
+ // Save info required to override the user agent.
WriteStringToPickle(pickle, &bytes_written, max_state_size,
entry.GetOriginalRequestURL().is_valid() ?
entry.GetOriginalRequestURL().spec() : std::string());
+ pickle.WriteBool(entry.GetIsOverridingUserAgent());
return new SessionCommand(command_id, pickle);
}
@@ -213,6 +215,27 @@ SessionCommand* BaseSessionService::CreateSetTabExtensionAppIDCommand(
return new SessionCommand(command_id, pickle);
}
+SessionCommand* BaseSessionService::CreateSetTabUserAgentOverrideCommand(
+ SessionID::id_type command_id,
+ SessionID::id_type tab_id,
+ const std::string& user_agent_override) {
+ // Use pickle to handle marshalling.
+ Pickle pickle;
+ pickle.WriteInt(tab_id);
+
+ // Enforce a max for the user agent length. They should never be anywhere
+ // near this size.
+ static const SessionCommand::size_type max_user_agent_size =
+ std::numeric_limits<SessionCommand::size_type>::max() - 1024;
+
+ int bytes_written = 0;
+
+ WriteStringToPickle(pickle, &bytes_written, max_user_agent_size,
+ user_agent_override);
+
+ return new SessionCommand(command_id, pickle);
+}
+
SessionCommand* BaseSessionService::CreateSetWindowAppNameCommand(
SessionID::id_type command_id,
SessionID::id_type window_id,
@@ -275,6 +298,12 @@ bool BaseSessionService::RestoreUpdateTabNavigationCommand(
if (!pickle->ReadString(&iterator, &url_spec))
url_spec = std::string();
navigation->set_original_request_url(GURL(url_spec));
+
+ // Default to not overriding the user agent if we don't have info.
+ bool override_user_agent;
+ if (!pickle->ReadBool(&iterator, &override_user_agent))
+ override_user_agent = false;
+ navigation->set_is_overriding_user_agent(override_user_agent);
}
navigation->virtual_url_ = GURL(url_spec);
@@ -294,6 +323,19 @@ bool BaseSessionService::RestoreSetTabExtensionAppIDCommand(
pickle->ReadString(&iterator, extension_app_id);
}
+bool BaseSessionService::RestoreSetTabUserAgentOverrideCommand(
+ const SessionCommand& command,
+ SessionID::id_type* tab_id,
+ std::string* user_agent_override) {
+ scoped_ptr<Pickle> pickle(command.PayloadAsPickle());
+ if (!pickle.get())
+ return false;
+
+ PickleIterator iterator(*pickle);
+ return pickle->ReadInt(&iterator, tab_id) &&
+ pickle->ReadString(&iterator, user_agent_override);
+}
+
bool BaseSessionService::RestoreSetWindowAppNameCommand(
const SessionCommand& command,
SessionID::id_type* window_id,
« no previous file with comments | « chrome/browser/sessions/base_session_service.h ('k') | chrome/browser/sessions/session_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698