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

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp

Issue 2595543003: Rename toV8(...) function in Blink to ToV8(...). (Closed)
Patch Set: Rebasing... Created 3 years, 11 months 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 // 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 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 void ScriptValueSerializer::copyTransferables( 702 void ScriptValueSerializer::copyTransferables(
703 const Transferables& transferables) { 703 const Transferables& transferables) {
704 v8::Local<v8::Object> creationContext = m_scriptState->context()->Global(); 704 v8::Local<v8::Object> creationContext = m_scriptState->context()->Global();
705 705
706 // Also kept in separate ObjectPools, iterate and copy the contents 706 // Also kept in separate ObjectPools, iterate and copy the contents
707 // of each kind of transferable vector. 707 // of each kind of transferable vector.
708 708
709 const auto& messagePorts = transferables.messagePorts; 709 const auto& messagePorts = transferables.messagePorts;
710 for (size_t i = 0; i < messagePorts.size(); ++i) { 710 for (size_t i = 0; i < messagePorts.size(); ++i) {
711 v8::Local<v8::Object> v8MessagePort = 711 v8::Local<v8::Object> v8MessagePort =
712 toV8(messagePorts[i].get(), creationContext, isolate()) 712 ToV8(messagePorts[i].get(), creationContext, isolate())
713 .As<v8::Object>(); 713 .As<v8::Object>();
714 m_transferredMessagePorts.set(v8MessagePort, i); 714 m_transferredMessagePorts.set(v8MessagePort, i);
715 } 715 }
716 716
717 const auto& arrayBuffers = transferables.arrayBuffers; 717 const auto& arrayBuffers = transferables.arrayBuffers;
718 for (size_t i = 0; i < arrayBuffers.size(); ++i) { 718 for (size_t i = 0; i < arrayBuffers.size(); ++i) {
719 v8::Local<v8::Object> v8ArrayBuffer = 719 v8::Local<v8::Object> v8ArrayBuffer =
720 toV8(arrayBuffers[i].get(), creationContext, isolate()) 720 ToV8(arrayBuffers[i].get(), creationContext, isolate())
721 .As<v8::Object>(); 721 .As<v8::Object>();
722 // Coalesce multiple occurences of the same buffer to the first index. 722 // Coalesce multiple occurences of the same buffer to the first index.
723 if (!m_transferredArrayBuffers.contains(v8ArrayBuffer)) 723 if (!m_transferredArrayBuffers.contains(v8ArrayBuffer))
724 m_transferredArrayBuffers.set(v8ArrayBuffer, i); 724 m_transferredArrayBuffers.set(v8ArrayBuffer, i);
725 } 725 }
726 726
727 const auto& imageBitmaps = transferables.imageBitmaps; 727 const auto& imageBitmaps = transferables.imageBitmaps;
728 for (size_t i = 0; i < imageBitmaps.size(); ++i) { 728 for (size_t i = 0; i < imageBitmaps.size(); ++i) {
729 v8::Local<v8::Object> v8ImageBitmap = 729 v8::Local<v8::Object> v8ImageBitmap =
730 toV8(imageBitmaps[i].get(), creationContext, isolate()) 730 ToV8(imageBitmaps[i].get(), creationContext, isolate())
731 .As<v8::Object>(); 731 .As<v8::Object>();
732 if (!m_transferredImageBitmaps.contains(v8ImageBitmap)) 732 if (!m_transferredImageBitmaps.contains(v8ImageBitmap))
733 m_transferredImageBitmaps.set(v8ImageBitmap, i); 733 m_transferredImageBitmaps.set(v8ImageBitmap, i);
734 } 734 }
735 735
736 const auto& offscreenCanvases = transferables.offscreenCanvases; 736 const auto& offscreenCanvases = transferables.offscreenCanvases;
737 for (size_t i = 0; i < offscreenCanvases.size(); ++i) { 737 for (size_t i = 0; i < offscreenCanvases.size(); ++i) {
738 v8::Local<v8::Object> v8OffscreenCanvas = 738 v8::Local<v8::Object> v8OffscreenCanvas =
739 toV8(offscreenCanvases[i].get(), creationContext, isolate()) 739 ToV8(offscreenCanvases[i].get(), creationContext, isolate())
740 .As<v8::Object>(); 740 .As<v8::Object>();
741 if (!m_transferredOffscreenCanvas.contains(v8OffscreenCanvas)) 741 if (!m_transferredOffscreenCanvas.contains(v8OffscreenCanvas))
742 m_transferredOffscreenCanvas.set(v8OffscreenCanvas, i); 742 m_transferredOffscreenCanvas.set(v8OffscreenCanvas, i);
743 } 743 }
744 } 744 }
745 745
746 PassRefPtr<SerializedScriptValue> ScriptValueSerializer::serialize( 746 PassRefPtr<SerializedScriptValue> ScriptValueSerializer::serialize(
747 v8::Local<v8::Value> value, 747 v8::Local<v8::Value> value,
748 Transferables* transferables, 748 Transferables* transferables,
749 ExceptionState& exceptionState) { 749 ExceptionState& exceptionState) {
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 ScriptValueSerializer::writeAndGreyArrayBufferView(v8::Local<v8::Object> object, 1200 ScriptValueSerializer::writeAndGreyArrayBufferView(v8::Local<v8::Object> object,
1201 StateBase* next) { 1201 StateBase* next) {
1202 ASSERT(!object.IsEmpty()); 1202 ASSERT(!object.IsEmpty());
1203 DOMArrayBufferView* arrayBufferView = V8ArrayBufferView::toImpl(object); 1203 DOMArrayBufferView* arrayBufferView = V8ArrayBufferView::toImpl(object);
1204 if (!arrayBufferView) 1204 if (!arrayBufferView)
1205 return nullptr; 1205 return nullptr;
1206 if (!arrayBufferView->bufferBase()) 1206 if (!arrayBufferView->bufferBase())
1207 return handleError(Status::DataCloneError, 1207 return handleError(Status::DataCloneError,
1208 "An ArrayBuffer could not be cloned.", next); 1208 "An ArrayBuffer could not be cloned.", next);
1209 v8::Local<v8::Value> underlyingBuffer = 1209 v8::Local<v8::Value> underlyingBuffer =
1210 toV8(arrayBufferView->bufferBase(), m_scriptState->context()->Global(), 1210 ToV8(arrayBufferView->bufferBase(), m_scriptState->context()->Global(),
1211 isolate()); 1211 isolate());
1212 if (underlyingBuffer.IsEmpty()) 1212 if (underlyingBuffer.IsEmpty())
1213 return handleError(Status::DataCloneError, 1213 return handleError(Status::DataCloneError,
1214 "An ArrayBuffer could not be cloned.", next); 1214 "An ArrayBuffer could not be cloned.", next);
1215 StateBase* stateOut = doSerializeArrayBuffer(underlyingBuffer, next); 1215 StateBase* stateOut = doSerializeArrayBuffer(underlyingBuffer, next);
1216 if (stateOut) 1216 if (stateOut)
1217 return stateOut; 1217 return stateOut;
1218 m_writer.writeArrayBufferView(*arrayBufferView); 1218 m_writer.writeArrayBufferView(*arrayBufferView);
1219 // This should be safe: we serialize something that we know to be a wrapper 1219 // This should be safe: we serialize something that we know to be a wrapper
1220 // (see the toV8 call above), so the call to doSerializeArrayBuffer should 1220 // (see the toV8 call above), so the call to doSerializeArrayBuffer should
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
1878 if (!doReadImageDataProperties(&width, &height, &pixelDataLength)) 1878 if (!doReadImageDataProperties(&width, &height, &pixelDataLength))
1879 return false; 1879 return false;
1880 ImageData* imageData = ImageData::create(IntSize(width, height)); 1880 ImageData* imageData = ImageData::create(IntSize(width, height));
1881 DOMUint8ClampedArray* pixelArray = imageData->data(); 1881 DOMUint8ClampedArray* pixelArray = imageData->data();
1882 ASSERT(pixelArray); 1882 ASSERT(pixelArray);
1883 ASSERT(pixelArray->length() >= pixelDataLength); 1883 ASSERT(pixelArray->length() >= pixelDataLength);
1884 memcpy(pixelArray->data(), m_buffer + m_position, pixelDataLength); 1884 memcpy(pixelArray->data(), m_buffer + m_position, pixelDataLength);
1885 m_position += pixelDataLength; 1885 m_position += pixelDataLength;
1886 if (!imageData) 1886 if (!imageData)
1887 return false; 1887 return false;
1888 *value = toV8(imageData, m_scriptState->context()->Global(), isolate()); 1888 *value = ToV8(imageData, m_scriptState->context()->Global(), isolate());
1889 return !value->IsEmpty(); 1889 return !value->IsEmpty();
1890 } 1890 }
1891 1891
1892 bool SerializedScriptValueReader::readImageBitmap(v8::Local<v8::Value>* value) { 1892 bool SerializedScriptValueReader::readImageBitmap(v8::Local<v8::Value>* value) {
1893 uint32_t isOriginClean; 1893 uint32_t isOriginClean;
1894 if (!doReadUint32(&isOriginClean)) 1894 if (!doReadUint32(&isOriginClean))
1895 return false; 1895 return false;
1896 uint32_t isPremultiplied; 1896 uint32_t isPremultiplied;
1897 if (!doReadUint32(&isPremultiplied)) 1897 if (!doReadUint32(&isPremultiplied))
1898 return false; 1898 return false;
1899 uint32_t width; 1899 uint32_t width;
1900 uint32_t height; 1900 uint32_t height;
1901 uint32_t pixelDataLength; 1901 uint32_t pixelDataLength;
1902 if (!doReadImageDataProperties(&width, &height, &pixelDataLength)) 1902 if (!doReadImageDataProperties(&width, &height, &pixelDataLength))
1903 return false; 1903 return false;
1904 const void* pixelData = m_buffer + m_position; 1904 const void* pixelData = m_buffer + m_position;
1905 m_position += pixelDataLength; 1905 m_position += pixelDataLength;
1906 ImageBitmap* imageBitmap = ImageBitmap::create( 1906 ImageBitmap* imageBitmap = ImageBitmap::create(
1907 pixelData, width, height, isPremultiplied, isOriginClean); 1907 pixelData, width, height, isPremultiplied, isOriginClean);
1908 if (!imageBitmap) 1908 if (!imageBitmap)
1909 return false; 1909 return false;
1910 *value = toV8(imageBitmap, m_scriptState->context()->Global(), isolate()); 1910 *value = ToV8(imageBitmap, m_scriptState->context()->Global(), isolate());
1911 return !value->IsEmpty(); 1911 return !value->IsEmpty();
1912 } 1912 }
1913 1913
1914 bool SerializedScriptValueReader::readCompositorProxy( 1914 bool SerializedScriptValueReader::readCompositorProxy(
1915 v8::Local<v8::Value>* value) { 1915 v8::Local<v8::Value>* value) {
1916 uint32_t attributes; 1916 uint32_t attributes;
1917 uint64_t element; 1917 uint64_t element;
1918 if (!doReadUint64(&element)) 1918 if (!doReadUint64(&element))
1919 return false; 1919 return false;
1920 if (!doReadUint32(&attributes)) 1920 if (!doReadUint32(&attributes))
1921 return false; 1921 return false;
1922 1922
1923 CompositorProxy* compositorProxy = CompositorProxy::create( 1923 CompositorProxy* compositorProxy = CompositorProxy::create(
1924 m_scriptState->getExecutionContext(), element, attributes); 1924 m_scriptState->getExecutionContext(), element, attributes);
1925 *value = toV8(compositorProxy, m_scriptState->context()->Global(), isolate()); 1925 *value = ToV8(compositorProxy, m_scriptState->context()->Global(), isolate());
1926 return !value->IsEmpty(); 1926 return !value->IsEmpty();
1927 } 1927 }
1928 1928
1929 DOMArrayBuffer* SerializedScriptValueReader::doReadArrayBuffer() { 1929 DOMArrayBuffer* SerializedScriptValueReader::doReadArrayBuffer() {
1930 uint32_t byteLength; 1930 uint32_t byteLength;
1931 if (!doReadUint32(&byteLength)) 1931 if (!doReadUint32(&byteLength))
1932 return nullptr; 1932 return nullptr;
1933 if (m_position + byteLength > m_length) 1933 if (m_position + byteLength > m_length)
1934 return nullptr; 1934 return nullptr;
1935 const void* bufferStart = m_buffer + m_position; 1935 const void* bufferStart = m_buffer + m_position;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1974 v8::WasmCompiledModule::DeserializeOrCompile(isolate(), compiledBytes, 1974 v8::WasmCompiledModule::DeserializeOrCompile(isolate(), compiledBytes,
1975 wireBytes); 1975 wireBytes);
1976 1976
1977 return retval.ToLocal(value); 1977 return retval.ToLocal(value);
1978 } 1978 }
1979 1979
1980 bool SerializedScriptValueReader::readArrayBuffer(v8::Local<v8::Value>* value) { 1980 bool SerializedScriptValueReader::readArrayBuffer(v8::Local<v8::Value>* value) {
1981 DOMArrayBuffer* arrayBuffer = doReadArrayBuffer(); 1981 DOMArrayBuffer* arrayBuffer = doReadArrayBuffer();
1982 if (!arrayBuffer) 1982 if (!arrayBuffer)
1983 return false; 1983 return false;
1984 *value = toV8(arrayBuffer, m_scriptState->context()->Global(), isolate()); 1984 *value = ToV8(arrayBuffer, m_scriptState->context()->Global(), isolate());
1985 return !value->IsEmpty(); 1985 return !value->IsEmpty();
1986 } 1986 }
1987 1987
1988 bool SerializedScriptValueReader::readArrayBufferView( 1988 bool SerializedScriptValueReader::readArrayBufferView(
1989 v8::Local<v8::Value>* value, 1989 v8::Local<v8::Value>* value,
1990 ScriptValueDeserializer& deserializer) { 1990 ScriptValueDeserializer& deserializer) {
1991 ArrayBufferViewSubTag subTag; 1991 ArrayBufferViewSubTag subTag;
1992 uint32_t byteOffset; 1992 uint32_t byteOffset;
1993 uint32_t byteLength; 1993 uint32_t byteLength;
1994 DOMArrayBufferBase* arrayBuffer = nullptr; 1994 DOMArrayBufferBase* arrayBuffer = nullptr;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 const unsigned numElements = byteLength / elementByteSize; 2055 const unsigned numElements = byteLength / elementByteSize;
2056 const unsigned remainingElements = 2056 const unsigned remainingElements =
2057 (arrayBuffer->byteLength() - byteOffset) / elementByteSize; 2057 (arrayBuffer->byteLength() - byteOffset) / elementByteSize;
2058 if (byteOffset % elementByteSize || byteOffset > arrayBuffer->byteLength() || 2058 if (byteOffset % elementByteSize || byteOffset > arrayBuffer->byteLength() ||
2059 numElements > remainingElements) 2059 numElements > remainingElements)
2060 return false; 2060 return false;
2061 2061
2062 v8::Local<v8::Object> creationContext = m_scriptState->context()->Global(); 2062 v8::Local<v8::Object> creationContext = m_scriptState->context()->Global();
2063 switch (subTag) { 2063 switch (subTag) {
2064 case ByteArrayTag: 2064 case ByteArrayTag:
2065 *value = toV8(DOMInt8Array::create(arrayBuffer, byteOffset, numElements), 2065 *value = ToV8(DOMInt8Array::create(arrayBuffer, byteOffset, numElements),
2066 creationContext, isolate()); 2066 creationContext, isolate());
2067 break; 2067 break;
2068 case UnsignedByteArrayTag: 2068 case UnsignedByteArrayTag:
2069 *value = toV8(DOMUint8Array::create(arrayBuffer, byteOffset, numElements), 2069 *value = ToV8(DOMUint8Array::create(arrayBuffer, byteOffset, numElements),
2070 creationContext, isolate()); 2070 creationContext, isolate());
2071 break; 2071 break;
2072 case UnsignedByteClampedArrayTag: 2072 case UnsignedByteClampedArrayTag:
2073 *value = toV8( 2073 *value = ToV8(
2074 DOMUint8ClampedArray::create(arrayBuffer, byteOffset, numElements), 2074 DOMUint8ClampedArray::create(arrayBuffer, byteOffset, numElements),
2075 creationContext, isolate()); 2075 creationContext, isolate());
2076 break; 2076 break;
2077 case ShortArrayTag: 2077 case ShortArrayTag:
2078 *value = toV8(DOMInt16Array::create(arrayBuffer, byteOffset, numElements), 2078 *value = ToV8(DOMInt16Array::create(arrayBuffer, byteOffset, numElements),
2079 creationContext, isolate()); 2079 creationContext, isolate());
2080 break; 2080 break;
2081 case UnsignedShortArrayTag: 2081 case UnsignedShortArrayTag:
2082 *value = 2082 *value =
2083 toV8(DOMUint16Array::create(arrayBuffer, byteOffset, numElements), 2083 ToV8(DOMUint16Array::create(arrayBuffer, byteOffset, numElements),
2084 creationContext, isolate()); 2084 creationContext, isolate());
2085 break; 2085 break;
2086 case IntArrayTag: 2086 case IntArrayTag:
2087 *value = toV8(DOMInt32Array::create(arrayBuffer, byteOffset, numElements), 2087 *value = ToV8(DOMInt32Array::create(arrayBuffer, byteOffset, numElements),
2088 creationContext, isolate()); 2088 creationContext, isolate());
2089 break; 2089 break;
2090 case UnsignedIntArrayTag: 2090 case UnsignedIntArrayTag:
2091 *value = 2091 *value =
2092 toV8(DOMUint32Array::create(arrayBuffer, byteOffset, numElements), 2092 ToV8(DOMUint32Array::create(arrayBuffer, byteOffset, numElements),
2093 creationContext, isolate()); 2093 creationContext, isolate());
2094 break; 2094 break;
2095 case FloatArrayTag: 2095 case FloatArrayTag:
2096 *value = 2096 *value =
2097 toV8(DOMFloat32Array::create(arrayBuffer, byteOffset, numElements), 2097 ToV8(DOMFloat32Array::create(arrayBuffer, byteOffset, numElements),
2098 creationContext, isolate()); 2098 creationContext, isolate());
2099 break; 2099 break;
2100 case DoubleArrayTag: 2100 case DoubleArrayTag:
2101 *value = 2101 *value =
2102 toV8(DOMFloat64Array::create(arrayBuffer, byteOffset, numElements), 2102 ToV8(DOMFloat64Array::create(arrayBuffer, byteOffset, numElements),
2103 creationContext, isolate()); 2103 creationContext, isolate());
2104 break; 2104 break;
2105 case DataViewTag: 2105 case DataViewTag:
2106 *value = toV8(DOMDataView::create(arrayBuffer, byteOffset, byteLength), 2106 *value = ToV8(DOMDataView::create(arrayBuffer, byteOffset, byteLength),
2107 creationContext, isolate()); 2107 creationContext, isolate());
2108 break; 2108 break;
2109 } 2109 }
2110 return !value->IsEmpty(); 2110 return !value->IsEmpty();
2111 } 2111 }
2112 2112
2113 bool SerializedScriptValueReader::readRegExp(v8::Local<v8::Value>* value) { 2113 bool SerializedScriptValueReader::readRegExp(v8::Local<v8::Value>* value) {
2114 v8::Local<v8::Value> pattern; 2114 v8::Local<v8::Value> pattern;
2115 if (!readString(&pattern)) 2115 if (!readString(&pattern))
2116 return false; 2116 return false;
(...skipping 29 matching lines...) Expand all
2146 uint64_t size; 2146 uint64_t size;
2147 ASSERT(!m_blobInfo); 2147 ASSERT(!m_blobInfo);
2148 if (!readWebCoreString(&uuid)) 2148 if (!readWebCoreString(&uuid))
2149 return false; 2149 return false;
2150 if (!readWebCoreString(&type)) 2150 if (!readWebCoreString(&type))
2151 return false; 2151 return false;
2152 if (!doReadUint64(&size)) 2152 if (!doReadUint64(&size))
2153 return false; 2153 return false;
2154 blob = Blob::create(getOrCreateBlobDataHandle(uuid, type, size)); 2154 blob = Blob::create(getOrCreateBlobDataHandle(uuid, type, size));
2155 } 2155 }
2156 *value = toV8(blob, m_scriptState->context()->Global(), isolate()); 2156 *value = ToV8(blob, m_scriptState->context()->Global(), isolate());
2157 return !value->IsEmpty(); 2157 return !value->IsEmpty();
2158 } 2158 }
2159 2159
2160 bool SerializedScriptValueReader::readFile(v8::Local<v8::Value>* value, 2160 bool SerializedScriptValueReader::readFile(v8::Local<v8::Value>* value,
2161 bool isIndexed) { 2161 bool isIndexed) {
2162 File* file = nullptr; 2162 File* file = nullptr;
2163 if (isIndexed) { 2163 if (isIndexed) {
2164 if (m_version < 6) 2164 if (m_version < 6)
2165 return false; 2165 return false;
2166 file = readFileIndexHelper(); 2166 file = readFileIndexHelper();
2167 } else { 2167 } else {
2168 file = readFileHelper(); 2168 file = readFileHelper();
2169 } 2169 }
2170 if (!file) 2170 if (!file)
2171 return false; 2171 return false;
2172 *value = toV8(file, m_scriptState->context()->Global(), isolate()); 2172 *value = ToV8(file, m_scriptState->context()->Global(), isolate());
2173 return !value->IsEmpty(); 2173 return !value->IsEmpty();
2174 } 2174 }
2175 2175
2176 bool SerializedScriptValueReader::readFileList(v8::Local<v8::Value>* value, 2176 bool SerializedScriptValueReader::readFileList(v8::Local<v8::Value>* value,
2177 bool isIndexed) { 2177 bool isIndexed) {
2178 if (m_version < 3) 2178 if (m_version < 3)
2179 return false; 2179 return false;
2180 uint32_t length; 2180 uint32_t length;
2181 if (!doReadUint32(&length)) 2181 if (!doReadUint32(&length))
2182 return false; 2182 return false;
2183 FileList* fileList = FileList::create(); 2183 FileList* fileList = FileList::create();
2184 for (unsigned i = 0; i < length; ++i) { 2184 for (unsigned i = 0; i < length; ++i) {
2185 File* file = nullptr; 2185 File* file = nullptr;
2186 if (isIndexed) { 2186 if (isIndexed) {
2187 if (m_version < 6) 2187 if (m_version < 6)
2188 return false; 2188 return false;
2189 file = readFileIndexHelper(); 2189 file = readFileIndexHelper();
2190 } else { 2190 } else {
2191 file = readFileHelper(); 2191 file = readFileHelper();
2192 } 2192 }
2193 if (!file) 2193 if (!file)
2194 return false; 2194 return false;
2195 fileList->append(file); 2195 fileList->append(file);
2196 } 2196 }
2197 *value = toV8(fileList, m_scriptState->context()->Global(), isolate()); 2197 *value = ToV8(fileList, m_scriptState->context()->Global(), isolate());
2198 return !value->IsEmpty(); 2198 return !value->IsEmpty();
2199 } 2199 }
2200 2200
2201 File* SerializedScriptValueReader::readFileHelper() { 2201 File* SerializedScriptValueReader::readFileHelper() {
2202 if (m_version < 3) 2202 if (m_version < 3)
2203 return nullptr; 2203 return nullptr;
2204 ASSERT(!m_blobInfo); 2204 ASSERT(!m_blobInfo);
2205 String path; 2205 String path;
2206 String name; 2206 String name;
2207 String relativePath; 2207 String relativePath;
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
2467 2467
2468 bool ScriptValueDeserializer::tryGetTransferredMessagePort( 2468 bool ScriptValueDeserializer::tryGetTransferredMessagePort(
2469 uint32_t index, 2469 uint32_t index,
2470 v8::Local<v8::Value>* object) { 2470 v8::Local<v8::Value>* object) {
2471 if (!m_transferredMessagePorts) 2471 if (!m_transferredMessagePorts)
2472 return false; 2472 return false;
2473 if (index >= m_transferredMessagePorts->size()) 2473 if (index >= m_transferredMessagePorts->size())
2474 return false; 2474 return false;
2475 v8::Local<v8::Object> creationContext = 2475 v8::Local<v8::Object> creationContext =
2476 m_reader.getScriptState()->context()->Global(); 2476 m_reader.getScriptState()->context()->Global();
2477 *object = toV8(m_transferredMessagePorts->at(index).get(), creationContext, 2477 *object = ToV8(m_transferredMessagePorts->at(index).get(), creationContext,
2478 m_reader.getScriptState()->isolate()); 2478 m_reader.getScriptState()->isolate());
2479 return !object->IsEmpty(); 2479 return !object->IsEmpty();
2480 } 2480 }
2481 2481
2482 bool ScriptValueDeserializer::tryGetTransferredArrayBuffer( 2482 bool ScriptValueDeserializer::tryGetTransferredArrayBuffer(
2483 uint32_t index, 2483 uint32_t index,
2484 v8::Local<v8::Value>* object) { 2484 v8::Local<v8::Value>* object) {
2485 if (!m_arrayBufferContents) 2485 if (!m_arrayBufferContents)
2486 return false; 2486 return false;
2487 if (index >= m_arrayBuffers.size()) 2487 if (index >= m_arrayBuffers.size())
2488 return false; 2488 return false;
2489 v8::Local<v8::Value> result = m_arrayBuffers.at(index); 2489 v8::Local<v8::Value> result = m_arrayBuffers.at(index);
2490 if (result.IsEmpty()) { 2490 if (result.IsEmpty()) {
2491 DOMArrayBuffer* buffer = 2491 DOMArrayBuffer* buffer =
2492 DOMArrayBuffer::create(m_arrayBufferContents->at(index)); 2492 DOMArrayBuffer::create(m_arrayBufferContents->at(index));
2493 v8::Isolate* isolate = m_reader.getScriptState()->isolate(); 2493 v8::Isolate* isolate = m_reader.getScriptState()->isolate();
2494 v8::Local<v8::Object> creationContext = 2494 v8::Local<v8::Object> creationContext =
2495 m_reader.getScriptState()->context()->Global(); 2495 m_reader.getScriptState()->context()->Global();
2496 result = toV8(buffer, creationContext, isolate); 2496 result = ToV8(buffer, creationContext, isolate);
2497 if (result.IsEmpty()) 2497 if (result.IsEmpty())
2498 return false; 2498 return false;
2499 m_arrayBuffers[index] = result; 2499 m_arrayBuffers[index] = result;
2500 } 2500 }
2501 *object = result; 2501 *object = result;
2502 return true; 2502 return true;
2503 } 2503 }
2504 2504
2505 bool ScriptValueDeserializer::tryGetTransferredImageBitmap( 2505 bool ScriptValueDeserializer::tryGetTransferredImageBitmap(
2506 uint32_t index, 2506 uint32_t index,
2507 v8::Local<v8::Value>* object) { 2507 v8::Local<v8::Value>* object) {
2508 if (!m_imageBitmapContents) 2508 if (!m_imageBitmapContents)
2509 return false; 2509 return false;
2510 if (index >= m_imageBitmaps.size()) 2510 if (index >= m_imageBitmaps.size())
2511 return false; 2511 return false;
2512 v8::Local<v8::Value> result = m_imageBitmaps.at(index); 2512 v8::Local<v8::Value> result = m_imageBitmaps.at(index);
2513 if (result.IsEmpty()) { 2513 if (result.IsEmpty()) {
2514 ImageBitmap* bitmap = ImageBitmap::create(m_imageBitmapContents->at(index)); 2514 ImageBitmap* bitmap = ImageBitmap::create(m_imageBitmapContents->at(index));
2515 v8::Isolate* isolate = m_reader.getScriptState()->isolate(); 2515 v8::Isolate* isolate = m_reader.getScriptState()->isolate();
2516 v8::Local<v8::Object> creationContext = 2516 v8::Local<v8::Object> creationContext =
2517 m_reader.getScriptState()->context()->Global(); 2517 m_reader.getScriptState()->context()->Global();
2518 result = toV8(bitmap, creationContext, isolate); 2518 result = ToV8(bitmap, creationContext, isolate);
2519 if (result.IsEmpty()) 2519 if (result.IsEmpty())
2520 return false; 2520 return false;
2521 m_imageBitmaps[index] = result; 2521 m_imageBitmaps[index] = result;
2522 } 2522 }
2523 *object = result; 2523 *object = result;
2524 return true; 2524 return true;
2525 } 2525 }
2526 2526
2527 bool ScriptValueDeserializer::tryGetTransferredSharedArrayBuffer( 2527 bool ScriptValueDeserializer::tryGetTransferredSharedArrayBuffer(
2528 uint32_t index, 2528 uint32_t index,
2529 v8::Local<v8::Value>* object) { 2529 v8::Local<v8::Value>* object) {
2530 ASSERT(RuntimeEnabledFeatures::sharedArrayBufferEnabled()); 2530 ASSERT(RuntimeEnabledFeatures::sharedArrayBufferEnabled());
2531 if (!m_arrayBufferContents) 2531 if (!m_arrayBufferContents)
2532 return false; 2532 return false;
2533 if (index >= m_arrayBuffers.size()) 2533 if (index >= m_arrayBuffers.size())
2534 return false; 2534 return false;
2535 v8::Local<v8::Value> result = m_arrayBuffers.at(index); 2535 v8::Local<v8::Value> result = m_arrayBuffers.at(index);
2536 if (result.IsEmpty()) { 2536 if (result.IsEmpty()) {
2537 DOMSharedArrayBuffer* buffer = 2537 DOMSharedArrayBuffer* buffer =
2538 DOMSharedArrayBuffer::create(m_arrayBufferContents->at(index)); 2538 DOMSharedArrayBuffer::create(m_arrayBufferContents->at(index));
2539 v8::Isolate* isolate = m_reader.getScriptState()->isolate(); 2539 v8::Isolate* isolate = m_reader.getScriptState()->isolate();
2540 v8::Local<v8::Object> creationContext = 2540 v8::Local<v8::Object> creationContext =
2541 m_reader.getScriptState()->context()->Global(); 2541 m_reader.getScriptState()->context()->Global();
2542 result = toV8(buffer, creationContext, isolate); 2542 result = ToV8(buffer, creationContext, isolate);
2543 if (result.IsEmpty()) 2543 if (result.IsEmpty())
2544 return false; 2544 return false;
2545 m_arrayBuffers[index] = result; 2545 m_arrayBuffers[index] = result;
2546 } 2546 }
2547 *object = result; 2547 *object = result;
2548 return true; 2548 return true;
2549 } 2549 }
2550 2550
2551 bool ScriptValueDeserializer::tryGetTransferredOffscreenCanvas( 2551 bool ScriptValueDeserializer::tryGetTransferredOffscreenCanvas(
2552 uint32_t width, 2552 uint32_t width,
2553 uint32_t height, 2553 uint32_t height,
2554 uint32_t canvasId, 2554 uint32_t canvasId,
2555 uint32_t clientId, 2555 uint32_t clientId,
2556 uint32_t sinkId, 2556 uint32_t sinkId,
2557 v8::Local<v8::Value>* object) { 2557 v8::Local<v8::Value>* object) {
2558 OffscreenCanvas* offscreenCanvas = OffscreenCanvas::create(width, height); 2558 OffscreenCanvas* offscreenCanvas = OffscreenCanvas::create(width, height);
2559 offscreenCanvas->setPlaceholderCanvasId(canvasId); 2559 offscreenCanvas->setPlaceholderCanvasId(canvasId);
2560 offscreenCanvas->setFrameSinkId(clientId, sinkId); 2560 offscreenCanvas->setFrameSinkId(clientId, sinkId);
2561 *object = toV8(offscreenCanvas, m_reader.getScriptState()); 2561 *object = ToV8(offscreenCanvas, m_reader.getScriptState());
2562 if ((*object).IsEmpty()) 2562 if ((*object).IsEmpty())
2563 return false; 2563 return false;
2564 return true; 2564 return true;
2565 } 2565 }
2566 2566
2567 bool ScriptValueDeserializer::tryGetObjectFromObjectReference( 2567 bool ScriptValueDeserializer::tryGetObjectFromObjectReference(
2568 uint32_t reference, 2568 uint32_t reference,
2569 v8::Local<v8::Value>* object) { 2569 v8::Local<v8::Value>* object) {
2570 if (reference >= m_objectPool.size()) 2570 if (reference >= m_objectPool.size())
2571 return false; 2571 return false;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2636 m_openCompositeReferenceStack[m_openCompositeReferenceStack.size() - 1]; 2636 m_openCompositeReferenceStack[m_openCompositeReferenceStack.size() - 1];
2637 m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() - 2637 m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() -
2638 1); 2638 1);
2639 if (objectReference >= m_objectPool.size()) 2639 if (objectReference >= m_objectPool.size())
2640 return false; 2640 return false;
2641 *object = m_objectPool[objectReference]; 2641 *object = m_objectPool[objectReference];
2642 return true; 2642 return true;
2643 } 2643 }
2644 2644
2645 } // namespace blink 2645 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/core/v8/ScriptState.h ('k') | third_party/WebKit/Source/bindings/core/v8/ScriptWrappable.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698