value_converter.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright (c) 2014 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #include "atom/common/native_mate_converters/value_converter.h"
  5. #include "atom/common/native_mate_converters/v8_value_converter.h"
  6. #include "base/values.h"
  7. namespace mate {
  8. bool Converter<base::DictionaryValue>::FromV8(v8::Isolate* isolate,
  9. v8::Local<v8::Value> val,
  10. base::DictionaryValue* out) {
  11. atom::V8ValueConverter converter;
  12. std::unique_ptr<base::Value> value(
  13. converter.FromV8Value(val, isolate->GetCurrentContext()));
  14. if (value && value->IsType(base::Value::Type::DICTIONARY)) {
  15. out->Swap(static_cast<base::DictionaryValue*>(value.get()));
  16. return true;
  17. } else {
  18. return false;
  19. }
  20. }
  21. v8::Local<v8::Value> Converter<base::DictionaryValue>::ToV8(
  22. v8::Isolate* isolate,
  23. const base::DictionaryValue& val) {
  24. atom::V8ValueConverter converter;
  25. return converter.ToV8Value(&val, isolate->GetCurrentContext());
  26. }
  27. bool Converter<base::ListValue>::FromV8(v8::Isolate* isolate,
  28. v8::Local<v8::Value> val,
  29. base::ListValue* out) {
  30. atom::V8ValueConverter converter;
  31. std::unique_ptr<base::Value> value(
  32. converter.FromV8Value(val, isolate->GetCurrentContext()));
  33. if (value->IsType(base::Value::Type::LIST)) {
  34. out->Swap(static_cast<base::ListValue*>(value.get()));
  35. return true;
  36. } else {
  37. return false;
  38. }
  39. }
  40. v8::Local<v8::Value> Converter<base::ListValue>::ToV8(
  41. v8::Isolate* isolate,
  42. const base::ListValue& val) {
  43. atom::V8ValueConverter converter;
  44. return converter.ToV8Value(&val, isolate->GetCurrentContext());
  45. }
  46. } // namespace mate