summaryrefslogtreecommitdiff
path: root/content/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'content/handlers')
-rw-r--r--content/handlers/javascript/duktape/Document.bnd17
-rw-r--r--content/handlers/javascript/duktape/dukky.c2
-rw-r--r--content/handlers/javascript/duktape/dukky.h1
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 {