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

Side by Side Diff: LayoutTests/fast/storage/resources/serialized-script-value.js

Issue 100023005: Make cloning of File objects more useful. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Reupload Created 7 years 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 unified diff | Download patch
OLDNEW
1 var kSerializedScriptValueVersion = 4;
2
3 function forVersion(version, values) {
4 var versionTag = 0xff;
5 var versionPrefix = [ (version << 8) | versionTag ];
6
7 return versionPrefix.concat(values)
8 }
9
1 function expectBufferValue(bytesPerElement, expectedValues, buffer) { 10 function expectBufferValue(bytesPerElement, expectedValues, buffer) {
2 expectedBufferValues = expectedValues; 11 expectedBufferValues = expectedValues;
3 var arrayClass; 12 var arrayClass;
4 if (bytesPerElement == 1) 13 if (bytesPerElement == 1)
5 arrayClass = Uint8Array; 14 arrayClass = Uint8Array;
6 else 15 else
7 arrayClass = Uint16Array; 16 arrayClass = Uint16Array;
8 bufferView = new arrayClass(buffer); 17 bufferView = new arrayClass(buffer);
9 shouldBe("bufferView.length", "expectedBufferValues.length"); 18 shouldBe("bufferView.length", "expectedBufferValues.length");
10 var success = (bufferView.length == expectedBufferValues.length); 19 var success = (bufferView.length == expectedBufferValues.length);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 return Object.keys(object).sort().map(function(key) { 62 return Object.keys(object).sort().map(function(key) {
54 return { key: key, value: sortObject(object[key]) }; 63 return { key: key, value: sortObject(object[key]) };
55 }); 64 });
56 } 65 }
57 return JSON.stringify(sortObject(a)) === JSON.stringify(sortObject(b)); 66 return JSON.stringify(sortObject(a)) === JSON.stringify(sortObject(b));
58 } 67 }
59 68
60 function _testSerialization(bytesPerElement, obj, values, oldFormat, serializeEx ceptionValue) { 69 function _testSerialization(bytesPerElement, obj, values, oldFormat, serializeEx ceptionValue) {
61 debug(""); 70 debug("");
62 71
72 values = forVersion(kSerializedScriptValueVersion, values);
73
63 if (!serializeExceptionValue) { 74 if (!serializeExceptionValue) {
64 self.obj = obj; 75 self.obj = obj;
65 debug("Deserialize to " + JSON.stringify(obj) + ":"); 76 debug("Deserialize to " + JSON.stringify(obj) + ":");
66 self.newObj = internals.deserializeBuffer(makeBuffer(bytesPerElement, va lues)); 77 self.newObj = internals.deserializeBuffer(makeBuffer(bytesPerElement, va lues));
67 shouldBe("JSON.stringify(newObj)", "JSON.stringify(obj)"); 78 shouldBe("JSON.stringify(newObj)", "JSON.stringify(obj)");
68 shouldBeTrue("areValuesIdentical(newObj, obj)"); 79 shouldBeTrue("areValuesIdentical(newObj, obj)");
69 80
70 if (oldFormat) { 81 if (oldFormat) {
71 self.newObj = internals.deserializeBuffer(makeBuffer(bytesPerElement , oldFormat)); 82 self.newObj = internals.deserializeBuffer(makeBuffer(bytesPerElement , oldFormat));
72 shouldBe("JSON.stringify(newObj)", "JSON.stringify(obj)"); 83 shouldBe("JSON.stringify(newObj)", "JSON.stringify(obj)");
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // Compare contents too. 117 // Compare contents too.
107 var xhr1 = new XMLHttpRequest(); 118 var xhr1 = new XMLHttpRequest();
108 xhr1.open("GET", URL.createObjectURL(self.blobObj1), false); 119 xhr1.open("GET", URL.createObjectURL(self.blobObj1), false);
109 xhr1.send(); 120 xhr1.send();
110 self.blobContent1 = xhr1.response; 121 self.blobContent1 = xhr1.response;
111 var xhr2 = new XMLHttpRequest(); 122 var xhr2 = new XMLHttpRequest();
112 xhr2.open("GET", URL.createObjectURL(self.blobObj2), false); 123 xhr2.open("GET", URL.createObjectURL(self.blobObj2), false);
113 xhr2.send(); 124 xhr2.send();
114 self.blobContent2 = xhr2.response; 125 self.blobContent2 = xhr2.response;
115 shouldBe("self.blobContent1", "self.blobContent2"); 126 shouldBe("self.blobContent1", "self.blobContent2");
116 } 127 }
128
129 function testFileSerialization() {
130 debug("");
131 window.jsTestIsAsync = true;
132
133 function checkIfSameContent(file1, file2, continuation) {
134 function step1() {
135 var fileReader = new FileReader();
136 fileReader.onload = function () {
137 self.fileContents1 = fileReader.result;
138 step2();
139 };
140 fileReader.readAsText(file1);
141 }
142 function step2() {
143 var fileReader = new FileReader();
144 fileReader.onload = function () {
145 self.fileContents2 = fileReader.result;
146 finish();
147 };
148 fileReader.readAsText(file2);
149 }
150 function finish() {
151 shouldBe("self.fileContents1", "self.fileContents2");
152 continuation();
153 }
154 step1();
155 }
156
157 debug("Test deserialization of File objects");
158 self.fileObj1 = new File(['The', ' contents'], 'testfile.txt', {type: 'text/ plain', lastModified: 0});
159 self.fileObj2 = internals.deserializeBuffer(internals.serializeObject(self.f ileObj1));
160 shouldBeTrue("areValuesIdentical(fileObj1, fileObj2)");
161 self.dictionaryWithFile1 = {file: fileObj1, string: 'stringValue'};
162 self.dictionaryWithFile2 = internals.deserializeBuffer(internals.serializeOb ject(dictionaryWithFile1));
163 shouldBeTrue("areValuesIdentical(dictionaryWithFile1, dictionaryWithFile2)") ;
164
165 // Read and compare actual contents.
166 checkIfSameContent(self.fileObj1, self.fileObj2, finishJSTest);
167 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698