Chromium Code Reviews| Index: android_webview/native/state_serializer.cc |
| diff --git a/android_webview/native/state_serializer.cc b/android_webview/native/state_serializer.cc |
| index f4a628b39a70bf1023f80b24e00c3361f50016fe..b4c51d67f96d5047688f285eec1b80975b55f17b 100644 |
| --- a/android_webview/native/state_serializer.cc |
| +++ b/android_webview/native/state_serializer.cc |
| @@ -35,7 +35,7 @@ namespace { |
| // Sanity check value that we are restoring from a valid pickle. |
| // This can potentially used as an actual serialization version number in the |
| // future if we ever decide to support restoring from older versions. |
| -const uint32 AW_STATE_VERSION = 20130814; |
| +const uint32 AW_STATE_VERSION = 20131123; |
| } // namespace |
| @@ -177,6 +177,18 @@ bool WriteNavigationEntryToPickle(const content::NavigationEntry& entry, |
| if (!pickle->WriteString(entry.GetOriginalRequestURL().spec())) |
| return false; |
| + { |
| + const char* data = NULL; |
| + size_t size = 0; |
| + scoped_refptr<base::RefCountedMemory> p = entry.GetDataForDataURL(); |
| + if (p.get()) { |
| + data = reinterpret_cast<const char*>(p->front()); |
| + size = p->size(); |
| + } |
| + if (!pickle->WriteData(data, size)) |
|
Nico
2013/11/27 05:50:59
Do you need to do this call when size is 0? If not
joth
2013/11/27 06:23:16
Yes, We need to write something even when the obje
|
| + return false; |
| + } |
| + |
| if (!pickle->WriteString(entry.GetBaseURLForDataURL().spec())) |
| return false; |
| @@ -255,6 +267,18 @@ bool RestoreNavigationEntryFromPickle(PickleIterator* iterator, |
| } |
| { |
| + const char* data; |
| + int len; |
| + if (!iterator->ReadData(&data, &len)) |
| + return false; |
| + if (len > 0) { |
| + scoped_refptr<base::RefCountedString> ref = new base::RefCountedString; |
| + ref->data().assign(data, len); |
| + entry->SetDataForDataURL(ref.get()); |
| + } |
| + } |
| + |
| + { |
| string base_url_for_data_url; |
| if (!iterator->ReadString(&base_url_for_data_url)) |
| return false; |