[Pkg-mozext-commits] [requestpolicy] 242/280: fix fail of `testRequestLogShowsUriWithoutHost`
David Prévot
taffit at moszumanska.debian.org
Sat May 2 20:30:34 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 486ad3964b38d153482f618edc6f15d18ee43d42
Author: Martin Kimmerle <dev at 256k.de>
Date: Sat Mar 21 03:35:01 2015 +0100
fix fail of `testRequestLogShowsUriWithoutHost`
URIs without a host will from now on be displayed in the request
log.
---
src/content/lib/request-processor.jsm | 34 +++++++++++++++++----------
src/content/lib/utils/domains.jsm | 11 ++++++++-
src/content/ui/menu.js | 10 ++++++--
src/content/ui/overlay.js | 44 ++++++++++++++++++++++++-----------
4 files changed, 71 insertions(+), 28 deletions(-)
diff --git a/src/content/lib/request-processor.jsm b/src/content/lib/request-processor.jsm
index a4854ad..8f3dde4 100644
--- a/src/content/lib/request-processor.jsm
+++ b/src/content/lib/request-processor.jsm
@@ -232,21 +232,24 @@ let RequestProcessor = (function(self) {
REQUEST_REASON_DEFAULT_POLICY);
return result;
}
+
if (Prefs.isDefaultAllowSameDomain()) {
- var originDomain = DomainUtil.getBaseDomain(
- originUri);
+ var originDomain = DomainUtil.getBaseDomain(originUri);
var destDomain = DomainUtil.getBaseDomain(destUri);
- return new RequestResult(originDomain == destDomain,
- REQUEST_REASON_DEFAULT_SAME_DOMAIN);
+
+ if (originDomain !== null && destDomain !== null) {
+ // apply this rule only if both origin and dest URIs
+ // do have a host.
+ return new RequestResult(originDomain === destDomain,
+ REQUEST_REASON_DEFAULT_SAME_DOMAIN);
+ }
}
// We probably want to allow requests from http:80 to https:443 of the same
// domain. However, maybe this is so uncommon it's not worth any extra
// complexity.
- var originIdent = DomainUtil.getIdentifier(
- originUri, DomainUtil.LEVEL_SOP);
- var destIdent = DomainUtil.getIdentifier(destUri,
- DomainUtil.LEVEL_SOP);
- return new RequestResult(originIdent == destIdent,
+ var originIdent = DomainUtil.getIdentifier(originUri, DomainUtil.LEVEL_SOP);
+ var destIdent = DomainUtil.getIdentifier(destUri, DomainUtil.LEVEL_SOP);
+ return new RequestResult(originIdent === destIdent,
REQUEST_REASON_DEFAULT_SAME_DOMAIN);
};
@@ -293,7 +296,7 @@ let RequestProcessor = (function(self) {
// We're assuming ident is fullIdent (LEVEL_SOP). We plan to remove base
// domain and hostname levels.
for (var originUri in requests) {
- if (DomainUtil.getBaseDomain(originUri) != currentlySelectedOrigin) {
+ if (DomainUtil.getBaseDomain(originUri) !== currentlySelectedOrigin) {
// only return requests from the given base domain
continue;
}
@@ -585,7 +588,13 @@ let RequestProcessor = (function(self) {
let uriSchemeShouldLoadResult = request.checkURISchemes().shouldLoad;
if (uriSchemeShouldLoadResult !== null) {
- return uriSchemeShouldLoadResult === true ? CP_OK : CP_REJECT;
+ 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);
+ }
}
@@ -710,7 +719,8 @@ let RequestProcessor = (function(self) {
// solution but I'm not sure what that solution is.
var originIdent = DomainUtil.getIdentifier(originURI);
var destIdent = DomainUtil.getIdentifier(destURI);
- if (originIdent == destIdent) {
+ if (originIdent === destIdent &&
+ originIdent !== null && destIdent !== null) {
request.requestResult = new RequestResult(true,
REQUEST_REASON_IDENTICAL_IDENTIFIER);
return accept(
diff --git a/src/content/lib/utils/domains.jsm b/src/content/lib/utils/domains.jsm
index 85605e1..690bb2c 100644
--- a/src/content/lib/utils/domains.jsm
+++ b/src/content/lib/utils/domains.jsm
@@ -113,7 +113,13 @@ DomainUtil.getIdentifier = function(uri, level) {
* invalid uri.
*/
DomainUtil.getHost = function(uri) {
- return this.getUriObject(uri).host;
+ let uriObj = this.getUriObject(uri);
+ try {
+ return uriObj.host;
+ } catch(e) {
+ // it's an URI without host
+ return null;
+ }
};
/**
@@ -166,6 +172,9 @@ DomainUtil.isValidUri = function(uri) {
*/
DomainUtil.getBaseDomain = function(uri) {
var host = this.getHost(uri);
+ if (host === null) {
+ return null;
+ }
try {
// The nsIEffectiveTLDService functions will always leave IDNs as ACE.
var baseDomain = Services.eTLD.getBaseDomainFromHost(host, 0);
diff --git a/src/content/ui/menu.js b/src/content/ui/menu.js
index 3dd76a5..d31fedd 100644
--- a/src/content/ui/menu.js
+++ b/src/content/ui/menu.js
@@ -112,6 +112,12 @@ requestpolicy.menu = (function() {
try {
self._currentBaseDomain = DomainUtil.getBaseDomain(self._currentUri);
+ if (self._currentBaseDomain === null) {
+ Logger.info(Logger.TYPE_INTERNAL, "Unable to prepare menu because " +
+ "the current uri has no host: " + self._currentUri);
+ self._populateMenuForUncontrollableOrigin();
+ return;
+ }
} catch (e) {
Logger.info(Logger.TYPE_INTERNAL, "Unable to prepare menu because " +
"base domain can't be determined: " + self._currentUri);
@@ -710,7 +716,7 @@ requestpolicy.menu = (function() {
for (var originUri in allRequests) {
var originBase = DomainUtil.getBaseDomain(originUri);
- if (originBase != self._currentBaseDomain) {
+ if (originBase !== self._currentBaseDomain) {
continue;
}
@@ -730,7 +736,7 @@ requestpolicy.menu = (function() {
var guiOrigins = [];
for (var originUri in allRequests) {
var originBase = DomainUtil.getBaseDomain(originUri);
- if (originBase == self._currentBaseDomain) {
+ if (originBase === self._currentBaseDomain) {
continue;
}
diff --git a/src/content/ui/overlay.js b/src/content/ui/overlay.js
index 4231106..c4fe16b 100644
--- a/src/content/ui/overlay.js
+++ b/src/content/ui/overlay.js
@@ -524,28 +524,46 @@ requestpolicy.overlay = (function() {
DOMUtils.removeChildren(addRulePopup);
let m = requestpolicy.menu;
- var origin = m._addWildcard(DomainUtil.getBaseDomain(redirectOriginUri));
- var dest = m._addWildcard(DomainUtil.getBaseDomain(redirectTargetUri));
+ var originBaseDomain = DomainUtil.getBaseDomain(redirectOriginUri);
+ var destBaseDomain = DomainUtil.getBaseDomain(redirectTargetUri);
+ var origin = null, dest = null;
+ if (originBaseDomain !== null) {
+ origin = m._addWildcard(originBaseDomain);
+ }
+ if (destBaseDomain !== null) {
+ dest = m._addWildcard(destBaseDomain);
+ }
let mayPermRulesBeAdded = WindowUtils.mayPermanentRulesBeAdded(window);
let cm = requestpolicy.classicmenu;
- cm.addMenuItemTemporarilyAllowDest(addRulePopup, dest);
- if (mayPermRulesBeAdded) {
- cm.addMenuItemAllowDest(addRulePopup, dest);
+
+ if (destBaseDomain !== null) {
+ cm.addMenuItemTemporarilyAllowDest(addRulePopup, dest);
+ if (mayPermRulesBeAdded) {
+ cm.addMenuItemAllowDest(addRulePopup, dest);
+ }
}
- cm.addMenuSeparator(addRulePopup);
- cm.addMenuItemTemporarilyAllowOrigin(addRulePopup, origin);
- if (mayPermRulesBeAdded) {
- cm.addMenuItemAllowOrigin(addRulePopup, origin);
+ if (originBaseDomain !== null && destBaseDomain !== null) {
+ cm.addMenuSeparator(addRulePopup);
}
- cm.addMenuSeparator(addRulePopup);
- cm.addMenuItemTemporarilyAllowOriginToDest(addRulePopup, origin, dest);
- if (mayPermRulesBeAdded) {
- cm.addMenuItemAllowOriginToDest(addRulePopup, origin, dest);
+ if (originBaseDomain !== null) {
+ cm.addMenuItemTemporarilyAllowOrigin(addRulePopup, origin);
+ if (mayPermRulesBeAdded) {
+ cm.addMenuItemAllowOrigin(addRulePopup, origin);
+ }
+ }
+
+ if (originBaseDomain !== null && destBaseDomain !== null) {
+ cm.addMenuSeparator(addRulePopup);
+
+ cm.addMenuItemTemporarilyAllowOriginToDest(addRulePopup, origin, dest);
+ if (mayPermRulesBeAdded) {
+ cm.addMenuItemAllowOriginToDest(addRulePopup, origin, dest);
+ }
}
--
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