| 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) {
 | 
| 
 |