Add filters and more events to Promise callback. (#4605)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2021-02-24 10:31:08 +01:00
committed by GitHub
parent f0f2a28109
commit c27047da03
8 changed files with 307 additions and 29 deletions
+54 -2
View File
@@ -908,6 +908,19 @@ Possible values:
- JERRY_PROMISE_EVENT_REJECT - Called when a Promise is about to be rejected.
- object - the Promise object
- value - value for rejecting.
- JERRY_PROMISE_EVENT_RESOLVE_FULFILLED - Called when a resolve is called on a fulfilled Promise.
- object - the Promise object
- value - value for resolving
- JERRY_PROMISE_EVENT_REJECT_FULFILLED - Called when a reject is called on a fulfilled Promise.
- object - the Promise object
- value - value for rejecting
- JERRY_PROMISE_EVENT_REJECT_WITHOUT_HANDLER - Called when a Promise is rejected without a handler.
- object - the Promise object
- value - value for rejecting
- JERRY_PROMISE_EVENT_CATCH_HANDLER_ADDED - Called when a catch handler is added to a rejected
Promise which did not have a catch handler before.
- object - the Promise object
- value - undefined
- JERRY_PROMISE_EVENT_BEFORE_REACTION_JOB - Called before executing a Promise reaction job.
- object - the Promise object
- value - undefined
@@ -938,6 +951,43 @@ Possible values:
- [jerry_promise_set_callback](#jerry_promise_set_callback)
## jerry_promise_event_filter_t
Filter types for [jerry_promise_set_callback](#jerry_promise_set_callback) callback function.
The callback is only called for those events which are enabled by the filters. The events are
described in [jerry_promise_event_type_t](#jerry_promise_event_type_t).
Possible values:
- JERRY_PROMISE_EVENT_FILTER_DISABLE - Disable reporting of all events.
- JERRY_PROMISE_EVENT_FILTER_MAIN - Enables the following events:
- JERRY_PROMISE_EVENT_CREATE
- JERRY_PROMISE_EVENT_RESOLVE
- JERRY_PROMISE_EVENT_REJECT
- JERRY_PROMISE_EVENT_FILTER_ERROR - Enables the following events:
- JERRY_PROMISE_EVENT_RESOLVE_FULFILLED
- JERRY_PROMISE_EVENT_REJECT_FULFILLED
- JERRY_PROMISE_EVENT_REJECT_WITHOUT_HANDLER
- JERRY_PROMISE_EVENT_CATCH_HANDLER_ADDED
- JERRY_PROMISE_EVENT_FILTER_REACTION_JOB - Enables the following events:
- JERRY_PROMISE_EVENT_BEFORE_REACTION_JOB
- JERRY_PROMISE_EVENT_AFTER_REACTION_JOB
- JERRY_PROMISE_EVENT_FILTER_ASYNC_MAIN - Enables the following events:
- JERRY_PROMISE_EVENT_ASYNC_AWAIT
- JERRY_PROMISE_EVENT_FILTER_ASYNC_REACTION_JOB - Enables the following events:
- JERRY_PROMISE_EVENT_ASYNC_BEFORE_RESOLVE
- JERRY_PROMISE_EVENT_ASYNC_BEFORE_REJECT
- JERRY_PROMISE_EVENT_ASYNC_AFTER_RESOLVE
- JERRY_PROMISE_EVENT_ASYNC_AFTER_REJECT
*New in version [[NEXT_RELEASE]]*.
**See also**
- [jerry_promise_event_type_t](#jerry_promise_event_type_t)
- [jerry_promise_set_callback](#jerry_promise_set_callback)
## jerry_promise_callback_t
**Summary**
@@ -4311,9 +4361,11 @@ Sets a callback for tracking Promise and async operations.
**Prototype**
```c
void jerry_promise_set_callback (jerry_promise_callback_t callback, void *user_p);
void jerry_promise_set_callback (jerry_promise_event_filter_t filters, jerry_promise_callback_t callback,
void *user_p);
```
- `filters` - combination of [jerry_promise_event_filter_t](#jerry_promise_event_filter_t) options
- `callback` - callback function, the previously set value is overwritten,
and setting NULL disables the tracking
- `user_p` - pointer passed to the callback function, can be NULL
@@ -4351,7 +4403,7 @@ main (void)
{
jerry_init (JERRY_INIT_EMPTY);
jerry_promise_set_callback (promise_callback, NULL);
jerry_promise_set_callback (JERRY_PROMISE_EVENT_FILTER_MAIN, promise_callback, NULL);
const char *source_p = "var p = Promise.resolve(0)\n"
"p.then(function (v) { return v; })";