From 63a4ad6844bd288ea75072df7ab0ce632f7d9676 Mon Sep 17 00:00:00 2001 From: Nils Maier Date: Tue, 15 Jul 2014 13:31:20 +0200 Subject: [PATCH] Re-enable grant sniffing! The world (meaning I) is not ready get for @grant :p Closes GH-226 (and probably numerous others) Reverts part of 0f767fa4c11b03501432ff49c63b99b12dffc103 --- extension/content/options.xul | 2 ++ extension/defaults/preferences/scriptish.js | 1 + extension/locale/en-US/scriptish.properties | 1 + extension/modules/script/script.js | 6 ++++++ 4 files changed, 10 insertions(+) diff --git a/extension/content/options.xul b/extension/content/options.xul index 21396d33..3c6d00f8 100644 --- a/extension/content/options.xul +++ b/extension/content/options.xul @@ -106,6 +106,7 @@ + @@ -131,6 +132,7 @@ + diff --git a/extension/defaults/preferences/scriptish.js b/extension/defaults/preferences/scriptish.js index d174d9b9..d3e334a7 100644 --- a/extension/defaults/preferences/scriptish.js +++ b/extension/defaults/preferences/scriptish.js @@ -18,6 +18,7 @@ pref("extensions.scriptish.enabledNotifications.popup", true); pref("extensions.scriptish.enabledNotifications.sliding", true); pref("extensions.scriptish.enableScriptRefreshing", true); pref("extensions.scriptish.enableScriptGrant", true); +pref("extensions.scriptish.enableScriptGrantSniffing", true); pref("extensions.scriptish.enableInstallDetection", true); pref("extensions.scriptish.logChrome", false); pref("extensions.scriptish.logToErrorConsole", true); diff --git a/extension/locale/en-US/scriptish.properties b/extension/locale/en-US/scriptish.properties index 82d2fc43..d69a11f3 100644 --- a/extension/locale/en-US/scriptish.properties +++ b/extension/locale/en-US/scriptish.properties @@ -125,6 +125,7 @@ options.excludes.desc=Global excludes will override any script or user specified options.excludes.empty=No global excludes specified options.excludes.remark=(You may specify one exclude per line) options.grant.enabled=Enable @grant +options.grant.sniffing=Enable @grant sniffing options.logChrome=Log non-critical extension messages to the Error Console options.logging=Logging options.logToErrorConsole=GM_log uses the Error Console diff --git a/extension/modules/script/script.js b/extension/modules/script/script.js index a727122b..34c57768 100644 --- a/extension/modules/script/script.js +++ b/extension/modules/script/script.js @@ -1,6 +1,7 @@ var EXPORTED_SYMBOLS = ["Script"]; const valueSplitter = /(\S+)(?:\s+([^\r\f\n]+))?/; +const GRANT_REGEX = /(?:unsafeWindow|GM_[a-z]+)/gi; const Cu = Components.utils; Cu.import("resource://gre/modules/CertUtils.jsm"); @@ -919,6 +920,11 @@ Script.parse = function Script_parse(aConfig, aSource, aURI, aUpdateScript, aPri if (aURI && aPrivate === false) script._downloadURL = aURI.spec; + // sniff @grant ? + if (Scriptish_prefRoot.getValue("enableScriptGrantSniffing")) { + (aSource.match(GRANT_REGEX) || []).forEach(function(i) script.grant[i] = true); + } + // read one line at a time looking for start meta delimiter or EOF var lines = aSource.match(metaRegExp); var i = 0;