12
12
// we're not being included by foxyproxy.js
13
var CI = Components.interfaces, CC = Components.classes, CR = Components.results, fp;
13
var CI = Components.interfaces, CC = Components.classes,
14
CR = Components.results, fp;
15
16
// Get attribute from node if it exists, otherwise return |def|.
16
17
// No exceptions, no errors, no null returns.
101
104
req.channel.loadFlags |= CI.nsIRequest.LOAD_BYPASS_CACHE;
103
106
if (req.status == 200 ||
104
(req.status == 0 && (url.indexOf("file://") == 0 || url.indexOf("ftp://") == 0 || url.indexOf("relative://") == 0))) {
107
(req.status == 0 && (url.indexOf("file://") == 0 ||
108
url.indexOf("ftp://") == 0 || url.indexOf("relative://") == 0))) {
105
109
new fpProxyAutoConfig(this).init(url, req.responseText);
107
111
else throw new Error(fp.getMessage("http.error", [req.status]));
110
114
loadPAC : function() {
115
let autoconfMode = this.owner.autoconfMode;
116
let autoconfMessage = "";
112
118
var req = CC["@mozilla.org/xmlextras/xmlhttprequest;1"]
113
119
.createInstance(CI.nsIXMLHttpRequest);
120
this.badPAC("pac.status.loadfailure", e);
126
if (autoconfMode === "pac") {
127
autoconfMessage = "pac.status.loadfailure2";
129
autoconfMessage = "wpad.status.loadfailure";
131
this.badPAC(autoconfMessage, e);
123
if (req.status == 200 ||
124
(req.status == 0 && (this.url.indexOf("file://") == 0 || this.url.indexOf("ftp://") == 0 || this.url.indexOf("relative://") == 0))) {
126
this._resolver.init(this.url, req.responseText);
129
this.badPAC("pac.status.error", e);
132
this.loadNotification && fp.notifier.alert(fp.getMessage("pac.status"), fp.getMessage("pac.status.success", [this.owner.name]));
133
this.owner._enabled = true; // Use _enabled so we don't loop infinitely
134
//if (this.disabledDueToBadPAC) {
135
//this.disabledDueToBadPAC = false; /* reset */
136
//this.owner.fp.writeSettings();
134
if (req.status == 200 || (req.status == 0 &&
135
(this.url.indexOf("file://") == 0 || this.url.indexOf("ftp://") == 0 ||
136
this.url.indexOf("relative://") == 0))) {
138
this._resolver.init(this.url, req.responseText);
141
if (autoconfMode === "pac") {
142
autoconfMessage = "pac.status.error2";
144
autoconfMessage = "wpad.status.error";
146
this.badPAC(autoconfMessage, e);
149
let autoconfMessageHelper = "";
150
if (autoconfMode === "pac") {
151
autoconfMessage = "pac.status";
152
autoconfMessageHelper = "pac.status.success2";
154
autoconfMessage = "wpad.status";
155
autoconfMessageHelper = "wpad.status.success";
157
this.loadNotification && fp.notifier.alert(fp.getMessage(autoconfMessage),
158
fp.getMessage(autoconfMessageHelper, [this.owner.name]));
159
// Use _enabled so we don't loop infinitely
160
this.owner._enabled = true;
161
//if (this.disabledDueToBadPAC) {
162
//this.disabledDueToBadPAC = false; /* reset */
163
//this.owner.fp.writeSettings();
140
this.badPAC("pac.status.loadfailure", new Error(fp.getMessage("http.error", [req.status])));
167
if (autoconfMode === "pac") {
168
autoconfMessage = "pac.status.loadfailure2";
170
autoconfMessage = "wpad.status.loadfailure";
172
this.badPAC(autoconfMessage,
173
new Error(fp.getMessage("http.error", [req.status])));
144
177
badPAC : function(r, e) {
145
//if (!this.disabledDueToBadPAC) { /* marker to try loading the PAC next time */
178
//if (!this.disabledDueToBadPAC) {
179
/* marker to try loading the PAC next time */
146
180
//this.disabledDueToBadPAC = true;
147
181
//this.owner.fp.writeSettings();
183
let autoconfMessage = "";
184
if (this.owner.autoconfMode === "pac") {
185
autoconfMessage = "pac.status";
187
autoconfMessage = "wpad.status";
149
189
var msg = fp.getMessage(r, [this.owner.name]) + "\n\n" + e.message;
150
this.errorNotification && fp.notifier.alert(fp.getMessage("pac.status"), msg);
190
this.errorNotification && fp.notifier.alert(fp.getMessage(autoconfMessage),
151
192
if (this.owner.lastresort)
152
193
this.owner.mode = "direct"; // don't disable!
153
194
else if (this.disableOnBadPAC)
194
235
/** throws a localized Error object on error */
195
236
init: function(pacURI, pacText) {
237
let autoconfMessage = "";
196
238
if (pacURI == "" || pacText == "") {
197
239
dump("FoxyProxy: init(), pacURI or pacText empty\n");
198
throw new Error(fp.getMessage("pac.empty"));
240
if (this.owner.owner.autoconfMode === "pac") {
241
autoconfMessage = "pac.empty";
243
autoconfMessage = "wpad.empty";
245
throw new Error(fp.getMessage(autoconfMessage));
200
247
this.sandbox = new Components.utils.Sandbox(pacURI);
201
248
Components.utils.evalInSandbox(pacUtils, this.sandbox);