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

Unified Diff: android_webview/native/state_serializer.cc

Issue 84703003: Allow data URL > 2MB for loadDataWithBaseURL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove net edits Created 7 years, 1 month 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: 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;

Powered by Google App Engine
This is Rietveld 408576698