// Copyright (c) 2014 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef SHELL_COMMON_NATIVE_MATE_CONVERTERS_STRING16_CONVERTER_H_ #define SHELL_COMMON_NATIVE_MATE_CONVERTERS_STRING16_CONVERTER_H_ #include "base/strings/string16.h" #include "gin/converter.h" #include "native_mate/converter.h" namespace gin { template <> struct Converter { static v8::Local ToV8(v8::Isolate* isolate, const base::string16& val) { return v8::String::NewFromTwoByte( isolate, reinterpret_cast(val.data()), v8::NewStringType::kNormal, val.size()) .ToLocalChecked(); } static bool FromV8(v8::Isolate* isolate, v8::Local val, base::string16* out) { if (!val->IsString()) return false; v8::String::Value s(isolate, val); out->assign(reinterpret_cast(*s), s.length()); return true; } }; inline v8::Local StringToV8(v8::Isolate* isolate, const base::string16& input) { return ConvertToV8(isolate, input).As(); } } // namespace gin namespace mate { template <> struct Converter { static v8::Local ToV8(v8::Isolate* isolate, const base::string16& val) { return gin::Converter::ToV8(isolate, val); } static bool FromV8(v8::Isolate* isolate, v8::Local val, base::string16* out) { return gin::Converter::FromV8(isolate, val, out); } }; inline v8::Local StringToV8(v8::Isolate* isolate, const base::string16& input) { return ConvertToV8(isolate, input).As(); } } // namespace mate #endif // SHELL_COMMON_NATIVE_MATE_CONVERTERS_STRING16_CONVERTER_H_