From 059a71c329397c16270a7e459e914df97af8cca0 Mon Sep 17 00:00:00 2001 From: Anthony Lieuallen Date: Wed, 17 Oct 2012 15:12:27 -0400 Subject: [PATCH] Support actual-source-URL relative downloadURL and updateURL meta. Fixes #1658 --- modules/parseScript.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/parseScript.js b/modules/parseScript.js index 3dcd3a44b..da720c688 100644 --- a/modules/parseScript.js +++ b/modules/parseScript.js @@ -7,6 +7,8 @@ Components.utils.import('resource://greasemonkey/scriptResource.js'); Components.utils.import('resource://greasemonkey/third-party/MatchPattern.js'); Components.utils.import('resource://greasemonkey/util.js'); +var gIoService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); var gLineSplitRegexp = /.+/g; var gAllMetaRegexp = new RegExp( '^// ==UserScript==([\\s\\S]*?)^// ==/UserScript==', 'm'); @@ -54,15 +56,22 @@ function parse(aSource, aUri, aFailWhenMissing, aNoMetaOk) { case 'description': case 'name': case 'namespace': - case 'updateURL': case 'version': script['_' + header] = value; break; - case 'downloadURL': case 'installURL': - script._downloadURL = value; + header = 'downloadURL'; + case 'downloadURL': + case 'updateURL': + try { + var uri = GM_util.uriFromUrl(value, aUri || this._downloadURL); + script['_' + header] = uri.spec; + } catch (e) { + dump('Failed to parse ' + header + ' "' + value + '":\n' + e + '\n'); + } break; + case 'exclude': script._excludes.push(value); break;