| Index: test/cctest/test-api-fast-accessor-builder.cc
|
| diff --git a/test/cctest/test-api-fast-accessor-builder.cc b/test/cctest/test-api-fast-accessor-builder.cc
|
| index ce22d9a59c160f01a62952e5ea69f8778d9ce8f9..349331a6b15f4ba56a867d46b50f7494c19da1a2 100644
|
| --- a/test/cctest/test-api-fast-accessor-builder.cc
|
| +++ b/test/cctest/test-api-fast-accessor-builder.cc
|
| @@ -60,8 +60,24 @@ static void NativePropertyAccessor(
|
| info.GetReturnValue().Set(v8_num(123));
|
| }
|
|
|
| +const char* kWatermarkProperty = "watermark";
|
| +
|
| } // anonymous namespace
|
|
|
| +void CheckImplicitParameters(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + v8::Isolate* isolate = info.GetIsolate();
|
| + CHECK_NOT_NULL(isolate);
|
| +
|
| + auto context = isolate->GetCurrentContext();
|
| + CHECK(!context.IsEmpty());
|
| +
|
| + // The context must point to the same isolate, this should be enough to
|
| + // validate the context, mainly to prevent having a random object instead.
|
| + CHECK_EQ(isolate, context->GetIsolate());
|
| + CHECK(info.Data()->IsUndefined());
|
| +
|
| + CHECK(info.Holder()->Has(context, v8_str(kWatermarkProperty)).FromJust());
|
| +}
|
|
|
| // Build a simple "fast accessor" and verify that it is being called.
|
| TEST(FastAccessor) {
|
| @@ -300,16 +316,19 @@ TEST(FastAccessorLoad) {
|
| }
|
|
|
| void ApiCallbackInt(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + CheckImplicitParameters(info);
|
| info.GetReturnValue().Set(12345);
|
| }
|
|
|
| const char* kApiCallbackStringValue =
|
| "Hello World! Bizarro C++ world, actually.";
|
| void ApiCallbackString(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + CheckImplicitParameters(info);
|
| info.GetReturnValue().Set(v8_str(kApiCallbackStringValue));
|
| }
|
|
|
| void ApiCallbackParam(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
| + CheckImplicitParameters(info);
|
| CHECK_EQ(1, info.Length());
|
| CHECK(info[0]->IsNumber());
|
| info.GetReturnValue().Set(info[0]);
|
| @@ -348,6 +367,9 @@ TEST(FastAccessorCallback) {
|
| isolate, NativePropertyAccessor, builder));
|
| }
|
|
|
| + // Add dummy property to validate the holder.
|
| + foo->Set(isolate, kWatermarkProperty, v8::Undefined(isolate));
|
| +
|
| // Create an instance.
|
| v8::Local<v8::Object> obj = foo->NewInstance(env.local()).ToLocalChecked();
|
| CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
|
|
|