mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-12 10:17:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
7
toolkit/components/captivedetect/test/unit/.eslintrc.js
Normal file
7
toolkit/components/captivedetect/test/unit/.eslintrc.js
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
"extends": [
|
||||
"../../../../../testing/xpcshell/xpcshell.eslintrc.js"
|
||||
]
|
||||
};
|
||||
49
toolkit/components/captivedetect/test/unit/head_setprefs.js
Normal file
49
toolkit/components/captivedetect/test/unit/head_setprefs.js
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
|
||||
|
||||
Cu.import('resource://gre/modules/XPCOMUtils.jsm');
|
||||
Cu.import('resource://gre/modules/Services.jsm');
|
||||
Cu.import('resource://testing-common/httpd.js');
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
|
||||
'@mozilla.org/toolkit/captive-detector;1',
|
||||
'nsICaptivePortalDetector');
|
||||
|
||||
const kCanonicalSitePath = '/canonicalSite.html';
|
||||
const kCanonicalSiteContent = 'true';
|
||||
const kPrefsCanonicalURL = 'captivedetect.canonicalURL';
|
||||
const kPrefsCanonicalContent = 'captivedetect.canonicalContent';
|
||||
const kPrefsMaxWaitingTime = 'captivedetect.maxWaitingTime';
|
||||
const kPrefsPollingTime = 'captivedetect.pollingTime';
|
||||
|
||||
var gServer;
|
||||
var gServerURL;
|
||||
|
||||
function setupPrefs() {
|
||||
let prefs = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService)
|
||||
.QueryInterface(Components.interfaces.nsIPrefBranch);
|
||||
prefs.setCharPref(kPrefsCanonicalURL, gServerURL + kCanonicalSitePath);
|
||||
prefs.setCharPref(kPrefsCanonicalContent, kCanonicalSiteContent);
|
||||
prefs.setIntPref(kPrefsMaxWaitingTime, 0);
|
||||
prefs.setIntPref(kPrefsPollingTime, 1);
|
||||
}
|
||||
|
||||
function run_captivedetect_test(xhr_handler, fakeUIResponse, testfun)
|
||||
{
|
||||
gServer = new HttpServer();
|
||||
gServer.registerPathHandler(kCanonicalSitePath, xhr_handler);
|
||||
gServer.start(-1);
|
||||
gServerURL = 'http://localhost:' + gServer.identity.primaryPort;
|
||||
|
||||
setupPrefs();
|
||||
|
||||
fakeUIResponse();
|
||||
|
||||
testfun();
|
||||
}
|
||||
53
toolkit/components/captivedetect/test/unit/test_abort.js
Normal file
53
toolkit/components/captivedetect/test/unit/test_abort.js
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
if (loginFinished) {
|
||||
response.write('true');
|
||||
} else {
|
||||
response.write('false');
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
do_throw('should not receive captive-portal-login event');
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
}
|
||||
|
||||
function test_abort() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_throw('should not execute |complete| callback');
|
||||
},
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
gCaptivePortalDetector.abort(kInterfaceName);
|
||||
gServer.stop(do_test_finished);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_abort);
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
if (loginFinished) {
|
||||
response.write('true');
|
||||
} else {
|
||||
response.write('false');
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
let requestId;
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
loginFinished = true;
|
||||
do_check_eq(++step, 2);
|
||||
requestId = JSON.parse(data).id;
|
||||
gCaptivePortalDetector.abort(kInterfaceName);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login-abort') {
|
||||
do_check_eq(++step, 3);
|
||||
do_check_eq(JSON.parse(data).id, requestId);
|
||||
gServer.stop(do_test_finished);
|
||||
}
|
||||
}, 'captive-portal-login-abort', false);
|
||||
}
|
||||
|
||||
function test_abort() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_throw('should not execute |complete| callback');
|
||||
},
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_abort);
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
const kOtherInterfaceName = 'ril';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
if (loginFinished) {
|
||||
response.write('true');
|
||||
} else {
|
||||
response.write('false');
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
loginFinished = true;
|
||||
do_check_eq(++step, 3);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
}
|
||||
|
||||
function test_multiple_requests_abort() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_throw('should not execute |complete| callback for ' + kInterfaceName);
|
||||
},
|
||||
};
|
||||
|
||||
let otherCallback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 2);
|
||||
gCaptivePortalDetector.finishPreparation(kOtherInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 4);
|
||||
do_check_true(success);
|
||||
gServer.stop(do_test_finished);
|
||||
}
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
gCaptivePortalDetector.checkCaptivePortal(kOtherInterfaceName, otherCallback);
|
||||
gCaptivePortalDetector.abort(kInterfaceName);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_multiple_requests_abort);
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
const kOtherInterfaceName = 'ril';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
if (loginFinished) {
|
||||
response.write('true');
|
||||
} else {
|
||||
response.write('false');
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
loginFinished = true;
|
||||
do_check_eq(++step, 2);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
}
|
||||
|
||||
function test_abort() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 3);
|
||||
do_check_true(success);
|
||||
gServer.stop(do_test_finished);
|
||||
},
|
||||
};
|
||||
|
||||
let otherCallback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_throw('should not execute |prepare| callback for ' + kOtherInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_throw('should not execute |complete| callback for ' + kInterfaceName);
|
||||
}
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
gCaptivePortalDetector.checkCaptivePortal(kOtherInterfaceName, otherCallback);
|
||||
gCaptivePortalDetector.abort(kOtherInterfaceName);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_abort);
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
if (loginFinished) {
|
||||
response.write('true');
|
||||
} else {
|
||||
response.write('false');
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
loginFinished = true;
|
||||
do_check_eq(++step, 2);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login-success') {
|
||||
do_check_eq(++step, 4);
|
||||
gServer.stop(do_test_finished);
|
||||
}
|
||||
}, 'captive-portal-login-success', false);
|
||||
}
|
||||
|
||||
function test_portal_found() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
// Since this is a synchronous callback, it must happen before
|
||||
// 'captive-portal-login-success' is received.
|
||||
// (Check captivedetect.js::executeCallback
|
||||
do_check_eq(++step, 3);
|
||||
do_check_true(success);
|
||||
},
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_portal_found);
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
|
||||
var gRedirectServer;
|
||||
var gRedirectServerURL;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
if (loginFinished) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
response.write('true');
|
||||
} else {
|
||||
response.setStatusLine(metadata.httpVersion, 303, "See Other");
|
||||
response.setHeader("Location", gRedirectServerURL, false);
|
||||
response.setHeader("Content-Type", "text/html", false);
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
loginFinished = true;
|
||||
do_check_eq(++step, 2);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login-success') {
|
||||
do_check_eq(++step, 4);
|
||||
gServer.stop(function () {
|
||||
gRedirectServer.stop(do_test_finished);
|
||||
});
|
||||
}
|
||||
}, 'captive-portal-login-success', false);
|
||||
}
|
||||
|
||||
function test_portal_found() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 3);
|
||||
do_check_true(success);
|
||||
},
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
gRedirectServer = new HttpServer();
|
||||
gRedirectServer.start(-1);
|
||||
gRedirectServerURL = 'http://localhost:' + gRedirectServer.identity.primaryPort;
|
||||
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_portal_found);
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var attempt = 0;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
dump('HTTP activity\n');
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
response.write('true');
|
||||
attempt++;
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic == 'captive-portal-login') {
|
||||
do_throw('should not receive captive-portal-login event');
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
}
|
||||
|
||||
function test_portal_not_found() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 2);
|
||||
do_check_true(success);
|
||||
do_check_eq(attempt, 1);
|
||||
gServer.stop(function() { dump('server stop\n'); do_test_finished(); });
|
||||
}
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_portal_not_found);
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
var attempt = 0;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 404, "Page not Found");
|
||||
attempt++;
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
do_throw('should not receive captive-portal-login event');
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
}
|
||||
|
||||
function test_portal_not_found() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 2);
|
||||
do_check_false(success);
|
||||
do_check_eq(attempt, 6);
|
||||
gServer.stop(do_test_finished);
|
||||
},
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_portal_not_found);
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
const kOtherInterfaceName = 'ril';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
var loginFinished = false;
|
||||
var loginSuccessCount = 0;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
if (loginFinished) {
|
||||
response.write('true');
|
||||
} else {
|
||||
response.write('false');
|
||||
}
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
loginFinished = true;
|
||||
do_check_eq(++step, 2);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login-success') {
|
||||
loginSuccessCount++;
|
||||
if (loginSuccessCount > 1) {
|
||||
throw "We should only receive 'captive-portal-login-success' once";
|
||||
}
|
||||
do_check_eq(++step, 4);
|
||||
}
|
||||
}, 'captive-portal-login-success', false);
|
||||
}
|
||||
|
||||
function test_multiple_requests() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 3);
|
||||
do_check_true(success);
|
||||
},
|
||||
};
|
||||
|
||||
let otherCallback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 5);
|
||||
gCaptivePortalDetector.finishPreparation(kOtherInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 6);
|
||||
do_check_true(success);
|
||||
gServer.stop(do_test_finished);
|
||||
}
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
gCaptivePortalDetector.checkCaptivePortal(kOtherInterfaceName, otherCallback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_multiple_requests);
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
'use strict';
|
||||
|
||||
const kInterfaceName = 'wifi';
|
||||
|
||||
var server;
|
||||
var step = 0;
|
||||
|
||||
function xhr_handler(metadata, response) {
|
||||
response.setStatusLine(metadata.httpVersion, 200, 'OK');
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
response.write('false');
|
||||
}
|
||||
|
||||
function fakeUIResponse() {
|
||||
Services.obs.addObserver(function observe(subject, topic, data) {
|
||||
if (topic === 'captive-portal-login') {
|
||||
let xhr = Cc['@mozilla.org/xmlextras/xmlhttprequest;1']
|
||||
.createInstance(Ci.nsIXMLHttpRequest);
|
||||
xhr.open('GET', gServerURL + kCanonicalSitePath, true);
|
||||
xhr.send();
|
||||
do_check_eq(++step, 2);
|
||||
let details = JSON.parse(data);
|
||||
gCaptivePortalDetector.cancelLogin(details.id);
|
||||
}
|
||||
}, 'captive-portal-login', false);
|
||||
}
|
||||
|
||||
function test_cancel() {
|
||||
do_test_pending();
|
||||
|
||||
let callback = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsICaptivePortalCallback]),
|
||||
prepare: function prepare() {
|
||||
do_check_eq(++step, 1);
|
||||
gCaptivePortalDetector.finishPreparation(kInterfaceName);
|
||||
},
|
||||
complete: function complete(success) {
|
||||
do_check_eq(++step, 3);
|
||||
do_check_false(success);
|
||||
gServer.stop(do_test_finished);
|
||||
},
|
||||
};
|
||||
|
||||
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_captivedetect_test(xhr_handler, fakeUIResponse, test_cancel);
|
||||
}
|
||||
15
toolkit/components/captivedetect/test/unit/xpcshell.ini
Normal file
15
toolkit/components/captivedetect/test/unit/xpcshell.ini
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[DEFAULT]
|
||||
head = head_setprefs.js
|
||||
tail =
|
||||
|
||||
[test_captive_portal_not_found.js]
|
||||
[test_captive_portal_not_found_404.js]
|
||||
[test_captive_portal_found.js]
|
||||
[test_captive_portal_found_303.js]
|
||||
[test_abort.js]
|
||||
[test_abort_during_user_login.js]
|
||||
[test_user_cancel.js]
|
||||
[test_multiple_requests.js]
|
||||
[test_abort_ongoing_request.js]
|
||||
[test_abort_pending_request.js]
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue