| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/V8ObjectBuilder.h" | 5 #include "bindings/core/v8/V8ObjectBuilder.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/V8Binding.h" | 7 #include "bindings/core/v8/V8Binding.h" |
| 8 | 8 |
| 9 namespace blink { | 9 namespace blink { |
| 10 | 10 |
| 11 V8ObjectBuilder::V8ObjectBuilder(ScriptState* scriptState) | 11 V8ObjectBuilder::V8ObjectBuilder(ScriptState* scriptState) |
| 12 : m_scriptState(scriptState), | 12 : m_scriptState(scriptState), |
| 13 m_object(v8::Object::New(scriptState->isolate())) {} | 13 m_object(v8::Object::New(scriptState->isolate())) {} |
| 14 | 14 |
| 15 V8ObjectBuilder& V8ObjectBuilder::add(const String& name, | 15 V8ObjectBuilder& V8ObjectBuilder::add(const StringView& name, |
| 16 const V8ObjectBuilder& value) { | 16 const V8ObjectBuilder& value) { |
| 17 addInternal(name, value.v8Value()); | 17 addInternal(name, value.v8Value()); |
| 18 return *this; | 18 return *this; |
| 19 } | 19 } |
| 20 | 20 |
| 21 V8ObjectBuilder& V8ObjectBuilder::addNull(const String& name) { | 21 V8ObjectBuilder& V8ObjectBuilder::addNull(const StringView& name) { |
| 22 addInternal(name, v8::Null(m_scriptState->isolate())); | 22 addInternal(name, v8::Null(m_scriptState->isolate())); |
| 23 return *this; | 23 return *this; |
| 24 } | 24 } |
| 25 | 25 |
| 26 V8ObjectBuilder& V8ObjectBuilder::addBoolean(const String& name, bool value) { | 26 V8ObjectBuilder& V8ObjectBuilder::addBoolean(const StringView& name, |
| 27 bool value) { |
| 27 addInternal(name, value ? v8::True(m_scriptState->isolate()) | 28 addInternal(name, value ? v8::True(m_scriptState->isolate()) |
| 28 : v8::False(m_scriptState->isolate())); | 29 : v8::False(m_scriptState->isolate())); |
| 29 return *this; | 30 return *this; |
| 30 } | 31 } |
| 31 | 32 |
| 32 V8ObjectBuilder& V8ObjectBuilder::addNumber(const String& name, double value) { | 33 V8ObjectBuilder& V8ObjectBuilder::addNumber(const StringView& name, |
| 34 double value) { |
| 33 addInternal(name, v8::Number::New(m_scriptState->isolate(), value)); | 35 addInternal(name, v8::Number::New(m_scriptState->isolate(), value)); |
| 34 return *this; | 36 return *this; |
| 35 } | 37 } |
| 36 | 38 |
| 37 V8ObjectBuilder& V8ObjectBuilder::addString(const String& name, | 39 V8ObjectBuilder& V8ObjectBuilder::addString(const StringView& name, |
| 38 const String& value) { | 40 const StringView& value) { |
| 39 addInternal(name, v8String(m_scriptState->isolate(), value)); | 41 addInternal(name, v8String(m_scriptState->isolate(), value)); |
| 40 return *this; | 42 return *this; |
| 41 } | 43 } |
| 42 | 44 |
| 45 V8ObjectBuilder& V8ObjectBuilder::addStringOrNull(const StringView& name, |
| 46 const StringView& value) { |
| 47 if (value.isNull()) { |
| 48 addInternal(name, v8::Null(m_scriptState->isolate())); |
| 49 } else { |
| 50 addInternal(name, v8String(m_scriptState->isolate(), value)); |
| 51 } |
| 52 return *this; |
| 53 } |
| 54 |
| 43 ScriptValue V8ObjectBuilder::scriptValue() const { | 55 ScriptValue V8ObjectBuilder::scriptValue() const { |
| 44 return ScriptValue(m_scriptState.get(), m_object); | 56 return ScriptValue(m_scriptState.get(), m_object); |
| 45 } | 57 } |
| 46 | 58 |
| 47 void V8ObjectBuilder::addInternal(const String& name, | 59 void V8ObjectBuilder::addInternal(const StringView& name, |
| 48 v8::Local<v8::Value> value) { | 60 v8::Local<v8::Value> value) { |
| 49 if (m_object.IsEmpty()) | 61 if (m_object.IsEmpty()) |
| 50 return; | 62 return; |
| 51 if (value.IsEmpty() || | 63 if (value.IsEmpty() || |
| 52 m_object | 64 m_object |
| 53 ->CreateDataProperty(m_scriptState->context(), | 65 ->CreateDataProperty(m_scriptState->context(), |
| 54 v8String(m_scriptState->isolate(), name), value) | 66 v8String(m_scriptState->isolate(), name), value) |
| 55 .IsNothing()) | 67 .IsNothing()) |
| 56 m_object.Clear(); | 68 m_object.Clear(); |
| 57 } | 69 } |
| 58 | 70 |
| 59 } // namespace blink | 71 } // namespace blink |
| OLD | NEW |