Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,657 @@
/* global MockL10n, MockMozWifiNetwork, MockNavigatorMozWifiManager,
MockFxAccountsIACHelper, MocksHelper, UIManager, utils,
WifiHelper, WifiManager, WifiUI */
'use strict';
require('/shared/test/unit/mocks/mock_l20n.js');
require('/shared/test/unit/mocks/mock_navigator_moz_settings.js');
require('/shared/test/unit/mocks/mock_navigator_moz_wifi_manager.js');
requireApp('ftu/test/unit/mock_utils.js');
requireApp('ftu/test/unit/mock_moz_wifi_network.js');
requireApp('ftu/test/unit/mock_fx_accounts_iac_helper.js');
requireApp('ftu/js/wifi.js');
requireApp('ftu/js/ui.js');
require('/shared/js/wifi_helper.js');
require('/shared/test/unit/mocks/mock_settings_listener.js');
var mocksHelperForWifi = new MocksHelper([
'utils',
'MozWifiNetwork',
'SettingsListener'
]).init();
suite('wifi > ', function() {
var realL10n,
realMozWifiNetwork,
realMozWifiManager,
realFxAccountsIACHelper;
var fakeNetworks = [
{
ssid: 'Mozilla Guest',
bssid: 'xx:xx:xx:xx:xx:xx',
security: [],
capabilities: [],
relSignalStrength: 98,
connected: false
},
{
ssid: 'Livebox 6752',
bssid: 'xx:xx:xx:xx:xx:xx',
security: ['WEP'],
capabilities: [],
relSignalStrength: 89,
connected: false
},
{
ssid: 'Mozilla-G',
bssid: 'xx:xx:xx:xx:xx:xx',
security: ['WPA-EAP'],
capabilities: [],
relSignalStrength: 67,
connected: false
},
{
ssid: 'Freebox 8953',
bssid: 'xx:xx:xx:xx:xx:xx',
security: ['WPA2-PSK'],
capabilities: [],
relSignalStrength: 32,
connected: false
}
];
mocksHelperForWifi.attachTestHelpers();
suiteSetup(function() {
realL10n = document.l10n;
document.l10n = MockL10n;
realMozWifiNetwork = window.mozWifiNetwork;
window.mozWifiNetwork = MockMozWifiNetwork;
realMozWifiManager = navigator.mozWifiManager;
navigator.mozWifiManager = MockNavigatorMozWifiManager;
realFxAccountsIACHelper = window.FxAccountsIACHelper;
window.FxAccountsIACHelper = MockFxAccountsIACHelper;
loadBodyHTML('/index.html');
});
setup(function() {
WifiManager.init();
});
suiteTeardown(function() {
document.l10n = realL10n;
realL10n = null;
window.mozWifiNetwork = realMozWifiNetwork;
realMozWifiNetwork = null;
navigator.mozWifiManager = realMozWifiManager;
realMozWifiManager = null;
});
suite('Scan networks >', function() {
var clock = sinon.useFakeTimers();
setup(function() {
this.sinon.spy(utils.overlay, 'show');
});
teardown(function() {
clock.restore();
});
test('none available', function(done) {
var noNetworks = [];
MockNavigatorMozWifiManager.setNetworks(noNetworks);
WifiManager.scan(function(networks) {
assert.ok(utils.overlay.show.calledOnce, 'shows loading overlay');
assert.equal(networks.length, noNetworks.length,
'return zero networks');
assert.isDefined(document.getElementById('no-result-container'),
'show no networks message');
done();
});
});
test('some available', function(done) {
MockNavigatorMozWifiManager.setNetworks(fakeNetworks);
WifiManager.scan(function(networks) {
assert.ok(utils.overlay.show.calledOnce, 'shows loading overlay');
assert.isDefined(networks, 'return networks');
assert.isNotNull(networks, 'return valid networks');
assert.equal(networks, fakeNetworks, 'return existing networks');
done();
});
});
test('error while scanning', function(done) {
this.sinon.spy(console, 'error');
this.sinon.stub(MockNavigatorMozWifiManager, 'getNetworks')
.onFirstCall().returns({
set onerror(callback) {
this.error = {
name: 'error'
};
callback();
}
});
WifiManager.scan(function(networks) {
assert.ok(MockNavigatorMozWifiManager.getNetworks.calledOnce);
assert.ok(utils.overlay.show.called, 'shows loading overlay');
assert.equal(networks.length, 0, 'no networks returned');
assert.ok(console.error.calledOnce);
done();
});
});
test('should execute callback when scan fails', function() {
var fakeCallback = this.sinon.spy();
this.sinon.stub(MockNavigatorMozWifiManager, 'getNetworks')
.onFirstCall().returns({
set onerror(callback) {
this.error = {
name: 'error'
};
callback();
}
});
WifiManager.scan(fakeCallback);
assert.isTrue(fakeCallback.calledOnce);
});
test('timeout error', function(done) {
this.sinon.stub(MockNavigatorMozWifiManager, 'getNetworks').returns({});
this.sinon.spy(console, 'warn');
WifiManager.scan(function(networks) {
assert.ok(utils.overlay.show.called, 'shows loading overlay');
assert.isUndefined(networks, 'no networks returned');
assert.ok(console.warn.called);
done();
});
clock.tick(10000);
});
});
suite('Choose a network >', function() {
var network,
networkDOM,
fakeEvent;
setup(function() {
WifiManager.networks = fakeNetworks;
WifiUI.renderNetworks(fakeNetworks);
UIManager.activationScreen =
document.getElementById('activation-screen');
UIManager.mainTitle = document.getElementById('main-title');
UIManager.wifiJoinButton = document.getElementById('wifi-join-button');
UIManager.navBar = document.getElementById('nav-bar');
UIManager.passwordInput = document.getElementById('wifi_password');
network = fakeNetworks[0];
networkDOM = document.querySelector('li[data-ssid="' +
network.ssid + '"]');
fakeEvent = {
target: networkDOM
};
});
teardown(function() {
UIManager.activationScreen = null;
UIManager.mainTitle = null;
UIManager.wifiJoinButton = null;
UIManager.navBar = null;
UIManager.passwordInput = null;
});
test('Open network', function() {
this.sinon.stub(WifiHelper, 'isOpen').returns(true);
this.sinon.stub(WifiUI, 'connect');
WifiUI.chooseNetwork(fakeEvent);
assert.isTrue(WifiUI.connect.called, 'should try to connect directly');
});
test('Protected network', function() {
this.sinon.stub(WifiHelper, 'isOpen').returns(false);
WifiUI.chooseNetwork(fakeEvent);
assert.equal(UIManager.mainTitle.textContent, networkDOM.dataset.ssid,
'should show the network name as title');
assert.isTrue(UIManager.activationScreen.classList.contains('no-options'),
'should hide refresh button');
assert.isTrue(UIManager.navBar.classList.contains('secondary-menu'),
'should change different nav button');
});
test('Join button valid input', function() {
this.sinon.stub(WifiHelper, 'isValidInput').returns(true);
// default value. Must change after input event
UIManager.wifiJoinButton.disabled = true;
UIManager.passwordInput.dispatchEvent(new CustomEvent('input'));
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button should be enabled if the input is valid');
});
test('Join button invalid input', function() {
this.sinon.stub(WifiHelper, 'isValidInput').returns(false);
// button enabled. Must change after input event
UIManager.wifiJoinButton.disabled = false;
UIManager.passwordInput.dispatchEvent(new CustomEvent('input'));
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button should be disabled if the input is not valid');
});
});
suite('Add a hidden network >', function() {
setup(function() {
UIManager.init();
UIManager.activationScreen =
document.getElementById('activation-screen');
UIManager.mainTitle = document.getElementById('main-title');
UIManager.wifiJoinButton = document.getElementById('wifi-join-button');
UIManager.navBar = document.getElementById('nav-bar');
UIManager.hiddenWifiSsid = document.getElementById('hidden-wifi-ssid');
UIManager.hiddenWifiSecurity =
document.getElementById('hidden-wifi-security');
UIManager.hiddenWifiPasswordBox =
document.getElementById('hidden-wifi-password-box');
UIManager.hiddenWifiPassword =
document.getElementById('hidden-wifi-password');
UIManager.hiddenWifiIdentityBox =
document.getElementById('hidden-wifi-identity-box');
UIManager.hiddenWifiIdentity =
document.getElementById('hidden-wifi-identity');
WifiUI.addHiddenNetwork();
});
test('should show authentication screen', function() {
assert.isTrue(UIManager.activationScreen.classList.contains('no-options'),
'should hide refresh button');
assert.equal(UIManager.mainTitle.getAttribute('data-l10n-id'),
'authentication',
'should show correct title');
assert.isTrue(UIManager.navBar.classList.contains('secondary-menu'),
'should change different nav button');
assert.equal(UIManager.hiddenWifiSsid.value, '',
'should clean SSID input');
assert.equal(UIManager.hiddenWifiPassword.value, '',
'should clean Password input');
assert.equal(UIManager.hiddenWifiIdentity.value, '',
'should clean User input');
assert.isTrue(UIManager.wifiJoinButton.disabled,
'should disable Join button by default');
assert.equal(window.location.hash, '#hidden-wifi-authentication',
'should update the hash value');
});
test('add open network', function() {
// Check everything is ok when entering
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button should be disabled by default');
// Choose an Open security and simulate 'change' event
UIManager.hiddenWifiSecurity.options[0].selected = true;
UIManager.hiddenWifiSecurity.dispatchEvent(new CustomEvent('change'));
// Check UI changes for the security chosen
assert.isTrue(UIManager.hiddenWifiPasswordBox.classList
.contains('hidden'),
'should hide all security inputs');
// Prepare the conditions
UIManager.hiddenWifiSsid.value = 'testSSID';
// Simulate event for the check
UIManager.hiddenWifiSsid.dispatchEvent(new CustomEvent('keyup'));
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled when SSID not empty');
});
test('add protected network WEP', function() {
// Check everything is ok when entering
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button should be disabled by default');
// Choose WEP security and simulate 'change' event
UIManager.hiddenWifiSecurity.options[1].selected = true;
UIManager.hiddenWifiSecurity.dispatchEvent(new CustomEvent('change'));
// Check UI changes for the security chosen
assert.isFalse(UIManager.hiddenWifiPasswordBox.classList
.contains('hidden'),
'should show password input');
assert.isTrue(UIManager.hiddenWifiIdentityBox.classList
.contains('hidden'),
'should hide user input');
UIManager.hiddenWifiSsid.value = 'testSSID';
UIManager.hiddenWifiSsid.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled when SSID not empty');
UIManager.hiddenWifiPassword.value = 'I234'; // 4 ASCII char
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled when Password is not long enough');
UIManager.hiddenWifiPassword.value = 'I234S'; // 5 ASCII char
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
UIManager.hiddenWifiPassword.value = 'I234S67B90'; // 10 ASCII char
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled when not HEX 10 char password');
UIManager.hiddenWifiPassword.value = '123A567b90'; // 10 HEX char
// (0-9 A-F a-f)
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
UIManager.hiddenWifiPassword.value = '1234567890QW'; // 12 ASCII char
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is enabled');
UIManager.hiddenWifiPassword.value = '123A567b90QWE'; // 13 ASCII char
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
UIManager.hiddenWifiPassword.value = '123A567b90QWERTY'; // 16 ASCII char
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
// 29 ASCII char
UIManager.hiddenWifiPassword.value = '123A567b90QWERTYUIOPASDFGHJKL';
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
// 32 ASCII char
UIManager.hiddenWifiPassword.value = '123A567b90QWERTYUIOPASDFGHJKLZXC';
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled with 32 not HEX chars');
// 32 HEX char
UIManager.hiddenWifiPassword.value = '123A567b90ABCDEFabcdef1234567890';
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
// 58 ASCII char
UIManager.hiddenWifiPassword.value = '123A567b90' +
'QWERTYUIOPASDFGHJKLZXCVBNM' +
'qwertyuiopasdfghjkl';
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled with 58 not HEX chars');
// 58 HEX char
UIManager.hiddenWifiPassword.value = '123A567b90ABCDEFabcdef1234567890' +
'1234567890ABCDEFabcdef1234';
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// All conditions valid
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled');
// 59 HEX char
UIManager.hiddenWifiPassword.value = '123A567b90ABCDEFabcdef1234567890' +
'1234567890ABCDEFabcdef12345';
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled for more than 58 characters');
});
test('add protected network WPA-PSK', function() {
// Check everything is ok when entering
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button should be disabled by default');
// Choose WPA-PSK security and simulate 'change' event
UIManager.hiddenWifiSecurity.options[2].selected = true;
UIManager.hiddenWifiSecurity.dispatchEvent(new CustomEvent('change'));
// Check UI changes for the security chosen
assert.isFalse(UIManager.hiddenWifiPasswordBox.classList
.contains('hidden'),
'should show password input');
assert.isTrue(UIManager.hiddenWifiIdentityBox.classList
.contains('hidden'),
'should hide user input');
UIManager.hiddenWifiSsid.value = 'testSSID';
UIManager.hiddenWifiSsid.dispatchEvent(new CustomEvent('keyup'));
// Not enough
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is enabled when SSID not empty');
UIManager.hiddenWifiPassword.value = 'QW3rtY7'; // 7 char password
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled when Password is not long enough');
UIManager.hiddenWifiPassword.value = 'QW3rtY78'; // 8 char password
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled when Password is at least 8 char long');
UIManager.hiddenWifiPassword.value = 'QW3rtY789'; // 8 char password
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with this condition
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled when Password is longer than 8 char');
});
test('add protected network WPA-EAP', function() {
// Check everything is ok when entering
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button should be disabled by default');
// Choose an Open security and simulate 'change' event
UIManager.hiddenWifiSecurity.options[3].selected = true;
UIManager.hiddenWifiSecurity.dispatchEvent(new CustomEvent('change'));
// Check UI changes for the security chosen
assert.isFalse(UIManager.hiddenWifiPasswordBox.classList
.contains('hidden'),
'should show password input');
assert.isFalse(UIManager.hiddenWifiIdentityBox.classList
.contains('hidden'),
'should show user input');
UIManager.hiddenWifiSsid.value = 'testSSID'; // any SSID
UIManager.hiddenWifiSsid.dispatchEvent(new CustomEvent('keyup'));
// Not enough
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is enabled when SSID not empty');
UIManager.hiddenWifiPassword.value = 'QW3rtY'; // any password
UIManager.hiddenWifiPassword.dispatchEvent(new CustomEvent('keyup'));
// Not enough with ssid and password filled
assert.isTrue(UIManager.wifiJoinButton.disabled,
'button is disabled when Identity not filled');
UIManager.hiddenWifiIdentity.value = 'user'; // any user
UIManager.hiddenWifiIdentity.dispatchEvent(new CustomEvent('keyup'));
// SSID + User + Password
assert.isFalse(UIManager.wifiJoinButton.disabled,
'button is enabled when all conditions ok');
});
});
suite('Join a network >', function() {
var testSSID,
testUser,
testPassword;
setup(function() {
testSSID = 'Mozilla-G';
testUser = 'testUser';
testPassword = 'testPassword';
this.sinon.stub(window.history, 'back');
this.sinon.stub(WifiManager, 'connect');
WifiUI.renderNetworks(fakeNetworks);
UIManager.hiddenWifiSsid =
document.getElementById('hidden-wifi-ssid');
UIManager.hiddenWifiIdentity =
document.getElementById('hidden-wifi-identity');
UIManager.hiddenWifiPassword =
document.getElementById('hidden-wifi-password');
UIManager.hiddenWifiSecurity =
document.getElementById('hidden-wifi-security');
});
teardown(function() {
// document.body.innerHTML = '';
UIManager.hiddenWifiSsid = null;
UIManager.hiddenWifiIdentity = null;
UIManager.hiddenWifiPassword = null;
UIManager.hiddenWifiSecurity = null;
});
test('from the list of detected networks', function() {
document.getElementById('wifi_ssid').value = testSSID;
document.getElementById('wifi_user').value = testUser;
document.getElementById('wifi_password').value = testPassword;
WifiUI.joinNetwork();
assert.isTrue(WifiManager.connect.calledWith(testSSID,
testPassword,
testUser),
'should try to connect with correct values');
assert.isTrue(window.history.back.called,
'UI should go back to the list');
});
test('that is hidden', function() {
UIManager.hiddenWifiSsid.value = testSSID;
UIManager.hiddenWifiIdentity.value = testUser;
UIManager.hiddenWifiPassword.value = testPassword;
UIManager.hiddenWifiSecurity.options[2].selected = true;
var oldNetworks = WifiManager.networks.length;
WifiUI.joinHiddenNetwork();
var currentNetworks = WifiManager.networks.length;
assert.isTrue(currentNetworks > oldNetworks,
'a new network is added to the list');
var hiddenNetwork = document.getElementById(testSSID);
assert.isNotNull(hiddenNetwork, 'hidden network should be rendered');
assert.isTrue(WifiManager.connect.calledWith(testSSID,
testPassword,
testUser),
'should try to connect with correct values');
assert.isTrue(window.history.back.called,
'UI should go back to the list');
});
suite('Update UI', function() {
var realWifiManagerOnScan;
setup(function() {
WifiUI.renderNetworks(fakeNetworks);
realWifiManagerOnScan = WifiManager.onScan;
WifiManager.onScan = null;
});
teardown(function() {
WifiManager.onScan = realWifiManagerOnScan;
});
test('Should update the previous connected network', function() {
var previousNetwork = fakeNetworks[0];
var currentNetwork = fakeNetworks[1];
var previousNetworkElement =
document.querySelector('li[data-ssid="' +
previousNetwork.ssid + '"]');
var previousNetworkSecurity =
previousNetworkElement.querySelector('p[data-security-level]');
var currentNetworkElement =
document.querySelector('li[data-ssid="' +
currentNetwork.ssid + '"]');
var currentNetworkSecurity =
currentNetworkElement.querySelector('p[data-security-level]');
WifiManager.api.onstatuschange({status: 'connected',
network: previousNetwork});
assert.isTrue(previousNetworkElement.classList.contains('connected'));
assert.equal(previousNetworkSecurity.dataset.l10nId,
'shortStatus-connected');
WifiManager.api.onstatuschange({status: 'disconnected',
network: previousNetwork});
// bug 1179703
WifiManager.api.onstatuschange({status: 'connecting',
network: previousNetwork});
WifiManager.api.onstatuschange({status: 'connected',
network: currentNetwork});
assert.isFalse(previousNetworkElement.classList.contains('connected'));
assert.isTrue(currentNetworkElement.classList.contains('connected'));
assert.equal(previousNetworkSecurity.dataset.l10nId,
'securityOpen');
assert.equal(currentNetworkSecurity.dataset.l10nId,
'shortStatus-connected');
});
test('Should move the current connected network to the top', function() {
var currentNetwork = fakeNetworks[2];
var currentNetworkElement =
document.querySelector('li[data-ssid="' +
currentNetwork.ssid + '"]');
var networksList = document.getElementById('networks-list');
WifiManager.api.onstatuschange({status: 'connected',
network: currentNetwork});
var firstChild = networksList.children[0];
assert.equal(currentNetworkElement, firstChild);
});
});
});
});