summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2013-05-22 18:40:21 +0100
committerVincent Sanders <vince@netsurf-browser.org>2013-05-22 19:12:26 +0100
commitaf75070bee41816cb9ee4a53995d1f42870c1fcb (patch)
treeed7cae70d8f650c563292376ba4fde0bf44a8fad
parent7f7ff937453dc70144d1b6226fb7b34368ab271d (diff)
downloadnetsurf-af75070bee41816cb9ee4a53995d1f42870c1fcb.tar.gz
netsurf-af75070bee41816cb9ee4a53995d1f42870c1fcb.tar.bz2
add script_timeout option and use it
-rw-r--r--desktop/browser.c11
-rw-r--r--desktop/options_main.h10
2 files changed, 15 insertions, 6 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 53e3f13bf..ac8c6991c 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -683,12 +683,15 @@ void browser_window_debug_dump(struct browser_window *bw, FILE *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;
LOG(("Continuing execution %d", count));
count++;
- if (count >= 2) {
+ if (count > 1) {
+ count = 0;
return false;
}
return true;
@@ -717,7 +720,9 @@ browser_window_create(enum browser_window_nav_flags flags,
}
/* 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 */
browser_window_initialise_common(bw, clone);
diff --git a/desktop/options_main.h b/desktop/options_main.h
index 7b9e7314b..43070acae 100644
--- a/desktop/options_main.h
+++ b/desktop/options_main.h
@@ -87,6 +87,8 @@
bool animate_images; \
/** Whether to execute javascript */ \
bool enable_javascript; \
+ /** how long to wait for a script to run */ \
+ int script_timeout; \
/** How many days to retain URL data for */ \
int expire_url; \
/** Default font family */ \
@@ -268,7 +270,8 @@
.suppress_curl_debug = true, \
.target_blank = true, \
.button_2_tab = true, \
- .enable_javascript = true
+ .enable_javascript = true, \
+ .script_timeout = 10
#define NSOPTION_MAIN_SYS_COLOUR_DEFAULTS \
.sys_colour_ActiveBorder = 0x00000000, \
@@ -318,7 +321,7 @@
{ "accept_language", OPTION_STRING, &nsoptions.accept_language }, \
{ "accept_charset", OPTION_STRING, &nsoptions.accept_charset }, \
{ "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 }, \
{ "block_advertisements", OPTION_BOOL, &nsoptions.block_ads }, \
{ "do_not_track", OPTION_BOOL, &nsoptions.do_not_track }, \
@@ -327,7 +330,8 @@
{ "foreground_images", OPTION_BOOL, &nsoptions.foreground_images }, \
{ "background_images", OPTION_BOOL, &nsoptions.background_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 }, \
{ "font_default", OPTION_INTEGER, &nsoptions.font_default }, \
{ "ca_bundle", OPTION_STRING, &nsoptions.ca_bundle }, \