OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 1712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1723 memcpy(pixelArray->data(), m_buffer + m_position, pixelDataLength); | 1723 memcpy(pixelArray->data(), m_buffer + m_position, pixelDataLength); |
1724 m_position += pixelDataLength; | 1724 m_position += pixelDataLength; |
1725 *value = toV8(imageData.release(), v8::Handle<v8::Object>(), m_isolate); | 1725 *value = toV8(imageData.release(), v8::Handle<v8::Object>(), m_isolate); |
1726 return true; | 1726 return true; |
1727 } | 1727 } |
1728 | 1728 |
1729 PassRefPtr<ArrayBuffer> doReadArrayBuffer() | 1729 PassRefPtr<ArrayBuffer> doReadArrayBuffer() |
1730 { | 1730 { |
1731 uint32_t byteLength; | 1731 uint32_t byteLength; |
1732 if (!doReadUint32(&byteLength)) | 1732 if (!doReadUint32(&byteLength)) |
1733 return 0; | 1733 return nullptr; |
1734 if (m_position + byteLength > m_length) | 1734 if (m_position + byteLength > m_length) |
1735 return 0; | 1735 return nullptr; |
1736 const void* bufferStart = m_buffer + m_position; | 1736 const void* bufferStart = m_buffer + m_position; |
1737 RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(bufferStart, byteL
ength); | 1737 RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(bufferStart, byteL
ength); |
1738 arrayBuffer->setDeallocationObserver(V8ArrayBufferDeallocationObserver::
instanceTemplate()); | 1738 arrayBuffer->setDeallocationObserver(V8ArrayBufferDeallocationObserver::
instanceTemplate()); |
1739 m_position += byteLength; | 1739 m_position += byteLength; |
1740 return arrayBuffer.release(); | 1740 return arrayBuffer.release(); |
1741 } | 1741 } |
1742 | 1742 |
1743 bool readArrayBuffer(v8::Handle<v8::Value>* value) | 1743 bool readArrayBuffer(v8::Handle<v8::Value>* value) |
1744 { | 1744 { |
1745 RefPtr<ArrayBuffer> arrayBuffer = doReadArrayBuffer(); | 1745 RefPtr<ArrayBuffer> arrayBuffer = doReadArrayBuffer(); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1902 return false; | 1902 return false; |
1903 fileList->append(file.release()); | 1903 fileList->append(file.release()); |
1904 } | 1904 } |
1905 *value = toV8(fileList.release(), v8::Handle<v8::Object>(), m_isolate); | 1905 *value = toV8(fileList.release(), v8::Handle<v8::Object>(), m_isolate); |
1906 return true; | 1906 return true; |
1907 } | 1907 } |
1908 | 1908 |
1909 PassRefPtr<File> doReadFileHelper() | 1909 PassRefPtr<File> doReadFileHelper() |
1910 { | 1910 { |
1911 if (m_version < 3) | 1911 if (m_version < 3) |
1912 return 0; | 1912 return nullptr; |
1913 String path; | 1913 String path; |
1914 String name; | 1914 String name; |
1915 String relativePath; | 1915 String relativePath; |
1916 String uuid; | 1916 String uuid; |
1917 String type; | 1917 String type; |
1918 uint32_t hasSnapshot = 0; | 1918 uint32_t hasSnapshot = 0; |
1919 uint64_t size = 0; | 1919 uint64_t size = 0; |
1920 double lastModified = 0; | 1920 double lastModified = 0; |
1921 if (!readWebCoreString(&path)) | 1921 if (!readWebCoreString(&path)) |
1922 return 0; | 1922 return nullptr; |
1923 if (m_version >= 4 && !readWebCoreString(&name)) | 1923 if (m_version >= 4 && !readWebCoreString(&name)) |
1924 return 0; | 1924 return nullptr; |
1925 if (m_version >= 4 && !readWebCoreString(&relativePath)) | 1925 if (m_version >= 4 && !readWebCoreString(&relativePath)) |
1926 return 0; | 1926 return nullptr; |
1927 if (!readWebCoreString(&uuid)) | 1927 if (!readWebCoreString(&uuid)) |
1928 return 0; | 1928 return nullptr; |
1929 if (!readWebCoreString(&type)) | 1929 if (!readWebCoreString(&type)) |
1930 return 0; | 1930 return nullptr; |
1931 if (m_version >= 4 && !doReadUint32(&hasSnapshot)) | 1931 if (m_version >= 4 && !doReadUint32(&hasSnapshot)) |
1932 return 0; | 1932 return nullptr; |
1933 if (hasSnapshot) { | 1933 if (hasSnapshot) { |
1934 if (!doReadUint64(&size)) | 1934 if (!doReadUint64(&size)) |
1935 return 0; | 1935 return nullptr; |
1936 if (!doReadNumber(&lastModified)) | 1936 if (!doReadNumber(&lastModified)) |
1937 return 0; | 1937 return nullptr; |
1938 } | 1938 } |
1939 return File::create(path, name, relativePath, hasSnapshot > 0, size, las
tModified, getOrCreateBlobDataHandle(uuid, type)); | 1939 return File::create(path, name, relativePath, hasSnapshot > 0, size, las
tModified, getOrCreateBlobDataHandle(uuid, type)); |
1940 } | 1940 } |
1941 | 1941 |
1942 template<class T> | 1942 template<class T> |
1943 bool doReadUintHelper(T* value) | 1943 bool doReadUintHelper(T* value) |
1944 { | 1944 { |
1945 *value = 0; | 1945 *value = 0; |
1946 uint8_t currentByte; | 1946 uint8_t currentByte; |
1947 int shift = 0; | 1947 int shift = 0; |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2452 // If the allocated memory was not registered before, then this class is lik
ely | 2452 // If the allocated memory was not registered before, then this class is lik
ely |
2453 // used in a context other then Worker's onmessage environment and the prese
nce of | 2453 // used in a context other then Worker's onmessage environment and the prese
nce of |
2454 // current v8 context is not guaranteed. Avoid calling v8 then. | 2454 // current v8 context is not guaranteed. Avoid calling v8 then. |
2455 if (m_externallyAllocatedMemory) { | 2455 if (m_externallyAllocatedMemory) { |
2456 ASSERT(v8::Isolate::GetCurrent()); | 2456 ASSERT(v8::Isolate::GetCurrent()); |
2457 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_exte
rnallyAllocatedMemory); | 2457 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_exte
rnallyAllocatedMemory); |
2458 } | 2458 } |
2459 } | 2459 } |
2460 | 2460 |
2461 } // namespace WebCore | 2461 } // namespace WebCore |
OLD | NEW |