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 418a021cac506ead155746c4bdc179fd3846869b..54ec8ba501498994d9985e1c0d7769891708564e 100644 |
--- a/chrome/browser/sessions/base_session_service.cc |
+++ b/chrome/browser/sessions/base_session_service.cc |
@@ -187,7 +187,10 @@ SessionCommand* BaseSessionService::CreateUpdateTabNavigationCommand( |
entry.GetReferrer().url.spec() : std::string()); |
pickle.WriteInt(entry.GetReferrer().policy); |
- // Adding more data? Be sure and update TabRestoreService too. |
+ WriteStringToPickle(pickle, &bytes_written, max_state_size, |
+ entry.GetOriginalRequestURL().is_valid() ? |
+ entry.GetOriginalRequestURL().spec() : std::string()); |
+ |
return new SessionCommand(command_id, pickle); |
} |
@@ -266,6 +269,12 @@ bool BaseSessionService::RestoreUpdateTabNavigationCommand( |
navigation->referrer_ = content::Referrer( |
referrer_spec.empty() ? GURL() : GURL(referrer_spec), |
policy); |
+ |
+ // If the original URL can't be found, leave it empty. |
+ std::string url_spec; |
+ if (!pickle->ReadString(&iterator, &url_spec)) |
+ url_spec = std::string(); |
+ navigation->set_original_request_url(GURL(url_spec)); |
} |
navigation->virtual_url_ = GURL(url_spec); |