Index: gin/converter.h |
diff --git a/gin/converter.h b/gin/converter.h |
index 8d17d41c29fba56bd5bae0a66d895f7cd035d79b..a07ada7effaaf6d6d96bc8b62f6f2f7b9b9a00d6 100644 |
--- a/gin/converter.h |
+++ b/gin/converter.h |
@@ -8,27 +8,12 @@ |
#include <string> |
#include <vector> |
-#include "base/logging.h" |
#include "base/strings/string_piece.h" |
#include "gin/gin_export.h" |
#include "v8/include/v8.h" |
namespace gin { |
-template<typename KeyType> |
-bool SetProperty(v8::Isolate* isolate, |
- v8::Local<v8::Object> object, |
- KeyType key, |
- v8::Local<v8::Value> value) { |
- auto maybe = object->Set(isolate->GetCurrentContext(), key, value); |
- return !maybe.IsNothing() && maybe.FromJust(); |
-} |
- |
-template<typename T> |
-struct ToV8ReturnsMaybe { |
- static const bool value = false; |
-}; |
- |
template<typename T, typename Enable = void> |
struct Converter {}; |
@@ -99,7 +84,6 @@ |
template<> |
struct GIN_EXPORT Converter<base::StringPiece> { |
- // This crashes when val.size() > v8::String::kMaxLength. |
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, |
const base::StringPiece& val); |
// No conversion out is possible because StringPiece does not contain storage. |
@@ -107,7 +91,6 @@ |
template<> |
struct GIN_EXPORT Converter<std::string> { |
- // This crashes when val.size() > v8::String::kMaxLength. |
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, |
const std::string& val); |
static bool FromV8(v8::Isolate* isolate, |
@@ -160,15 +143,12 @@ |
template<typename T> |
struct Converter<std::vector<T> > { |
- static v8::MaybeLocal<v8::Value> ToV8(v8::Local<v8::Context> context, |
- const std::vector<T>& val) { |
- v8::Isolate* isolate = context->GetIsolate(); |
+ static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, |
+ const std::vector<T>& val) { |
v8::Local<v8::Array> result( |
v8::Array::New(isolate, static_cast<int>(val.size()))); |
- for (uint32_t i = 0; i < val.size(); ++i) { |
- auto maybe = result->Set(context, i, Converter<T>::ToV8(isolate, val[i])); |
- if (maybe.IsNothing() || !maybe.FromJust()) |
- return v8::MaybeLocal<v8::Value>(); |
+ for (size_t i = 0; i < val.size(); ++i) { |
+ result->Set(static_cast<int>(i), Converter<T>::ToV8(isolate, val[i])); |
} |
return result; |
} |
@@ -183,11 +163,8 @@ |
v8::Local<v8::Array> array(v8::Local<v8::Array>::Cast(val)); |
uint32_t length = array->Length(); |
for (uint32_t i = 0; i < length; ++i) { |
- v8::Local<v8::Value> v8_item; |
- if (!array->Get(isolate->GetCurrentContext(), i).ToLocal(&v8_item)) |
- return false; |
T item; |
- if (!Converter<T>::FromV8(isolate, v8_item, &item)) |
+ if (!Converter<T>::FromV8(isolate, array->Get(i), &item)) |
return false; |
result.push_back(item); |
} |
@@ -195,11 +172,6 @@ |
out->swap(result); |
return true; |
} |
-}; |
- |
-template<typename T> |
-struct ToV8ReturnsMaybe<std::vector<T>> { |
- static const bool value = true; |
}; |
// Convenience functions that deduce T. |
@@ -208,51 +180,12 @@ |
return Converter<T>::ToV8(isolate, input); |
} |
-template<typename T> |
-v8::MaybeLocal<v8::Value> ConvertToV8(v8::Local<v8::Context> context, T input) { |
- return Converter<T>::ToV8(context, input); |
-} |
- |
-template<typename T, bool = ToV8ReturnsMaybe<T>::value> struct ToV8Traits; |
- |
-template <typename T> |
-struct ToV8Traits<T, true> { |
- static bool TryConvertToV8(v8::Isolate* isolate, |
- T input, |
- v8::Local<v8::Value>* output) { |
- auto maybe = ConvertToV8(isolate->GetCurrentContext(), input); |
- if (maybe.IsEmpty()) |
- return false; |
- *output = maybe.ToLocalChecked(); |
- return true; |
- } |
-}; |
- |
-template <typename T> |
-struct ToV8Traits<T, false> { |
- static bool TryConvertToV8(v8::Isolate* isolate, |
- T input, |
- v8::Local<v8::Value>* output) { |
- *output = ConvertToV8(isolate, input); |
- return true; |
- } |
-}; |
- |
-template <typename T> |
-bool TryConvertToV8(v8::Isolate* isolate, |
- T input, |
- v8::Local<v8::Value>* output) { |
- return ToV8Traits<T>::TryConvertToV8(isolate, input, output); |
-} |
- |
-// This crashes when input.size() > v8::String::kMaxLength. |
GIN_EXPORT inline v8::Local<v8::String> StringToV8( |
v8::Isolate* isolate, |
const base::StringPiece& input) { |
return ConvertToV8(isolate, input).As<v8::String>(); |
} |
-// This crashes when input.size() > v8::String::kMaxLength. |
GIN_EXPORT v8::Local<v8::String> StringToSymbol(v8::Isolate* isolate, |
const base::StringPiece& val); |