Index: test/unittests/value-serializer-unittest.cc |
diff --git a/test/unittests/value-serializer-unittest.cc b/test/unittests/value-serializer-unittest.cc |
index 2db9776683ea0f53d96e42dc20fcc51ec235a533..aba4c3195f902a3487b42c18d7cf8a01737f94bf 100644 |
--- a/test/unittests/value-serializer-unittest.cc |
+++ b/test/unittests/value-serializer-unittest.cc |
@@ -47,19 +47,13 @@ class ValueSerializerTest : public TestWithIsolate { |
} |
Maybe<std::vector<uint8_t>> DoEncode(Local<Value> value) { |
- // This approximates what the API implementation would do. |
- // TODO(jbroman): Use the public API once it exists. |
- i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate()); |
- i::HandleScope handle_scope(internal_isolate); |
- i::ValueSerializer serializer(internal_isolate); |
+ Local<Context> context = serialization_context(); |
+ ValueSerializer serializer(isolate()); |
serializer.WriteHeader(); |
- if (serializer.WriteObject(Utils::OpenHandle(*value)).FromMaybe(false)) { |
- return Just(serializer.ReleaseBuffer()); |
+ if (!serializer.WriteValue(context, value).FromMaybe(false)) { |
+ return Nothing<std::vector<uint8_t>>(); |
} |
- if (internal_isolate->has_pending_exception()) { |
- internal_isolate->OptionalRescheduleException(true); |
- } |
- return Nothing<std::vector<uint8_t>>(); |
+ return Just(serializer.ReleaseBuffer()); |
} |
template <typename InputFunctor, typename EncodedDataFunctor> |
@@ -90,24 +84,21 @@ class ValueSerializerTest : public TestWithIsolate { |
template <typename OutputFunctor> |
void DecodeTest(const std::vector<uint8_t>& data, |
const OutputFunctor& output_functor) { |
- Context::Scope scope(deserialization_context()); |
+ Local<Context> context = deserialization_context(); |
+ Context::Scope scope(context); |
TryCatch try_catch(isolate()); |
- // TODO(jbroman): Use the public API once it exists. |
- i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate()); |
- i::HandleScope handle_scope(internal_isolate); |
- i::ValueDeserializer deserializer( |
- internal_isolate, |
- i::Vector<const uint8_t>(&data[0], static_cast<int>(data.size()))); |
+ ValueDeserializer deserializer(isolate(), &data[0], |
+ static_cast<int>(data.size())); |
+ deserializer.SetSupportsLegacyWireFormat(true); |
ASSERT_TRUE(deserializer.ReadHeader().FromMaybe(false)); |
Local<Value> result; |
- ASSERT_TRUE(ToLocal<Value>(deserializer.ReadObject(), &result)); |
+ ASSERT_TRUE(deserializer.ReadValue(context).ToLocal(&result)); |
ASSERT_FALSE(result.IsEmpty()); |
ASSERT_FALSE(try_catch.HasCaught()); |
- ASSERT_TRUE(deserialization_context() |
- ->Global() |
- ->CreateDataProperty(deserialization_context_, |
- StringFromUtf8("result"), result) |
- .FromMaybe(false)); |
+ ASSERT_TRUE( |
+ context->Global() |
+ ->CreateDataProperty(context, StringFromUtf8("result"), result) |
+ .FromMaybe(false)); |
output_functor(result); |
ASSERT_FALSE(try_catch.HasCaught()); |
} |
@@ -115,43 +106,37 @@ class ValueSerializerTest : public TestWithIsolate { |
template <typename OutputFunctor> |
void DecodeTestForVersion0(const std::vector<uint8_t>& data, |
const OutputFunctor& output_functor) { |
- Context::Scope scope(deserialization_context()); |
+ Local<Context> context = deserialization_context(); |
+ Context::Scope scope(context); |
TryCatch try_catch(isolate()); |
- // TODO(jbroman): Use the public API once it exists. |
- i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate()); |
- i::HandleScope handle_scope(internal_isolate); |
- i::ValueDeserializer deserializer( |
- internal_isolate, |
- i::Vector<const uint8_t>(&data[0], static_cast<int>(data.size()))); |
- // TODO(jbroman): Enable legacy support. |
+ ValueDeserializer deserializer(isolate(), &data[0], |
+ static_cast<int>(data.size())); |
+ deserializer.SetSupportsLegacyWireFormat(true); |
ASSERT_TRUE(deserializer.ReadHeader().FromMaybe(false)); |
- // TODO(jbroman): Check version 0. |
+ ASSERT_EQ(0, deserializer.GetWireFormatVersion()); |
Local<Value> result; |
- ASSERT_TRUE(ToLocal<Value>( |
- deserializer.ReadObjectUsingEntireBufferForLegacyFormat(), &result)); |
+ ASSERT_TRUE(deserializer.ReadValue(context).ToLocal(&result)); |
ASSERT_FALSE(result.IsEmpty()); |
ASSERT_FALSE(try_catch.HasCaught()); |
- ASSERT_TRUE(deserialization_context() |
- ->Global() |
- ->CreateDataProperty(deserialization_context_, |
- StringFromUtf8("result"), result) |
- .FromMaybe(false)); |
+ ASSERT_TRUE( |
+ context->Global() |
+ ->CreateDataProperty(context, StringFromUtf8("result"), result) |
+ .FromMaybe(false)); |
output_functor(result); |
ASSERT_FALSE(try_catch.HasCaught()); |
} |
void InvalidDecodeTest(const std::vector<uint8_t>& data) { |
- Context::Scope scope(deserialization_context()); |
+ Local<Context> context = deserialization_context(); |
+ Context::Scope scope(context); |
TryCatch try_catch(isolate()); |
- i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate()); |
- i::HandleScope handle_scope(internal_isolate); |
- i::ValueDeserializer deserializer( |
- internal_isolate, |
- i::Vector<const uint8_t>(&data[0], static_cast<int>(data.size()))); |
+ ValueDeserializer deserializer(isolate(), &data[0], |
+ static_cast<int>(data.size())); |
+ deserializer.SetSupportsLegacyWireFormat(true); |
Maybe<bool> header_result = deserializer.ReadHeader(); |
if (header_result.IsNothing()) return; |
ASSERT_TRUE(header_result.ToChecked()); |
- ASSERT_TRUE(deserializer.ReadObject().is_null()); |
+ ASSERT_TRUE(deserializer.ReadValue(context).IsEmpty()); |
} |
Local<Value> EvaluateScriptForInput(const char* utf8_source) { |