Bug 752982: Backout aa98a13a5f73 on CLOSED TREE

This commit is contained in:
Gregor Wagner 2013-02-14 20:09:51 -08:00
Родитель 53986fdda7
Коммит 9ce4a5e124
14 изменённых файлов: 0 добавлений и 800 удалений

Просмотреть файл

@ -145,5 +145,3 @@ skip-if = os == "android"
[include:b2g/components/test/unit/xpcshell.ini]
[include:tools/profiler/tests/xpcshell.ini]
[include:toolkit/components/captivedetect/test/xpcshell.ini]

Просмотреть файл

@ -22,8 +22,4 @@ EXTRA_COMPONENTS = \
captivedetect.js \
$(NULL)
ifdef ENABLE_TESTS
XPCSHELL_TESTS = test
endif
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -1,22 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 kServerURL = 'http://localhost:4444';
const kCanonicalSitePath = '/canonicalSite.html';
const kPrefsCanonicalURL = 'captivedetect.canonicalURL';
const kPrefsMaxWaitingTime = 'captivedetect.maxWaitingTime';
const kPrefsPollingTime = 'captivedetect.pollingTime';
function setupPrefs() {
let prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.QueryInterface(Components.interfaces.nsIPrefBranch);
prefs.setCharPref(kPrefsCanonicalURL, kServerURL + kCanonicalSitePath);
prefs.setIntPref(kPrefsMaxWaitingTime, 0);
prefs.setIntPref(kPrefsPollingTime, 1);
}
setupPrefs();

Просмотреть файл

@ -1,68 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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);
server.stop(do_test_finished);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_abort();
}

Просмотреть файл

@ -1,81 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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', kServerURL + 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);
server.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() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_abort();
}

Просмотреть файл

@ -1,87 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
const kOtherInterfaceName = 'ril';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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', kServerURL + 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);
server.stop(do_test_finished);
}
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
gCaptivePortalDetector.checkCaptivePortal(kOtherInterfaceName, otherCallback);
gCaptivePortalDetector.abort(kInterfaceName);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_multiple_requests_abort();
}

Просмотреть файл

@ -1,86 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
const kOtherInterfaceName = 'ril';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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', kServerURL + 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);
server.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() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_abort();
}

Просмотреть файл

@ -1,73 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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', kServerURL + kCanonicalSitePath, true);
xhr.send();
loginFinished = true;
do_check_eq(++step, 2);
}
}, 'captive-portal-login', 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);
server.stop(do_test_finished);
},
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_portal_found();
}

Просмотреть файл

@ -1,75 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
var server;
var step = 0;
var loginFinished = false;
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", "http://example.org/", 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', kServerURL + kCanonicalSitePath, true);
xhr.send();
loginFinished = true;
do_check_eq(++step, 2);
}
}, 'captive-portal-login', 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);
server.stop(do_test_finished);
},
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_portal_found();
}

Просмотреть файл

@ -1,67 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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);
server.stop(function(){dump('server stop\n'); do_test_finished(); });
}
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_portal_not_found();
}

Просмотреть файл

@ -1,64 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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_true(success);
do_check_eq(attempt, 6);
server.stop(do_test_finished);
},
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_portal_not_found();
}

Просмотреть файл

@ -1,87 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
const kOtherInterfaceName = 'ril';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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', kServerURL + kCanonicalSitePath, true);
xhr.send();
loginFinished = true;
do_check_eq(++step, 2);
}
}, 'captive-portal-login', 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, 4);
gCaptivePortalDetector.finishPreparation(kOtherInterfaceName);
},
complete: function complete(success) {
do_check_eq(++step, 5);
do_check_true(success);
server.stop(do_test_finished);
}
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
gCaptivePortalDetector.checkCaptivePortal(kOtherInterfaceName, otherCallback);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_multiple_requests();
}

Просмотреть файл

@ -1,69 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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 {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');
const kInterfaceName = 'wifi';
XPCOMUtils.defineLazyServiceGetter(this, 'gCaptivePortalDetector',
'@mozilla.org/services/captive-detector;1',
'nsICaptivePortalDetector');
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', kServerURL + 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);
server.stop(do_test_finished);
},
};
gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback);
}
function run_test() {
server = new HttpServer();
server.registerPathHandler(kCanonicalSitePath, xhr_handler);
server.start(4444);
fakeUIResponse();
test_cancel();
}

Просмотреть файл

@ -1,15 +0,0 @@
[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]