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 |