[Pkg-mozext-commits] [requestpolicy] 40/100: fix #478 and another bug + tidy up requestType
David Prévot
taffit at moszumanska.debian.org
Fri Dec 12 22:56:54 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit 3d721e6ffb2990c7cb8ffc7205b8953b35ddeee6
Author: myrdd <myrdd at users.noreply.github.com>
Date: Mon Sep 29 23:42:18 2014 +0200
fix #478 and another bug + tidy up requestType
---
src/modules/FileUtil.jsm | 1 +
src/modules/PolicyManager.jsm | 4 +--
src/modules/Request.jsm | 4 ++-
src/modules/RequestProcessor.jsm | 70 ++++++++++++----------------------------
4 files changed, 25 insertions(+), 54 deletions(-)
diff --git a/src/modules/FileUtil.jsm b/src/modules/FileUtil.jsm
index e1d6b75..bd48e34 100644
--- a/src/modules/FileUtil.jsm
+++ b/src/modules/FileUtil.jsm
@@ -67,6 +67,7 @@ var FileUtil = {
fileToString : function(file) {
var stream = CC["@mozilla.org/network/file-input-stream;1"]
.createInstance(CI.nsIFileInputStream);
+ // TODO: Handle NS_ERROR_FILE_NOT_FOUND
stream.init(file, 0x01, 0444, 0);
stream.QueryInterface(CI.nsILineInputStream);
diff --git a/src/modules/PolicyManager.jsm b/src/modules/PolicyManager.jsm
index 1dd0fa7..d51de40 100644
--- a/src/modules/PolicyManager.jsm
+++ b/src/modules/PolicyManager.jsm
@@ -119,12 +119,11 @@ const REQUEST_REASON_RELATIVE_URL = 14; // TODO: give user control abou
* whether a request is allowed or not. Sometimes only the boolean value of
* isAllowed is needed; in that case the other arguments may be unused.
*/
-function RequestResult(isAllowed, requestType, resultReason) {
+function RequestResult(isAllowed, resultReason) {
this.matchedAllowRules = [];
this.matchedDenyRules = [];
this.isAllowed = isAllowed;
- this.requestType = requestType;
this.resultReason = resultReason;
}
RequestResult.prototype = {
@@ -132,7 +131,6 @@ RequestResult.prototype = {
matchedDenyRules : null,
isAllowed : undefined, // whether the request will be or has been allowed
- requestType : undefined,
resultReason : undefined,
allowRulesExist : function() {
diff --git a/src/modules/Request.jsm b/src/modules/Request.jsm
index cc8263e..7f3736c 100644
--- a/src/modules/Request.jsm
+++ b/src/modules/Request.jsm
@@ -205,8 +205,10 @@ NormalRequest.prototype.isInternal = function() {
-function RedirectRequest(originURI, destURI) {
+function RedirectRequest(originURI, destURI, httpHeader) {
Request.call(this, originURI, destURI, REQUEST_TYPE_REDIRECT);
+
+ this.httpHeader = httpHeader;
}
RedirectRequest.prototype = Object.create(Request.prototype);
RedirectRequest.prototype.constructor = Request;
diff --git a/src/modules/RequestProcessor.jsm b/src/modules/RequestProcessor.jsm
index c52356c..f5df357 100644
--- a/src/modules/RequestProcessor.jsm
+++ b/src/modules/RequestProcessor.jsm
@@ -255,9 +255,7 @@ RequestProcessor.prototype.process = function(request) {
// click again and so if we don't forget the previous blocked/allowed
// requests, the menu becomes inaccurate. Now the question is: what
// are we breaking by clearing the blocked/allowed requests here?
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_LINK_CLICK);
return this.accept("User-initiated request by link click", request);
@@ -273,9 +271,7 @@ RequestProcessor.prototype.process = function(request) {
// See the note above for link clicks and forgetting blocked/allowed
// requests on refresh. I haven't tested if it's the same for forms
// but it should be so we're making the same change here.
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_FORM_SUBMISSION);
return this.accept("User-initiated request by form submission", request);
@@ -285,18 +281,14 @@ RequestProcessor.prototype.process = function(request) {
// the page's content. Therefore, we make sure that our cache of
// blocked requests isn't removed in this case.
delete this._historyRequests[destURI];
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_HISTORY_REQUEST);
return this.accept("History request", request, true);
} else if (this._userAllowedRedirects[originURI]
&& this._userAllowedRedirects[originURI][destURI]) {
// shouldLoad is called by location.href in overlay.js as of Fx
// 3.7a5pre and SeaMonkey 2.1a.
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_USER_ALLOWED_REDIRECT);
return this.accept("User-allowed redirect", request, true);
}
@@ -305,9 +297,7 @@ RequestProcessor.prototype.process = function(request) {
if (request.aRequestOrigin.asciiHost == "browser") {
// "browser" origin shows up for favicon.ico and an address entered
// in address bar.
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_USER_ACTION);
return this.accept(
"User action (e.g. address entered in address bar) or other good "
@@ -320,9 +310,7 @@ RequestProcessor.prototype.process = function(request) {
// that originate from their xul files. If you're reading this and
// you know of a way to use this to evade RequestPolicy, please let
// me know, I will be very grateful.
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_USER_ACTION);
return this.accept(
"User action (e.g. address entered in address bar) or other good "
@@ -339,9 +327,7 @@ RequestProcessor.prototype.process = function(request) {
if (request.aContext && request.aContext.nodeName == "xul:browser" &&
request.aContext.currentURI &&
request.aContext.currentURI.spec == "about:blank") {
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_NEW_WINDOW);
return this.accept("New window (should probably only be an allowed " +
"popup's initial request)", request, true);
@@ -361,9 +347,7 @@ RequestProcessor.prototype.process = function(request) {
var originIdent = requestpolicy.mod.DomainUtil.getIdentifier(originURI);
var destIdent = requestpolicy.mod.DomainUtil.getIdentifier(destURI);
if (originIdent == destIdent) {
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_IDENTICAL_IDENTIFIER);
return this.accept(
"Allowing request where origin protocol, host, and port are the" +
@@ -465,9 +449,7 @@ RequestProcessor.prototype.process = function(request) {
var allowOrigin = rule[0] ? originURI.indexOf(rule[0]) == 0 : true;
var allowDest = rule[1] ? destURI.indexOf(rule[1]) == 0 : true;
if (allowOrigin && allowDest) {
- request.requestResult = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ request.requestResult = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_COMPATIBILITY);
return this.accept(
"Extension/application compatibility rule matched [" + rule[2] +
@@ -665,13 +647,15 @@ RequestProcessor.prototype._examineHttpResponse = function(observedSubject) {
dest = destAsUri;
}
- var request = new requestpolicy.mod.RedirectRequest(originURI, dest);
+ var request = new requestpolicy.mod.RedirectRequest(originURI, dest,
+ headerType);
this.processRedirect(request, httpChannel);
};
RequestProcessor.prototype.processRedirect = function(request, httpChannel) {
var originURI = request.originURI;
var destURI = request.destURI;
+ var headerType = request.headerType;
// Ignore redirects to javascript. The browser will ignore them, as well.
if (requestpolicy.mod.DomainUtil.getUriObject(destURI)
@@ -1007,7 +991,6 @@ RequestProcessor.prototype.checkRedirect = function(request) {
var result = this._rpService._policyMgr.checkRequestAgainstUserPolicies(
originURIObj, destURIObj);
- result.requestType = requestpolicy.mod.REQUEST_TYPE_REDIRECT;
// For now, we always give priority to deny rules.
if (result.denyRulesExist()) {
result.isAllowed = false;
@@ -1020,7 +1003,6 @@ RequestProcessor.prototype.checkRedirect = function(request) {
var result = this._rpService._policyMgr.
checkRequestAgainstSubscriptionPolicies(originURIObj, destURIObj);
- result.requestType = requestpolicy.mod.REQUEST_TYPE_REDIRECT;
// For now, we always give priority to deny rules.
if (result.denyRulesExist()) {
result.isAllowed = false;
@@ -1035,9 +1017,7 @@ RequestProcessor.prototype.checkRedirect = function(request) {
|| destURI.indexOf(":") == -1) {
// Redirect is to a relative url.
// ==> allow.
- return new requestpolicy.mod.RequestResult(
- true,
- requestpolicy.mod.REQUEST_TYPE_REDIRECT,
+ return new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_RELATIVE_URL);
}
@@ -1046,16 +1026,12 @@ RequestProcessor.prototype.checkRedirect = function(request) {
var allowOrigin = rule[0] ? originURI.indexOf(rule[0]) == 0 : true;
var allowDest = rule[1] ? destURI.indexOf(rule[1]) == 0 : true;
if (allowOrigin && allowDest) {
- return new requestpolicy.mod.RequestResult(
- true,
- requestpolicy.mod.REQUEST_TYPE_REDIRECT,
- requestpolicy.mod.REQUEST_REASON_COMPATIBILITY
- );
+ return new requestpolicy.mod.RequestResult(true,
+ requestpolicy.mod.REQUEST_REASON_COMPATIBILITY);
}
}
var result = this._checkByDefaultPolicy(originURI, destURI);
- result.requestType = requestpolicy.mod.REQUEST_TYPE_REDIRECT;
return result;
};
@@ -1145,8 +1121,8 @@ RequestProcessor.prototype.accept = function(reason, request, unforbidable) {
// We aren't recording the request so it doesn't show up in the menu, but we
// want it to still show up in the request log.
if (unforbidable) {
- this._notifyRequestObserversOfAllowedRequest(originUri, destUri,
- requestResult);
+ this._notifyRequestObserversOfAllowedRequest(request.originURI,
+ request.destURI, request.requestResult);
} else {
this._recordAllowedRequest(request.originURI, request.destURI, false,
request.requestResult);
@@ -1184,9 +1160,7 @@ RequestProcessor.prototype._cacheShouldLoadResult = function(result, originUri,
RequestProcessor.prototype._checkByDefaultPolicy = function(originUri,
destUri) {
if (this._rpService._defaultAllow) {
- var result = new requestpolicy.mod.RequestResult(
- true,
- undefined,
+ var result = new requestpolicy.mod.RequestResult(true,
requestpolicy.mod.REQUEST_REASON_DEFAULT_POLICY);
return result;
}
@@ -1194,9 +1168,7 @@ RequestProcessor.prototype._checkByDefaultPolicy = function(originUri,
var originDomain = requestpolicy.mod.DomainUtil.getDomain(
originUri);
var destDomain = requestpolicy.mod.DomainUtil.getDomain(destUri);
- return new requestpolicy.mod.RequestResult(
- originDomain == destDomain,
- undefined,
+ return new requestpolicy.mod.RequestResult(originDomain == destDomain,
requestpolicy.mod.REQUEST_REASON_DEFAULT_SAME_DOMAIN);
}
// We probably want to allow requests from http:80 to https:443 of the same
@@ -1206,9 +1178,7 @@ RequestProcessor.prototype._checkByDefaultPolicy = function(originUri,
originUri, requestpolicy.mod.DomainUtil.LEVEL_SOP);
var destIdent = requestpolicy.mod.DomainUtil.getIdentifier(destUri,
requestpolicy.mod.DomainUtil.LEVEL_SOP);
- return new requestpolicy.mod.RequestResult(
- (originIdent == destIdent),
- undefined,
+ return new requestpolicy.mod.RequestResult(originIdent == destIdent,
requestpolicy.mod.REQUEST_REASON_DEFAULT_SAME_DOMAIN);
};
--
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