Index: chrome/browser/sessions/session_types.cc |
diff --git a/chrome/browser/sessions/session_types.cc b/chrome/browser/sessions/session_types.cc |
index 59afc341fdb9604100636d2befdc8f85c738cddf..8457e66ef569ab5f91dd9ebcfd069caa02de8a8c 100644 |
--- a/chrome/browser/sessions/session_types.cc |
+++ b/chrome/browser/sessions/session_types.cc |
@@ -9,6 +9,7 @@ |
#include "base/stl_util.h" |
#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/instant/instant_controller.h" |
#include "chrome/browser/sessions/session_command.h" |
#include "chrome/browser/ui/browser.h" |
#include "content/public/browser/navigation_controller.h" |
@@ -48,6 +49,9 @@ TabNavigation TabNavigation::FromNavigationEntry( |
navigation.original_request_url_ = entry.GetOriginalRequestURL(); |
navigation.is_overriding_user_agent_ = entry.GetIsOverridingUserAgent(); |
navigation.timestamp_ = entry.GetTimestamp(); |
+ entry.GetExtraData(std::string(InstantController::kSearchTermsKey), |
+ &navigation.search_terms_); |
+ |
return navigation; |
} |
@@ -132,6 +136,7 @@ TabNavigation TabNavigation::FromSyncData( |
static_cast<content::PageTransition>(transition); |
navigation.timestamp_ = base::Time(); |
+ navigation.search_terms_ = UTF8ToUTF16(sync_data.search_terms()); |
return navigation; |
} |
@@ -201,6 +206,7 @@ enum TypeMask { |
// original_request_url_ |
// is_overriding_user_agent_ |
// timestamp_ |
+// search_terms_ |
void TabNavigation::WriteToPickle(Pickle* pickle) const { |
pickle->WriteInt(index_); |
@@ -245,6 +251,8 @@ void TabNavigation::WriteToPickle(Pickle* pickle) const { |
original_request_url_.spec() : std::string()); |
pickle->WriteBool(is_overriding_user_agent_); |
pickle->WriteInt64(timestamp_.ToInternalValue()); |
+ |
+ WriteString16ToPickle(pickle, &bytes_written, max_state_size, search_terms_); |
} |
bool TabNavigation::ReadFromPickle(PickleIterator* iterator) { |
@@ -298,6 +306,10 @@ bool TabNavigation::ReadFromPickle(PickleIterator* iterator) { |
} else { |
timestamp_ = base::Time(); |
} |
+ |
+ // If the search terms field can't be found, leave it empty. |
+ if (!iterator->ReadString16(&search_terms_)) |
+ search_terms_ = string16(); |
} |
return true; |
@@ -326,6 +338,7 @@ scoped_ptr<NavigationEntry> TabNavigation::ToNavigationEntry( |
entry->SetOriginalRequestURL(original_request_url_); |
entry->SetIsOverridingUserAgent(is_overriding_user_agent_); |
entry->SetTimestamp(timestamp_); |
+ entry->SetExtraData(InstantController::kSearchTermsKey, search_terms_); |
return entry.Pass(); |
} |
@@ -418,6 +431,8 @@ sync_pb::TabNavigation TabNavigation::ToSyncData() const { |
// The full-resolution timestamp works as a global ID. |
sync_data.set_global_id(timestamp_.ToInternalValue()); |
+ sync_data.set_search_terms(UTF16ToUTF8(search_terms_)); |
+ |
return sync_data; |
} |