diff options
Diffstat (limited to 'content/handlers/javascript')
-rw-r--r-- | content/handlers/javascript/duktape/Document.bnd | 17 | ||||
-rw-r--r-- | content/handlers/javascript/duktape/dukky.c | 2 | ||||
-rw-r--r-- | content/handlers/javascript/duktape/dukky.h | 1 |
3 files changed, 19 insertions, 1 deletions
diff --git a/content/handlers/javascript/duktape/Document.bnd b/content/handlers/javascript/duktape/Document.bnd index f94a4e43c..23e0425e2 100644 --- a/content/handlers/javascript/duktape/Document.bnd +++ b/content/handlers/javascript/duktape/Document.bnd @@ -320,6 +320,23 @@ getter Document::cookie() return 0; %} +method Document::createEvent () +%{ + /* Create a new event, mark it untrusted since it's new from JS */ + dom_event *evt = NULL; + dom_exception exc; + + exc = dom_event_create(&evt); + if (exc != DOM_NO_ERR) return 0; + exc = dom_event_set_is_trusted(evt, false); + if (exc != DOM_NO_ERR) { dom_event_unref(evt); return 0; } + + dukky_push_event(ctx, evt); + + dom_event_unref(evt); + return 1; +%} + getter Document::onabort(); setter Document::onabort(); getter Document::onautocompleteerror(); diff --git a/content/handlers/javascript/duktape/dukky.c b/content/handlers/javascript/duktape/dukky.c index 750d14b64..5b3c12b95 100644 --- a/content/handlers/javascript/duktape/dukky.c +++ b/content/handlers/javascript/duktape/dukky.c @@ -736,7 +736,7 @@ handle_error: /*** New style event handling ***/ -static void dukky_push_event(duk_context *ctx, dom_event *evt) +void dukky_push_event(duk_context *ctx, dom_event *evt) { /* ... */ duk_get_global_string(ctx, EVENT_MAGIC); diff --git a/content/handlers/javascript/duktape/dukky.h b/content/handlers/javascript/duktape/dukky.h index 7e8a7867c..ee9f47409 100644 --- a/content/handlers/javascript/duktape/dukky.h +++ b/content/handlers/javascript/duktape/dukky.h @@ -36,6 +36,7 @@ void dukky_register_event_listener_for(duk_context *ctx, bool dukky_get_current_value_of_event_handler(duk_context *ctx, dom_string *name, dom_event_target *et); +void dukky_push_event(duk_context *ctx, dom_event *evt); bool dukky_event_target_push_listeners(duk_context *ctx, bool dont_create); typedef enum { |