[Pkg-mozext-commits] [requestpolicy] 256/280: solve problems about URIs without host
David Prévot
taffit at moszumanska.debian.org
Sat May 2 20:30:36 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit aee58a1b43df3f44d0e0a0cc64f36935564df77e
Author: Martin Kimmerle <dev at 256k.de>
Date: Tue Apr 28 12:05:44 2015 +0200
solve problems about URIs without host
Beginning with this commit it's possible to add rules which do
not specify a host, but a scheme instead. Such rules can match
URIs which do not have a host.
This commit resolves #447.
---
src/content/lib/request-processor.jsm | 13 ----
src/content/lib/request.jsm | 124 ----------------------------------
src/content/ui/overlay.js | 49 --------------
3 files changed, 186 deletions(-)
diff --git a/src/content/lib/request-processor.jsm b/src/content/lib/request-processor.jsm
index 8f3dde4..71b54ad 100644
--- a/src/content/lib/request-processor.jsm
+++ b/src/content/lib/request-processor.jsm
@@ -586,19 +586,6 @@ let RequestProcessor = (function(self) {
- let uriSchemeShouldLoadResult = request.checkURISchemes().shouldLoad;
- if (uriSchemeShouldLoadResult !== null) {
- request.requestResult = new RequestResult(uriSchemeShouldLoadResult,
- REQUEST_REASON_COMPATIBILITY);
- if (uriSchemeShouldLoadResult === true) {
- return accept("Allowing request due to scheme-workaround", request);
- } else {
- return reject("Blocking request due to scheme-workaround", request);
- }
- }
-
-
-
// Note: If changing the logic here, also make necessary changes to
// isAllowedRedirect).
diff --git a/src/content/lib/request.jsm b/src/content/lib/request.jsm
index 48e212f..313aff1 100644
--- a/src/content/lib/request.jsm
+++ b/src/content/lib/request.jsm
@@ -265,130 +265,6 @@ NormalRequest.prototype.getBrowser = function() {
};
-// see https://github.com/RequestPolicyContinued/requestpolicy/issues/447
-var knownSchemesWithoutHost = [
- // common schemes
- "about",
- "feed",
- "mediasource",
- "mailto",
-
- // custom schemes
- "magnet",
- "UT2004",
- "gopher",
- "spotify",
- "greasemonkey-script",
- "floatnotes"
-];
-
-function isKnownSchemeWithoutHost(scheme) {
- for (let i = 0, len = knownSchemesWithoutHost.length; i < len; ++i) {
- if (scheme == knownSchemesWithoutHost[i]) {
- return true;
- }
- }
- return false;
-}
-
-NormalRequest.prototype.checkURISchemes = function() {
-/**
- * This is a workaround to the problem that RequestPolicy currently cannot
- * handle some URIs. This workaround should be removed not later than for
- * the stable 1.0 release.
- *
- * see https://github.com/RequestPolicyContinued/requestpolicy/issues/447
- *
- * TODO: solve this problem and remove this workaround.
- */
- let unknownSchemesDetected = false;
- let uris = [this.aContentLocation, this.aRequestOrigin];
- for (let i = 0; i < 2; ++i) {
- let uri = uris[i];
-
- // filter URIs which *do* have a host
- try {
- // this might throw NS_ERROR_FAILURE
- if (uri.host) {
- continue;
- }
- } catch(e) {}
-
- // ensure that the URI has a scheme
- try {
- if (!uri.scheme) {
- throw "no scheme!";
- }
- } catch(e) {
- Logger.warning(Logger.TYPE_CONTENT,
- "URI <" + uri.spec + "> has no scheme!");
- continue;
- }
-
- let scheme = uri.scheme;
- if (scheme == "file") {
- continue;
- }
-
- if (isKnownSchemeWithoutHost(scheme)) {
- Logger.warning(Logger.TYPE_CONTENT,
- "RequestPolicy currently cannot handle '" + scheme + "' schemes. " +
- "Therefore the request from <" + this.originURI + "> to <" +
- this.destURI + "> is allowed (but not recorded).");
- // tell shouldLoad() to return CP_OK:
- return {shouldLoad: true};
- }
-
- // if we get here, the scheme is unknown. try to show a notification.
- unknownSchemesDetected = true;
- Logger.warning(Logger.TYPE_CONTENT,
- "uncatched scheme '" + scheme + "'. The request is from <" +
- this.originURI + "> to <" + this.destURI + "> ");
-
- let chromeWin, browser;
- try {
- chromeWin = this.getChromeWindow();
- if (!chromeWin) {
- throw "The chrome window could not be extracted from aContext.";
- }
- browser = this.getBrowser();
- } catch (e) {
- Logger.warning(Logger.TYPE_INTERNAL,
- "The user could not be informed about the " +
- "unknown scheme. Error was: " + e, e);
- }
-
- // Try showing the notification multiple times. This is done
- // async for two reasons:
- // (a) The chrome window's overlay might not be initialized
- // yet.
- // (b) This function is called by the request processor, so
- // it should terminate asap.
- Utils.tryMultipleTimes(function (aTriesLeft) {
- try {
- let overlay = chromeWin.requestpolicy.overlay;
- overlay.showSchemeNotification(browser, scheme);
- return true;
- } catch (e) {
- if (aTriesLeft === 0) {
- Logger.warning(Logger.TYPE_INTERNAL,
- "Failed to show the scheme notification. " +
- "Error was: " + e, e);
- } else {
- Logger.warning(Logger.TYPE_INTERNAL,
- "Failed to show the scheme notification. " +
- "Trying again...");
- }
- return false;
- }
- }, 3);
-
- }
-
- return {shouldLoad: unknownSchemesDetected ? false : null};
-};
-
-
function RedirectRequest(httpResponse) {
diff --git a/src/content/ui/overlay.js b/src/content/ui/overlay.js
index c4fe16b..da44344 100644
--- a/src/content/ui/overlay.js
+++ b/src/content/ui/overlay.js
@@ -389,55 +389,6 @@ requestpolicy.overlay = (function() {
}
};
- /**
- * Shows a notification that an unknown scheme has been detected.
- * This notification in only necessary for 1.0 beta versions until custom
- * URI schemes are supported in RequestPolicy.
- *
- * issue: https://github.com/RequestPolicyContinued/requestpolicy/issues/447
- *
- * @param {browser} browser
- * @param {String} scheme
- */
- self.showSchemeNotification = function(browser, scheme) {
- let notificationBox = gBrowser.getNotificationBox(browser);
- let notificationValue = "requestpolicy-scheme-notification";
-
- let notification = notificationBox
- .getNotificationWithValue(notificationValue);
-
- var notificationLabel = "This page contains a request with a '" + scheme +
- "' scheme which is unknown to RequestPolicy. Please report it.";
-
- if (notification) {
- notification.label = notificationLabel;
- } else {
- var buttons = [
- {
- label : "report this / more info",
- accessKey : "r",
- popup : null,
- callback : function() {
- let url = "https://github.com/RequestPolicyContinued/requestpolicy/issues/447";
- window.openUILinkIn(url, "tab", {relatedToCurrent: true});
- }
- },
- {
- label : "hide",
- accessKey : "h",
- popup : null,
- callback : function() {
- // Do nothing. The notification closes when this is called.
- }
- }
- ];
- const priority = notificationBox.PRIORITY_WARNING_LOW;
- let iconURI = "chrome://requestpolicy/skin/requestpolicy-icon-blocked.png";
- notificationBox.appendNotification(notificationLabel, notificationValue,
- iconURI, priority, buttons);
- }
- };
-
/**
* Takes an URI, crops it if necessary, and returns it.
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git
More information about the Pkg-mozext-commits
mailing list