summaryrefslogtreecommitdiff
path: root/src/js_native_api_v8.cc
diff options
context:
space:
mode:
authorJarrod Connolly <jarrod@nestedquotes.ca>2019-02-03 23:26:33 -0800
committerMichael Dawson <michael_dawson@ca.ibm.com>2019-02-28 17:43:37 -0500
commit13b1aafe8710f5df733fd42bed8b1e1321160505 (patch)
treebf7018fdf0eb8e6509f22faf0b163089f669ba7e /src/js_native_api_v8.cc
parent3f31c884ff112dd7c2a184d87e6ebbc75906ea7c (diff)
downloadandroid-node-v8-13b1aafe8710f5df733fd42bed8b1e1321160505.tar.gz
android-node-v8-13b1aafe8710f5df733fd42bed8b1e1321160505.tar.bz2
android-node-v8-13b1aafe8710f5df733fd42bed8b1e1321160505.zip
n-api: implement date object
Implements `napi_create_date()` as well as `napi_is_date()` to allow working with JavaScript Date objects. PR-URL: https://github.com/nodejs/node/pull/25917 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/js_native_api_v8.cc')
-rw-r--r--src/js_native_api_v8.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc
index fd3ed2af6a..022ce104eb 100644
--- a/src/js_native_api_v8.cc
+++ b/src/js_native_api_v8.cc
@@ -2887,6 +2887,48 @@ napi_status napi_is_promise(napi_env env,
return napi_clear_last_error(env);
}
+napi_status napi_create_date(napi_env env,
+ double time,
+ napi_value* result) {
+ NAPI_PREAMBLE(env);
+ CHECK_ARG(env, result);
+
+ v8::MaybeLocal<v8::Value> maybe_date = v8::Date::New(env->context(), time);
+ CHECK_MAYBE_EMPTY(env, maybe_date, napi_generic_failure);
+
+ *result = v8impl::JsValueFromV8LocalValue(maybe_date.ToLocalChecked());
+
+ return GET_RETURN_STATUS(env);
+}
+
+napi_status napi_is_date(napi_env env,
+ napi_value value,
+ bool* is_date) {
+ CHECK_ENV(env);
+ CHECK_ARG(env, value);
+ CHECK_ARG(env, is_date);
+
+ *is_date = v8impl::V8LocalValueFromJsValue(value)->IsDate();
+
+ return napi_clear_last_error(env);
+}
+
+napi_status napi_get_date_value(napi_env env,
+ napi_value value,
+ double* result) {
+ NAPI_PREAMBLE(env);
+ CHECK_ARG(env, value);
+ CHECK_ARG(env, result);
+
+ v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue(value);
+ RETURN_STATUS_IF_FALSE(env, val->IsDate(), napi_date_expected);
+
+ v8::Local<v8::Date> date = val.As<v8::Date>();
+ *result = date->ValueOf();
+
+ return GET_RETURN_STATUS(env);
+}
+
napi_status napi_run_script(napi_env env,
napi_value script,
napi_value* result) {