add script_timeout option and use it

This commit is contained in:
Vincent Sanders 2013-05-22 18:40:21 +01:00
parent 7f7ff93745
commit af75070bee
2 changed files with 15 additions and 6 deletions

View File

@ -683,12 +683,15 @@ void browser_window_debug_dump(struct browser_window *bw, FILE *f)
content_debug_dump(bw->current_content, f); content_debug_dump(bw->current_content, f);
} }
static bool gui_slow_script(void *ctx) /** slow script handler
*/
static bool slow_script(void *ctx)
{ {
static int count = 0; static int count = 0;
LOG(("Continuing execution %d", count)); LOG(("Continuing execution %d", count));
count++; count++;
if (count >= 2) { if (count > 1) {
count = 0;
return false; return false;
} }
return true; return true;
@ -717,7 +720,9 @@ browser_window_create(enum browser_window_nav_flags flags,
} }
/* new javascript context for window */ /* new javascript context for window */
bw->jsctx = js_newcontext(10, gui_slow_script, NULL); bw->jsctx = js_newcontext(nsoption_int(script_timeout),
slow_script,
NULL);
/* Initialise common parts */ /* Initialise common parts */
browser_window_initialise_common(bw, clone); browser_window_initialise_common(bw, clone);

View File

@ -87,6 +87,8 @@
bool animate_images; \ bool animate_images; \
/** Whether to execute javascript */ \ /** Whether to execute javascript */ \
bool enable_javascript; \ bool enable_javascript; \
/** how long to wait for a script to run */ \
int script_timeout; \
/** How many days to retain URL data for */ \ /** How many days to retain URL data for */ \
int expire_url; \ int expire_url; \
/** Default font family */ \ /** Default font family */ \
@ -268,7 +270,8 @@
.suppress_curl_debug = true, \ .suppress_curl_debug = true, \
.target_blank = true, \ .target_blank = true, \
.button_2_tab = true, \ .button_2_tab = true, \
.enable_javascript = true .enable_javascript = true, \
.script_timeout = 10
#define NSOPTION_MAIN_SYS_COLOUR_DEFAULTS \ #define NSOPTION_MAIN_SYS_COLOUR_DEFAULTS \
.sys_colour_ActiveBorder = 0x00000000, \ .sys_colour_ActiveBorder = 0x00000000, \
@ -318,7 +321,7 @@
{ "accept_language", OPTION_STRING, &nsoptions.accept_language }, \ { "accept_language", OPTION_STRING, &nsoptions.accept_language }, \
{ "accept_charset", OPTION_STRING, &nsoptions.accept_charset }, \ { "accept_charset", OPTION_STRING, &nsoptions.accept_charset }, \
{ "memory_cache_size", OPTION_INTEGER, &nsoptions.memory_cache_size }, \ { "memory_cache_size", OPTION_INTEGER, &nsoptions.memory_cache_size }, \
{ "disc_cache_size", OPTION_INTEGER, &nsoptions.disc_cache_size }, \ { "disc_cache_size", OPTION_INTEGER, &nsoptions.disc_cache_size }, \
{ "disc_cache_age", OPTION_INTEGER, &nsoptions.disc_cache_age }, \ { "disc_cache_age", OPTION_INTEGER, &nsoptions.disc_cache_age }, \
{ "block_advertisements", OPTION_BOOL, &nsoptions.block_ads }, \ { "block_advertisements", OPTION_BOOL, &nsoptions.block_ads }, \
{ "do_not_track", OPTION_BOOL, &nsoptions.do_not_track }, \ { "do_not_track", OPTION_BOOL, &nsoptions.do_not_track }, \
@ -327,7 +330,8 @@
{ "foreground_images", OPTION_BOOL, &nsoptions.foreground_images }, \ { "foreground_images", OPTION_BOOL, &nsoptions.foreground_images }, \
{ "background_images", OPTION_BOOL, &nsoptions.background_images }, \ { "background_images", OPTION_BOOL, &nsoptions.background_images }, \
{ "animate_images", OPTION_BOOL, &nsoptions.animate_images }, \ { "animate_images", OPTION_BOOL, &nsoptions.animate_images }, \
{ "enable_javascript", OPTION_BOOL, &nsoptions.enable_javascript}, \ { "enable_javascript", OPTION_BOOL, &nsoptions.enable_javascript}, \
{ "script_timeout", OPTION_INTEGER, &nsoptions.script_timeout}, \
{ "expire_url", OPTION_INTEGER, &nsoptions.expire_url }, \ { "expire_url", OPTION_INTEGER, &nsoptions.expire_url }, \
{ "font_default", OPTION_INTEGER, &nsoptions.font_default }, \ { "font_default", OPTION_INTEGER, &nsoptions.font_default }, \
{ "ca_bundle", OPTION_STRING, &nsoptions.ca_bundle }, \ { "ca_bundle", OPTION_STRING, &nsoptions.ca_bundle }, \