From 82b298ac2c28dcaf7510e97b8a1379b34c8ab15c Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Thu, 21 Jan 2016 14:51:17 +0000 Subject: [PATCH] Ensure we do on-demand JS context creation only when JS is enabled. An alternative approach which may be better would be to create the JavaScript context when the html_content is created, rather than on demand. This code checks for the JS context and creates one every time we add a node to the DOM. So when JS is on, every doc with a single node in it has a JS context. This seems to make on-demand creation a redundant overhead. --- render/html.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/render/html.c b/render/html.c index 6d2421f6e..0c278a74c 100644 --- a/render/html.c +++ b/render/html.c @@ -671,19 +671,22 @@ dom_default_action_DOMNodeInserted_cb(struct dom_event *evt, void *pw) dom_string_unref(name); } - /* ensure javascript context is available */ - if (htmlc->jscontext == NULL) { - union content_msg_data msg_data; + if (htmlc->enable_scripting) { + /* ensure javascript context is available */ + if (htmlc->jscontext == NULL) { + union content_msg_data msg_data; - msg_data.jscontext = &htmlc->jscontext; - content_broadcast(&htmlc->base, - CONTENT_MSG_GETCTX, - msg_data); - LOG("javascript context %p ", htmlc->jscontext); - } - if (htmlc->jscontext != NULL) { - js_handle_new_element(htmlc->jscontext, - (dom_element *) node); + msg_data.jscontext = &htmlc->jscontext; + content_broadcast(&htmlc->base, + CONTENT_MSG_GETCTX, + msg_data); + LOG("javascript context: %p", + htmlc->jscontext); + } + if (htmlc->jscontext != NULL) { + js_handle_new_element(htmlc->jscontext, + (dom_element *) node); + } } } dom_node_unref(node);