Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/compat.js

Issue 29424786: Issue 5182 - fix IsConnectionAllowed (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: Created April 28, 2017, 2:42 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/AdblockPlus/JsEngine.h ('k') | src/FilterEngine.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/compat.js
diff --git a/lib/compat.js b/lib/compat.js
index f7ed72a23c4eae74ce70b9c89c31b681b6a04b36..b37ff5548de1867e49001e87f6eabacea892ec7b 100644
--- a/lib/compat.js
+++ b/lib/compat.js
@@ -384,7 +384,8 @@ XMLHttpRequest.prototype =
throw new Error("Sending data to server is not supported");
this.readyState = 3;
- window._webRequest.GET(this._url, this._requestHeaders, function(result)
+
+ var onGetDone = function(result)
{
this.channel.status = result.status;
this.status = result.responseStatus;
@@ -403,6 +404,22 @@ XMLHttpRequest.prototype =
var list = this["_" + eventName + "Handlers"];
for (var i = 0; i < list.length; i++)
list[i].call(this, event);
+ }.bind(this);
+ // HACK (#5066): the code checking whether the connection is allowed is temporary,
+ // the actual check should be in the core when we make a decision whether
+ // to update a subscription with current connection or not, thus whether to
+ // even construct XMLHttpRequest object or not.
+ _isSubscriptionDownloadAllowed(function(isAllowed)
+ {
+ if (!isAllowed)
+ {
+ onGetDone({
+ status: 0x804b000d, //NS_ERROR_CONNECTION_REFUSED;
+ responseStatus: 0
+ });
+ return;
+ }
+ window._webRequest.GET(this._url, this._requestHeaders, onGetDone);
}.bind(this));
},
@@ -444,6 +461,16 @@ XMLHttpRequest.prototype =
}
};
+function _isSubscriptionDownloadAllowed(callback) {
+ // It's a bit hacky, JsEngine interface which is used by FilterEngine does
+ // not allow to inject an arbitrary callback, so we use triggerEvent
+ // mechanism.
+ // Yet one hack (#5039).
+ var allowed_connection_type = require("prefs").Prefs.allowed_connection_type;
+ if (allowed_connection_type == "")
+ allowed_connection_type = null;
+ _triggerEvent("_isSubscriptionDownloadAllowed", allowed_connection_type, callback);
+}
// Polyfill Array.prototype.find
// from https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find
« no previous file with comments | « include/AdblockPlus/JsEngine.h ('k') | src/FilterEngine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld