| 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 744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 ScriptValueSerializer::Status ScriptValueSerializer::serialize(v8::Local<v8::Val
ue> value) | 755 ScriptValueSerializer::Status ScriptValueSerializer::serialize(v8::Local<v8::Val
ue> value) |
| 756 { | 756 { |
| 757 v8::HandleScope scope(isolate()); | 757 v8::HandleScope scope(isolate()); |
| 758 m_writer.writeVersion(); | 758 m_writer.writeVersion(); |
| 759 StateBase* state = doSerialize(value, 0); | 759 StateBase* state = doSerialize(value, 0); |
| 760 while (state) | 760 while (state) |
| 761 state = state->advance(*this); | 761 state = state->advance(*this); |
| 762 return m_status; | 762 return m_status; |
| 763 } | 763 } |
| 764 | 764 |
| 765 // static |
| 766 String ScriptValueSerializer::serializeWTFString(const String& data) |
| 767 { |
| 768 SerializedScriptValueWriter valueWriter; |
| 769 valueWriter.writeWebCoreString(data); |
| 770 return valueWriter.takeWireString(); |
| 771 } |
| 772 |
| 773 // static |
| 774 String ScriptValueSerializer::serializeNullValue() |
| 775 { |
| 776 SerializedScriptValueWriter valueWriter; |
| 777 valueWriter.writeNull(); |
| 778 return valueWriter.takeWireString(); |
| 779 } |
| 780 |
| 765 ScriptValueSerializer::StateBase* ScriptValueSerializer::doSerialize(v8::Local<v
8::Value> value, ScriptValueSerializer::StateBase* next) | 781 ScriptValueSerializer::StateBase* ScriptValueSerializer::doSerialize(v8::Local<v
8::Value> value, ScriptValueSerializer::StateBase* next) |
| 766 { | 782 { |
| 767 m_writer.writeReferenceCount(m_nextObjectReference); | 783 m_writer.writeReferenceCount(m_nextObjectReference); |
| 768 | 784 |
| 769 if (value.IsEmpty()) | 785 if (value.IsEmpty()) |
| 770 return handleError(InputError, "The empty property cannot be cloned.", n
ext); | 786 return handleError(InputError, "The empty property cannot be cloned.", n
ext); |
| 771 | 787 |
| 772 uint32_t objectReference; | 788 uint32_t objectReference; |
| 773 if ((value->IsObject() || value->IsDate() || value->IsRegExp()) | 789 if ((value->IsObject() || value->IsDate() || value->IsRegExp()) |
| 774 && m_objectPool.tryGet(value.As<v8::Object>(), &objectReference)) { | 790 && m_objectPool.tryGet(value.As<v8::Object>(), &objectReference)) { |
| (...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2380 return false; | 2396 return false; |
| 2381 uint32_t objectReference = m_openCompositeReferenceStack[m_openCompositeRefe
renceStack.size() - 1]; | 2397 uint32_t objectReference = m_openCompositeReferenceStack[m_openCompositeRefe
renceStack.size() - 1]; |
| 2382 m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() -
1); | 2398 m_openCompositeReferenceStack.shrink(m_openCompositeReferenceStack.size() -
1); |
| 2383 if (objectReference >= m_objectPool.size()) | 2399 if (objectReference >= m_objectPool.size()) |
| 2384 return false; | 2400 return false; |
| 2385 *object = m_objectPool[objectReference]; | 2401 *object = m_objectPool[objectReference]; |
| 2386 return true; | 2402 return true; |
| 2387 } | 2403 } |
| 2388 | 2404 |
| 2389 } // namespace blink | 2405 } // namespace blink |
| OLD | NEW |