| OLD | NEW | 
|     1 // Copyright 2014 The Chromium Authors. All rights reserved. |     1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "bindings/core/v8/ScriptValueSerializer.h" |     5 #include "bindings/core/v8/ScriptValueSerializer.h" | 
|     6  |     6  | 
|     7 #include "bindings/core/v8/Transferables.h" |     7 #include "bindings/core/v8/Transferables.h" | 
|     8 #include "bindings/core/v8/V8ArrayBuffer.h" |     8 #include "bindings/core/v8/V8ArrayBuffer.h" | 
|     9 #include "bindings/core/v8/V8ArrayBufferView.h" |     9 #include "bindings/core/v8/V8ArrayBufferView.h" | 
|    10 #include "bindings/core/v8/V8Blob.h" |    10 #include "bindings/core/v8/V8Blob.h" | 
| (...skipping 1231 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1242     long long size = -1; |  1242     long long size = -1; | 
|  1243     double lastModifiedMS = invalidFileTime(); |  1243     double lastModifiedMS = invalidFileTime(); | 
|  1244     file->captureSnapshot(size, lastModifiedMS); |  1244     file->captureSnapshot(size, lastModifiedMS); | 
|  1245     *index = m_blobInfo->size(); |  1245     *index = m_blobInfo->size(); | 
|  1246     // FIXME: transition WebBlobInfo.lastModified to be milliseconds-based also. |  1246     // FIXME: transition WebBlobInfo.lastModified to be milliseconds-based also. | 
|  1247     double lastModified = lastModifiedMS / msPerSecond; |  1247     double lastModified = lastModifiedMS / msPerSecond; | 
|  1248     m_blobInfo->append(WebBlobInfo(file->uuid(), file->path(), file->name(), fil
      e->type(), lastModified, size)); |  1248     m_blobInfo->append(WebBlobInfo(file->uuid(), file->path(), file->name(), fil
      e->type(), lastModified, size)); | 
|  1249     return true; |  1249     return true; | 
|  1250 } |  1250 } | 
|  1251  |  1251  | 
|  1252 bool SerializedScriptValueReader::read(v8::Local<v8::Value>* value, ScriptValueC
      ompositeCreator& creator) |  1252 bool SerializedScriptValueReader::read(v8::Local<v8::Value>* value, ScriptValueD
      eserializer& deserializer) | 
|  1253 { |  1253 { | 
|  1254     SerializationTag tag; |  1254     SerializationTag tag; | 
|  1255     if (!readTag(&tag)) |  1255     if (!readTag(&tag)) | 
|  1256         return false; |  1256         return false; | 
|  1257     return readWithTag(tag, value, creator); |  1257     return readWithTag(tag, value, deserializer); | 
|  1258 } |  1258 } | 
|  1259  |  1259  | 
|  1260 bool SerializedScriptValueReader::readWithTag(SerializationTag tag, v8::Local<v8
      ::Value>* value, ScriptValueCompositeCreator& creator) |  1260 bool SerializedScriptValueReader::readWithTag(SerializationTag tag, v8::Local<v8
      ::Value>* value, ScriptValueDeserializer& deserializer) | 
