963425fd3e4aecdace5ffb28a2eb2dceec74f8a9 larrym Mon Oct 25 13:30:38 2010 -0700 move advancedJavascriptFeaturesEnabled to jsHelper.c diff --git src/hg/lib/jsHelper.c src/hg/lib/jsHelper.c index bb89214..3d811e6 100644 --- src/hg/lib/jsHelper.c +++ src/hg/lib/jsHelper.c @@ -421,3 +421,37 @@ } return str; } + +boolean advancedJavascriptFeaturesEnabled(struct cart *cart) +// Returns TRUE if advanced javascript features are currently enabled +{ +static boolean alreadyLookedForadvancedJs = FALSE; +static boolean advancedJsEnabled = FALSE; +if(!alreadyLookedForadvancedJs) + { + char *ua = cgiUserAgent(); + boolean defaultVal = TRUE; + + // dragZooming was broken in version 530.4 of AppleWebKit browsers (used by Safari, Chrome and some other browsers). + // This was explicitly fixed by the WebKit team in version 531.0.1 (see http://trac.webkit.org/changeset/45143). + // The AppleWebKit version provided by the browser in user agent doesn't always include the minor version number, so to + // be overly conservative we default drag-and-drop to off when AppleWebKit major version == 530 + + if(ua != NULL) + { + char *needle = "AppleWebKit/"; + char *ptr = strstr(ua, needle); + if(ptr != NULL) + { + int version = 0; + sscanf(ptr + strlen(needle), "%d", &version); + defaultVal = (version != 530); + } + } + advancedJsEnabled = cartUsualBoolean(cart, "enableAdvancedJavascript", defaultVal); + alreadyLookedForadvancedJs = TRUE; + } +//else +// warn("already looked up advancedJsEnabled"); // got msg 41 times in one page! +return advancedJsEnabled; +}