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

Side by Side Diff: content/test/data/blob_storage/blob_creation_and_slicing.html

Issue 2516713002: [BlobStorage] Implementing disk. (Closed)
Patch Set: removed cleanup check, as mac doesn't run out event loops Created 4 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
« no previous file with comments | « content/test/BUILD.gn ('k') | content/test/data/blob_storage/common.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <html>
2 <head>
3 <title>Blob Creation & Slicing</title>
4 <script type="text/javascript" src="common.js"></script>
5 <script type="text/javascript">
6 // We create < 3000 bytes of data, as that is the max for the browsertest.
7 var MAX_BYTES = 3000;
8
9 // Number of blobs constructed with raw data.
10 var NUM_RAW_BLOBS = 100;
11 // Number of blobs we create by slicing the raw data blobs.
12 var NUM_SLICES = 100;
13 // Number of blobs we create by sandwiching sliced blobs in between new data.
14 var NUM_SANDWICHES = 100;
15 var totalSize = 0;
16
17 var generatePsuedoRandomUint8Array = function(length) {
18 var array = new Uint8Array(length);
19 for (let i = 0; i < length; ++i) {
20 array[i] = (17 + 23 * i) & 0xFF;
21 }
22 return array;
23 }
24
25 var test = function() {
26 var blobs = [];
27
28 // This should cause us to go straight to file.
29 var savedToDiskDataSize = 190;
30 var savedToDiskData = generatePsuedoRandomUint8Array(savedToDiskDataSize);
31
32 // This should require multiple shared memory segments.
33 var sharedMemoryDataSize = 15;
34 var sharedMemoryData = generatePsuedoRandomUint8Array(sharedMemoryDataSize);
35
36 var sandwichDataSize = 7;
37
38 // This should fit in IPC.
39 var ipcDataSize = 2;
40 var ipcData = generatePsuedoRandomUint8Array(ipcDataSize);
41
42 var expectedBlobData = [];
43 for (let i = 0; i < NUM_RAW_BLOBS; ++i) {
44 let data = [];
45 if (i % 5 == 0) {
46 data.push(sharedMemoryData);
47 } else if (i % 13 == 0) {
48 data.push(savedToDiskData);
49 } else {
50 data.push(ipcData);
51 }
52 expectedBlobData.push(data[data.length - 1]);
53 let blob = new Blob(data, { content_type: "text/plain" });
54 blobs.push(blob);
55 totalSize += blob.size;
56 }
57
58 for (let i = 0; i < NUM_SLICES; ++i) {
59 let origSize;
60 let origData;
61 let rawIndex = i % NUM_RAW_BLOBS;
62 if (rawIndex % 5 == 0) {
63 origSize = sharedMemoryDataSize;
64 origData = sharedMemoryData;
65 } else if (rawIndex % 13 == 0) {
66 origSize = savedToDiskDataSize;
67 origData = savedToDiskData;
68 } else {
69 origSize = ipcDataSize;
70 origData = ipcData;
71 }
72 let blob;
73 let expectedData;
74 if (i % 2 == 0) {
75 blob = blobs[i].slice(origSize / 2);
76 expectedData = origData.slice(origSize / 2);
77 } else {
78 blob = blobs[i].slice(0, origSize / 2);
79 expectedData = origData.slice(0, origSize / 2);
80 }
81 expectedBlobData.push(expectedData);
82 blobs.push(blob);
83 }
84
85 var getBytes = function(string) {
86 var bytes = [];
87 for (let i = 0; i < string.length; ++i) {
88 bytes.push(string.charCodeAt(i));
89 }
90 return bytes;
91 }
92
93 for (let i = 0; i < NUM_SANDWICHES; ++i) {
94 let sliceIndex = NUM_RAW_BLOBS + (i % NUM_SLICES);
95 let slicedDataSize = expectedBlobData[sliceIndex].length;
96 blobs.push(new Blob(['pre', blobs[sliceIndex], 'post'], { content_type: "tex t/plain" }));
97 totalSize += sandwichDataSize;
98
99 let expectedData = new Uint8Array(sandwichDataSize + slicedDataSize);
100 expectedData.set(getBytes("pre"), 0);
101 expectedData.set(expectedBlobData[sliceIndex], 3);
102 expectedData.set(getBytes("post"), 3 + slicedDataSize);
103 expectedBlobData.push(expectedData);
104 }
105 shouldBeTrue("totalSize <= MAX_BYTES");
106
107 var numRead = 0;
108 for (let i = 0; i < blobs.length; i++) {
109 (function(index, d) {
110 var reader = new FileReader();
111 reader.onloadend = function(e) {
112 if (reader.error) {
113 fail('Error when reading blob ' + index + ': ' + reader.error);
114 return;
115 }
116 numRead++;
117 debug('Finished reading blob ' + index);
118 shouldBe('event.target.result.byteLength', d.length + '');
119 shouldBe('new Uint8Array(event.target.result)',
120 '[' + d + ']');
121 if (numRead >= blobs.length) {
122 done('Done!');
123 }
124 }
125 return reader;
126 })(i, expectedBlobData[i]).readAsArrayBuffer(blobs[i]);
127 }
128 };
129 </script>
130 </head>
131 <body onLoad="test()">
132 <div id="status">Starting...<br/></div>
133 </body>
134 </html>
OLDNEW
« no previous file with comments | « content/test/BUILD.gn ('k') | content/test/data/blob_storage/common.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698