|  1261 { |  1261 { | 
|  1262     switch (tag) { |  1262     switch (tag) { | 
|  1263     case ReferenceCountTag: { |  1263     case ReferenceCountTag: { | 
|  1264         if (!m_version) |  1264         if (!m_version) | 
|  1265             return false; |  1265             return false; | 
|  1266         uint32_t referenceTableSize; |  1266         uint32_t referenceTableSize; | 
|  1267         if (!doReadUint32(&referenceTableSize)) |  1267         if (!doReadUint32(&referenceTableSize)) | 
|  1268             return false; |  1268             return false; | 
|  1269         // If this test fails, then the serializer and deserializer disagree abo
      ut the assignment |  1269         // If this test fails, then the serializer and deserializer disagree abo
      ut the assignment | 
|  1270         // of object reference IDs. On the deserialization side, this means ther
      e are too many or too few |  1270         // of object reference IDs. On the deserialization side, this means ther
      e are too many or too few | 
|  1271         // calls to pushObjectReference. |  1271         // calls to pushObjectReference. | 
|  1272         if (referenceTableSize != creator.objectReferenceCount()) |  1272         if (referenceTableSize != deserializer.objectReferenceCount()) | 
|  1273             return false; |  1273             return false; | 
|  1274         return true; |  1274         return true; | 
|  1275     } |  1275     } | 
|  1276     case InvalidTag: |  1276     case InvalidTag: | 
|  1277         return false; |  1277         return false; | 
|  1278     case PaddingTag: |  1278     case PaddingTag: | 
|  1279         return true; |  1279         return true; | 
|  1280     case UndefinedTag: |  1280     case UndefinedTag: | 
|  1281         *value = v8::Undefined(isolate()); |  1281         *value = v8::Undefined(isolate()); | 
|  1282         break; |  1282         break; | 
|  1283     case NullTag: |  1283     case NullTag: | 
|  1284         *value = v8::Null(isolate()); |  1284         *value = v8::Null(isolate()); | 
|  1285         break; |  1285         break; | 
|  1286     case TrueTag: |  1286     case TrueTag: | 
|  1287         *value = v8Boolean(true, isolate()); |  1287         *value = v8Boolean(true, isolate()); | 
|  1288         break; |  1288         break; | 
|  1289     case FalseTag: |  1289     case FalseTag: | 
|  1290         *value = v8Boolean(false, isolate()); |  1290         *value = v8Boolean(false, isolate()); | 
|  1291         break; |  1291         break; | 
|  1292     case TrueObjectTag: |  1292     case TrueObjectTag: | 
|  1293         *value = v8::BooleanObject::New(isolate(), true); |  1293         *value = v8::BooleanObject::New(isolate(), true); | 
|  1294         creator.pushObjectReference(*value); |  1294         deserializer.pushObjectReference(*value); | 
|  1295         break; |  1295         break; | 
|  1296     case FalseObjectTag: |  1296     case FalseObjectTag: | 
|  1297         *value = v8::BooleanObject::New(isolate(), false); |  1297         *value = v8::BooleanObject::New(isolate(), false); | 
|  1298         creator.pushObjectReference(*value); |  1298         deserializer.pushObjectReference(*value); | 
|  1299         break; |  1299         break; | 
|  1300     case StringTag: |  1300     case StringTag: | 
|  1301         if (!readString(value)) |  1301         if (!readString(value)) | 
|  1302             return false; |  1302             return false; | 
|  1303         break; |  1303         break; | 
|  1304     case StringUCharTag: |  1304     case StringUCharTag: | 
|  1305         if (!readUCharString(value)) |  1305         if (!readUCharString(value)) | 
|  1306             return false; |  1306             return false; | 
|  1307         break; |  1307         break; | 
|  1308     case StringObjectTag: |  1308     case StringObjectTag: | 
|  1309         if (!readStringObject(value)) |  1309         if (!readStringObject(value)) | 
|  1310             return false; |  1310             return false; | 
|  1311         creator.pushObjectReference(*value); |  1311         deserializer.pushObjectReference(*value); | 
|  1312         break; |  1312         break; | 
|  1313     case Int32Tag: |  1313     case Int32Tag: | 
|  1314         if (!readInt32(value)) |  1314         if (!readInt32(value)) | 
|  1315             return false; |  1315             return false; | 
|  1316         break; |  1316         break; | 
|  1317     case Uint32Tag: |  1317     case Uint32Tag: | 
|  1318         if (!readUint32(value)) |  1318         if (!readUint32(value)) | 
|  1319             return false; |  1319             return false; | 
|  1320         break; |  1320         break; | 
|  1321     case DateTag: |  1321     case DateTag: | 
|  1322         if (!readDate(value)) |  1322         if (!readDate(value)) | 
|  1323             return false; |  1323             return false; | 
|  1324         creator.pushObjectReference(*value); |  1324         deserializer.pushObjectReference(*value); | 
|  1325         break; |  1325         break; | 
|  1326     case NumberTag: |  1326     case NumberTag: | 
|  1327         if (!readNumber(value)) |  1327         if (!readNumber(value)) | 
|  1328             return false; |  1328             return false; | 
|  1329         break; |  1329         break; | 
|  1330     case NumberObjectTag: |  1330     case NumberObjectTag: | 
|  1331         if (!readNumberObject(value)) |  1331         if (!readNumberObject(value)) | 
|  1332             return false; |  1332             return false; | 
|  1333         creator.pushObjectReference(*value); |  1333         deserializer.pushObjectReference(*value); | 
|  1334         break; |  1334         break; | 
|  1335     case BlobTag: |  1335     case BlobTag: | 
|  1336     case BlobIndexTag: |  1336     case BlobIndexTag: | 
|  1337         if (!readBlob(value, tag == BlobIndexTag)) |  1337         if (!readBlob(value, tag == BlobIndexTag)) | 
|  1338             return false; |  1338             return false; | 
|  1339         creator.pushObjectReference(*value); |  1339         deserializer.pushObjectReference(*value); | 
|  1340         break; |  1340         break; | 
|  1341     case FileTag: |  1341     case FileTag: | 
|  1342     case FileIndexTag: |  1342     case FileIndexTag: | 
|  1343         if (!readFile(value, tag == FileIndexTag)) |  1343         if (!readFile(value, tag == FileIndexTag)) | 
|  1344             return false; |  1344             return false; | 
|  1345         creator.pushObjectReference(*value); |  1345         deserializer.pushObjectReference(*value); | 
|  1346         break; |  1346         break; | 
|  1347     case FileListTag: |  1347     case FileListTag: | 
|  1348     case FileListIndexTag: |  1348     case FileListIndexTag: | 
|  1349         if (!readFileList(value, tag == FileListIndexTag)) |  1349         if (!readFileList(value, tag == FileListIndexTag)) | 
|  1350             return false; |  1350             return false; | 
|  1351         creator.pushObjectReference(*value); |  1351         deserializer.pushObjectReference(*value); | 
|  1352         break; |  1352         break; | 
|  1353     case CompositorProxyTag: |  1353     case CompositorProxyTag: | 
|  1354         if (!readCompositorProxy(value)) |  1354         if (!readCompositorProxy(value)) | 
|  1355             return false; |  1355             return false; | 
|  1356         creator.pushObjectReference(*value); |  1356         deserializer.pushObjectReference(*value); | 
|  1357         break; |  1357         break; | 
|  1358  |  1358  | 
|  1359     case ImageDataTag: |  1359     case ImageDataTag: | 
|  1360         if (!readImageData(value)) |  1360         if (!readImageData(value)) | 
|  1361             return false; |  1361             return false; | 
|  1362         creator.pushObjectReference(*value); |  1362         deserializer.pushObjectReference(*value); | 
|  1363         break; |  1363         break; | 
|  1364     case ImageBitmapTag: |  1364     case ImageBitmapTag: | 
|  1365         if (!readImageBitmap(value)) |  1365         if (!readImageBitmap(value)) | 
|  1366             return false; |  1366             return false; | 
|  1367         creator.pushObjectReference(*value); |  1367         deserializer.pushObjectReference(*value); | 
|  1368         break; |  1368         break; | 
|  1369  |  1369  | 
|  1370     case RegExpTag: |  1370     case RegExpTag: | 
|  1371         if (!readRegExp(value)) |  1371         if (!readRegExp(value)) | 
|  1372             return false; |  1372             return false; | 
|  1373         creator.pushObjectReference(*value); |  1373         deserializer.pushObjectReference(*value); | 
|  1374         break; |  1374         break; | 
|  1375     case ObjectTag: { |  1375     case ObjectTag: { | 
|  1376         uint32_t numProperties; |  1376         uint32_t numProperties; | 
|  1377         if (!doReadUint32(&numProperties)) |  1377         if (!doReadUint32(&numProperties)) | 
|  1378             return false; |  1378             return false; | 
|  1379         if (!creator.completeObject(numProperties, value)) |  1379         if (!deserializer.completeObject(numProperties, value)) | 
|  1380             return false; |  1380             return false; | 
|  1381         break; |  1381         break; | 
|  1382     } |  1382     } | 
|  1383     case SparseArrayTag: { |  1383     case SparseArrayTag: { | 
|  1384         uint32_t numProperties; |  1384         uint32_t numProperties; | 
|  1385         uint32_t length; |  1385         uint32_t length; | 
|  1386         if (!doReadUint32(&numProperties)) |  1386         if (!doReadUint32(&numProperties)) | 
|  1387             return false; |  1387             return false; | 
|  1388         if (!doReadUint32(&length)) |  1388         if (!doReadUint32(&length)) | 
|  1389             return false; |  1389             return false; | 
|  1390         if (!creator.completeSparseArray(numProperties, length, value)) |  1390         if (!deserializer.completeSparseArray(numProperties, length, value)) | 
|  1391             return false; |  1391             return false; | 
|  1392         break; |  1392         break; | 
|  1393     } |  1393     } | 
|  1394     case DenseArrayTag: { |  1394     case DenseArrayTag: { | 
|  1395         uint32_t numProperties; |  1395         uint32_t numProperties; | 
|  1396         uint32_t length; |  1396         uint32_t length; | 
|  1397         if (!doReadUint32(&numProperties)) |  1397         if (!doReadUint32(&numProperties)) | 
|  1398             return false; |  1398             return false; | 
|  1399         if (!doReadUint32(&length)) |  1399         if (!doReadUint32(&length)) | 
|  1400             return false; |  1400             return false; | 
|  1401         if (!creator.completeDenseArray(numProperties, length, value)) |  1401         if (!deserializer.completeDenseArray(numProperties, length, value)) | 
|  1402             return false; |  1402             return false; | 
|  1403         break; |  1403         break; | 
|  1404     } |  1404     } | 
|  1405     case MapTag: { |  1405     case MapTag: { | 
|  1406         uint32_t length; |  1406         uint32_t length; | 
|  1407         if (!doReadUint32(&length)) |  1407         if (!doReadUint32(&length)) | 
|  1408             return false; |  1408             return false; | 
|  1409         if (!creator.completeMap(length, value)) |  1409         if (!deserializer.completeMap(length, value)) | 
|  1410             return false; |  1410             return false; | 
|  1411         break; |  1411         break; | 
|  1412     } |  1412     } | 
|  1413     case SetTag: { |  1413     case SetTag: { | 
|  1414         uint32_t length; |  1414         uint32_t length; | 
|  1415         if (!doReadUint32(&length)) |  1415         if (!doReadUint32(&length)) | 
|  1416             return false; |  1416             return false; | 
|  1417         if (!creator.completeSet(length, value)) |  1417         if (!deserializer.completeSet(length, value)) | 
|  1418             return false; |  1418             return false; | 
|  1419         break; |  1419         break; | 
|  1420     } |  1420     } | 
|  1421     case ArrayBufferViewTag: { |  1421     case ArrayBufferViewTag: { | 
|  1422         if (!m_version) |  1422         if (!m_version) | 
|  1423             return false; |  1423             return false; | 
|  1424         if (!readArrayBufferView(value, creator)) |  1424         if (!readArrayBufferView(value, deserializer)) | 
|  1425             return false; |  1425             return false; | 
|  1426         creator.pushObjectReference(*value); |  1426         deserializer.pushObjectReference(*value); | 
|  1427         break; |  1427         break; | 
|  1428     } |  1428     } | 
|  1429     case ArrayBufferTag: { |  1429     case ArrayBufferTag: { | 
|  1430         if (!m_version) |  1430         if (!m_version) | 
|  1431             return false; |  1431             return false; | 
|  1432         if (!readArrayBuffer(value)) |  1432         if (!readArrayBuffer(value)) | 
|  1433             return false; |  1433             return false; | 
|  1434         creator.pushObjectReference(*value); |  1434         deserializer.pushObjectReference(*value); | 
|  1435         break; |  1435         break; | 
|  1436     } |  1436     } | 
|  1437     case GenerateFreshObjectTag: { |  1437     case GenerateFreshObjectTag: { | 
|  1438         if (!m_version) |  1438         if (!m_version) | 
|  1439             return false; |  1439             return false; | 
|  1440         if (!creator.newObject()) |  1440         if (!deserializer.newObject()) | 
|  1441             return false; |  1441             return false; | 
|  1442         return true; |  1442         return true; | 
|  1443     } |  1443     } | 
|  1444     case GenerateFreshSparseArrayTag: { |  1444     case GenerateFreshSparseArrayTag: { | 
|  1445         if (!m_version) |  1445         if (!m_version) | 
|  1446             return false; |  1446             return false; | 
|  1447         uint32_t length; |  1447         uint32_t length; | 
|  1448         if (!doReadUint32(&length)) |  1448         if (!doReadUint32(&length)) | 
|  1449             return false; |  1449             return false; | 
|  1450         if (!creator.newSparseArray(length)) |  1450         if (!deserializer.newSparseArray(length)) | 
|  1451             return false; |  1451             return false; | 
|  1452         return true; |  1452         return true; | 
|  1453     } |  1453     } | 
|  1454     case GenerateFreshDenseArrayTag: { |  1454     case GenerateFreshDenseArrayTag: { | 
|  1455         if (!m_version) |  1455         if (!m_version) | 
|  1456             return false; |  1456             return false; | 
|  1457         uint32_t length; |  1457         uint32_t length; | 
|  1458         if (!doReadUint32(&length)) |  1458         if (!doReadUint32(&length)) | 
|  1459             return false; |  1459             return false; | 
|  1460         if (!creator.newDenseArray(length)) |  1460         if (!deserializer.newDenseArray(length)) | 
|  1461             return false; |  1461             return false; | 
|  1462         return true; |  1462         return true; | 
|  1463     } |  1463     } | 
|  1464     case GenerateFreshMapTag: { |  1464     case GenerateFreshMapTag: { | 
|  1465         if (!m_version) |  1465         if (!m_version) | 
|  1466             return false; |  1466             return false; | 
|  1467         if (!creator.newMap()) |  1467         if (!deserializer.newMap()) | 
|  1468             return false; |  1468             return false; | 
|  1469         return true; |  1469         return true; | 
|  1470     } |  1470     } | 
|  1471     case GenerateFreshSetTag: { |  1471     case GenerateFreshSetTag: { | 
|  1472         if (!m_version) |  1472         if (!m_version) | 
|  1473             return false; |  1473             return false; | 
|  1474         if (!creator.newSet()) |  1474         if (!deserializer.newSet()) | 
|  1475             return false; |  1475             return false; | 
|  1476         return true; |  1476         return true; | 
|  1477     } |  1477     } | 
|  1478     case MessagePortTag: { |  1478     case MessagePortTag: { | 
|  1479         if (!m_version) |  1479         if (!m_version) | 
|  1480             return false; |  1480             return false; | 
|  1481         uint32_t index; |  1481         uint32_t index; | 
|  1482         if (!doReadUint32(&index)) |  1482         if (!doReadUint32(&index)) | 
|  1483             return false; |  1483             return false; | 
|  1484         if (!creator.tryGetTransferredMessagePort(index, value)) |  1484         if (!deserializer.tryGetTransferredMessagePort(index, value)) | 
|  1485             return false; |  1485             return false; | 
|  1486         break; |  1486         break; | 
|  1487     } |  1487     } | 
|  1488     case ArrayBufferTransferTag: { |  1488     case ArrayBufferTransferTag: { | 
|  1489         if (!m_version) |  1489         if (!m_version) | 
|  1490             return false; |  1490             return false; | 
|  1491         uint32_t index; |  1491         uint32_t index; | 
|  1492         if (!doReadUint32(&index)) |  1492         if (!doReadUint32(&index)) | 
|  1493             return false; |  1493             return false; | 
|  1494         if (!creator.tryGetTransferredArrayBuffer(index, value)) |  1494         if (!deserializer.tryGetTransferredArrayBuffer(index, value)) | 
|  1495             return false; |  1495             return false; | 
|  1496         break; |  1496         break; | 
|  1497     } |  1497     } | 
|  1498     case ImageBitmapTransferTag: { |  1498     case ImageBitmapTransferTag: { | 
|  1499         if (!m_version) |  1499         if (!m_version) | 
|  1500             return false; |  1500             return false; | 
|  1501         uint32_t index; |  1501         uint32_t index; | 
|  1502         if (!doReadUint32(&index)) |  1502         if (!doReadUint32(&index)) | 
|  1503             return false; |  1503             return false; | 
|  1504         if (!creator.tryGetTransferredImageBitmap(index, value)) |  1504         if (!deserializer.tryGetTransferredImageBitmap(index, value)) | 
|  1505             return false; |  1505             return false; | 
|  1506         break; |  1506         break; | 
|  1507     } |  1507     } | 
|  1508     case OffscreenCanvasTransferTag: { |  1508     case OffscreenCanvasTransferTag: { | 
|  1509         if (!m_version) |  1509         if (!m_version) | 
|  1510             return false; |  1510             return false; | 
|  1511         uint32_t index, width, height, id; |  1511         uint32_t index, width, height, id; | 
|  1512         if (!doReadUint32(&index)) |  1512         if (!doReadUint32(&index)) | 
|  1513             return false; |  1513             return false; | 
|  1514         if (!doReadUint32(&width)) |  1514         if (!doReadUint32(&width)) | 
|  1515             return false; |  1515             return false; | 
|  1516         if (!doReadUint32(&height)) |  1516         if (!doReadUint32(&height)) | 
|  1517             return false; |  1517             return false; | 
|  1518         if (!doReadUint32(&id)) |  1518         if (!doReadUint32(&id)) | 
|  1519             return false; |  1519             return false; | 
|  1520         if (!creator.tryGetTransferredOffscreenCanvas(index, width, height, id, 
      value)) |  1520         if (!deserializer.tryGetTransferredOffscreenCanvas(index, width, height,
       id, value)) | 
|  1521             return false; |  1521             return false; | 
|  1522         break; |  1522         break; | 
|  1523     } |  1523     } | 
|  1524     case SharedArrayBufferTransferTag: { |  1524     case SharedArrayBufferTransferTag: { | 
|  1525         if (!m_version) |  1525         if (!m_version) | 
|  1526             return false; |  1526             return false; | 
|  1527         uint32_t index; |  1527         uint32_t index; | 
|  1528         if (!doReadUint32(&index)) |  1528         if (!doReadUint32(&index)) | 
|  1529             return false; |  1529             return false; | 
|  1530         if (!creator.tryGetTransferredSharedArrayBuffer(index, value)) |  1530         if (!deserializer.tryGetTransferredSharedArrayBuffer(index, value)) | 
|  1531             return false; |  1531             return false; | 
|  1532         break; |  1532         break; | 
|  1533     } |  1533     } | 
|  1534     case ObjectReferenceTag: { |  1534     case ObjectReferenceTag: { | 
|  1535         if (!m_version) |  1535         if (!m_version) | 
|  1536             return false; |  1536             return false; | 
|  1537         uint32_t reference; |  1537         uint32_t reference; | 
|  1538         if (!doReadUint32(&reference)) |  1538         if (!doReadUint32(&reference)) | 
|  1539             return false; |  1539             return false; | 
|  1540         if (!creator.tryGetObjectFromObjectReference(reference, value)) |  1540         if (!deserializer.tryGetObjectFromObjectReference(reference, value)) | 
|  1541             return false; |  1541             return false; | 
|  1542         break; |  1542         break; | 
|  1543     } |  1543     } | 
|  1544     case DOMFileSystemTag: |  1544     case DOMFileSystemTag: | 
|  1545     case CryptoKeyTag: |  1545     case CryptoKeyTag: | 
|  1546         ASSERT_NOT_REACHED(); |  1546         ASSERT_NOT_REACHED(); | 
|  1547     default: |  1547     default: | 
|  1548         return false; |  1548         return false; | 
|  1549     } |  1549     } | 
|  1550     return !value->IsEmpty(); |  1550     return !value->IsEmpty(); | 
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1763  |  1763  | 
|  1764 bool SerializedScriptValueReader::readArrayBuffer(v8::Local<v8::Value>* value) |  1764 bool SerializedScriptValueReader::readArrayBuffer(v8::Local<v8::Value>* value) | 
|  1765 { |  1765 { | 
|  1766     DOMArrayBuffer* arrayBuffer = doReadArrayBuffer(); |  1766     DOMArrayBuffer* arrayBuffer = doReadArrayBuffer(); | 
|  1767     if (!arrayBuffer) |  1767     if (!arrayBuffer) | 
|  1768         return false; |  1768         return false; | 
|  1769     *value = toV8(arrayBuffer, m_scriptState->context()->Global(), isolate()); |  1769     *value = toV8(arrayBuffer, m_scriptState->context()->Global(), isolate()); | 
|  1770     return !value->IsEmpty(); |  1770     return !value->IsEmpty(); | 
|  1771 } |  1771 } | 
|  1772  |  1772  | 
|  1773 bool SerializedScriptValueReader::readArrayBufferView(v8::Local<v8::Value>* valu
      e, ScriptValueCompositeCreator& creator) |  1773 bool SerializedScriptValueReader::readArrayBufferView(v8::Local<v8::Value>* valu
      e, ScriptValueDeserializer& deserializer) | 
|  1774 { |  1774 { | 
|  1775     ArrayBufferViewSubTag subTag; |  1775     ArrayBufferViewSubTag subTag; | 
|  1776     uint32_t byteOffset; |  1776     uint32_t byteOffset; | 
|  1777     uint32_t byteLength; |  1777     uint32_t byteLength; | 
|  1778     DOMArrayBufferBase* arrayBuffer = nullptr; |  1778     DOMArrayBufferBase* arrayBuffer = nullptr; | 
|  1779     v8::Local<v8::Value> arrayBufferV8Value; |  1779     v8::Local<v8::Value> arrayBufferV8Value; | 
|  1780     if (!readArrayBufferViewSubTag(&subTag)) |  1780     if (!readArrayBufferViewSubTag(&subTag)) | 
|  1781         return false; |  1781         return false; | 
|  1782     if (!doReadUint32(&byteOffset)) |  1782     if (!doReadUint32(&byteOffset)) | 
|  1783         return false; |  1783         return false; | 
|  1784     if (!doReadUint32(&byteLength)) |  1784     if (!doReadUint32(&byteLength)) | 
|  1785         return false; |  1785         return false; | 
|  1786     if (!creator.consumeTopOfStack(&arrayBufferV8Value)) |  1786     if (!deserializer.consumeTopOfStack(&arrayBufferV8Value)) | 
|  1787         return false; |  1787         return false; | 
|  1788     if (arrayBufferV8Value.IsEmpty()) |  1788     if (arrayBufferV8Value.IsEmpty()) | 
|  1789         return false; |  1789         return false; | 
|  1790     if (arrayBufferV8Value->IsArrayBuffer()) { |  1790     if (arrayBufferV8Value->IsArrayBuffer()) { | 
|  1791         arrayBuffer = V8ArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Object>())
      ; |  1791         arrayBuffer = V8ArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Object>())
      ; | 
|  1792         if (!arrayBuffer) |  1792         if (!arrayBuffer) | 
|  1793             return false; |  1793             return false; | 
|  1794     } else if (arrayBufferV8Value->IsSharedArrayBuffer()) { |  1794     } else if (arrayBufferV8Value->IsSharedArrayBuffer()) { | 
|  1795         arrayBuffer = V8SharedArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Obje
      ct>()); |  1795         arrayBuffer = V8SharedArrayBuffer::toImpl(arrayBufferV8Value.As<v8::Obje
      ct>()); | 
|  1796         if (!arrayBuffer) |  1796         if (!arrayBuffer) | 
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2380         return false; |  2380         return false; | 
|  2381     uint32_t objectReference = m_openCompositeReferenceStack[m_openCompositeRefe
      renceStack.size() - 1]; |  2381     uint32_t objectReference = m_openCompositeReferenceStack[m_openCompositeRefe
      renceStack.size() - 1]; | 
|  2382     m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() - 
      1); |  2382     m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() - 
      1); | 
|  2383     if (objectReference >= m_objectPool.size()) |  2383     if (objectReference >= m_objectPool.size()) | 
|  2384         return false; |  2384         return false; | 
|  2385     *object = m_objectPool[objectReference]; |  2385     *object = m_objectPool[objectReference]; | 
|  2386     return true; |  2386     return true; | 
|  2387 } |  2387 } | 
|  2388  |  2388  | 
|  2389 } // namespace blink |  2389 } // namespace blink | 
| OLD | NEW |