diff --git a/src/node_api.cc b/src/node_api.cc index 681c4e0bbc4a6f..6068418ff1b0ac 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -25,6 +25,22 @@ napi_env JsEnvFromV8Isolate(v8::Isolate* isolate) { return reinterpret_cast(isolate); } +// convert from n-api property attributes to v8::PropertyAttribute +v8::PropertyAttribute V8PropertyAttributesFromAttributes( + napi_property_attributes attributes) { + unsigned int attribute_flags = v8::None; + if (attributes & napi_read_only) { + attribute_flags |= v8::ReadOnly; + } + if (attributes & napi_dont_enum) { + attribute_flags |= v8::DontEnum; + } + if (attributes & napi_dont_delete) { + attribute_flags |= v8::DontDelete; + } + return static_cast(attribute_flags); +} + v8::Isolate* V8IsolateFromJsEnv(napi_env e) { return reinterpret_cast(e); } @@ -740,20 +756,8 @@ napi_status napi_define_class(napi_env env, v8::Local property_name; CHECK_NEW_FROM_UTF8(isolate, property_name, p->utf8name); - - // convert the properties from NAPI to v8 format - unsigned int attribute_flags = v8::None; - if ((p->attributes & napi_read_only)) { - attribute_flags |= v8::ReadOnly; - } - if ((p->attributes & napi_dont_enum)) { - attribute_flags |= v8::DontEnum; - } - if ((p->attributes & napi_dont_delete)) { - attribute_flags |= v8::DontDelete; - } v8::PropertyAttribute attributes = - static_cast(attribute_flags); + v8impl::V8PropertyAttributesFromAttributes(p->attributes); // This code is similar to that in napi_define_property(); the // difference is it applies to a template instead of an object. @@ -1062,8 +1066,9 @@ napi_status napi_define_properties(napi_env env, v8::Local name; CHECK_NEW_FROM_UTF8(isolate, name, p->utf8name); - v8::PropertyAttribute attributes = static_cast( - p->attributes & ~napi_static_property); + v8::PropertyAttribute attributes = + v8impl::V8PropertyAttributesFromAttributes( + (napi_property_attributes)(p->attributes & ~napi_static_property)); if (p->method) { v8::Local cbdata =