Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
447 lines
14 KiB
JavaScript
Executable file
447 lines
14 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
var assert = require('chai').assert;
|
|
var proxyquire = require('proxyquire');
|
|
var mockUtils = require('./mock_utils.js');
|
|
|
|
suite('preferences.js', function() {
|
|
var app;
|
|
var preferences;
|
|
var fileContent;
|
|
var servicePrefs = {};
|
|
setup(function() {
|
|
app = proxyquire.noCallThru().load(
|
|
'../../preferences', {
|
|
'./utils': mockUtils
|
|
});
|
|
mockUtils.gaia = {
|
|
getInstance: function(config) {
|
|
return config;
|
|
}
|
|
};
|
|
mockUtils.getFile = function() {
|
|
return {
|
|
path: Array.prototype.join.call(arguments, '/'),
|
|
exists: function() {
|
|
return true;
|
|
},
|
|
clone: function() {
|
|
return {
|
|
append: function() {},
|
|
exists: function() { return true; }
|
|
};
|
|
},
|
|
};
|
|
};
|
|
mockUtils.getFileContent = function(file) {
|
|
return file.path;
|
|
};
|
|
mockUtils.getFileURISpec = function(file) {
|
|
return file.path;
|
|
};
|
|
mockUtils.writeContent = function(file, content) {
|
|
fileContent = {
|
|
file: file.path,
|
|
content: content
|
|
};
|
|
return fileContent;
|
|
};
|
|
mockUtils.getLocaleBasedir = function(dir) {
|
|
return dir;
|
|
};
|
|
mockUtils.Services = {
|
|
prefs: {
|
|
setCharPref: function(key, val) {
|
|
servicePrefs[key] = {
|
|
value: val,
|
|
type: 'char'
|
|
};
|
|
},
|
|
setBoolPref: function(key, val) {
|
|
servicePrefs[key] = {
|
|
value: val,
|
|
type: 'bool'
|
|
};
|
|
},
|
|
setIntPref: function(key, val) {
|
|
servicePrefs[key] = {
|
|
value: val,
|
|
type: 'int'
|
|
};
|
|
}
|
|
}
|
|
};
|
|
});
|
|
|
|
suite('setConfig, execute, writePref, setPrefs, loadPrefFile, ' +
|
|
'customizePrefValue', function() {
|
|
var config;
|
|
setup(function() {
|
|
preferences = new app.PreferencesBuilder();
|
|
config = {
|
|
PROFILE_DIR: 'testProfileDir'
|
|
};
|
|
});
|
|
|
|
test('setConfig', function () {
|
|
preferences.setConfig(config);
|
|
|
|
assert.deepEqual(preferences.config, config);
|
|
assert.deepEqual(preferences.prefs, {});
|
|
assert.deepEqual(preferences.gaia, config);
|
|
assert.deepEqual(preferences.extenedPrefFiles,
|
|
['custom-prefs.js', 'gps-prefs.js', 'payment-prefs.js'],
|
|
'extenedPrefFiles should contain three *-prefs.js');
|
|
});
|
|
|
|
test('setConfig with DEBUG=1', function () {
|
|
config.DEBUG = '1';
|
|
preferences.setConfig(config);
|
|
assert.ok(preferences.extenedPrefFiles.indexOf('debug-prefs.js') !== -1,
|
|
'extenedPrefFiles should contain debug-prefs.js');
|
|
});
|
|
|
|
test('setConfig with GAIA_APP_TARGET=engineering', function () {
|
|
config.GAIA_APP_TARGET = 'engineering';
|
|
preferences.setConfig(config);
|
|
assert.ok(
|
|
preferences.extenedPrefFiles.indexOf('payment-dev-prefs.js') !== -1,
|
|
'extenedPrefFiles should contain payment-dev-prefs.js'
|
|
);
|
|
});
|
|
|
|
test('setConfig with GAIA_APP_TARGET=dogfood', function () {
|
|
config.GAIA_APP_TARGET = 'dogfood';
|
|
preferences.setConfig(config);
|
|
assert.ok(
|
|
preferences.extenedPrefFiles.indexOf('dogfood-prefs.js') !== -1,
|
|
'extenedPrefFiles should contain dogfood-prefs.js'
|
|
);
|
|
});
|
|
|
|
test('execute', function () {
|
|
var result;
|
|
preferences.preparePref = function() {};
|
|
preferences.writePrefs = function() {result = 'xpcshell';};
|
|
preferences.setPrefs = function() {result = 'b2g';};
|
|
preferences.execute({engine: 'xpcshell'});
|
|
assert.equal(result, 'xpcshell');
|
|
preferences.execute({engine: 'b2g'});
|
|
assert.equal(result, 'b2g');
|
|
});
|
|
|
|
test('writePrefs', function () {
|
|
preferences.config = {
|
|
PROFILE_DIR: 'testProfileDir'
|
|
};
|
|
preferences.prefs = {
|
|
'testKey': 'testContent'
|
|
};
|
|
preferences.userPrefs = {
|
|
'testKey2': 'testContent2'
|
|
};
|
|
preferences.writePrefs(preferences.config.PROFILE_DIR + 'user.js',
|
|
preferences.prefs, preferences.userPrefs
|
|
);
|
|
assert.deepEqual(fileContent, {
|
|
file: preferences.config.PROFILE_DIR + 'user.js',
|
|
content: 'pref(\'' + 'testKey' + '\', ' +
|
|
JSON.stringify('testContent') + ');\n' +
|
|
'user_pref(\'' + 'testKey2' + '\', ' +
|
|
JSON.stringify('testContent2') + ');\n' + '\n'
|
|
});
|
|
});
|
|
|
|
test('setPrefs', function () {
|
|
preferences.prefs = {
|
|
string: 'abc',
|
|
bool: true,
|
|
num: 3
|
|
};
|
|
preferences.setPrefs();
|
|
assert.deepEqual(servicePrefs, {
|
|
'string': {
|
|
value: 'abc',
|
|
type: 'char'
|
|
},
|
|
'bool': {
|
|
value: true,
|
|
type: 'bool'
|
|
},
|
|
'num': {
|
|
value: 3,
|
|
type: 'int'
|
|
}
|
|
});
|
|
});
|
|
|
|
test('loadPrefFile', function() {
|
|
preferences.prefs = {};
|
|
preferences.userPrefs = {};
|
|
var callingCount = 0;
|
|
var oldLoader = mockUtils.scriptLoader.load;
|
|
mockUtils.scriptLoader.load = function(path, exportObj, withoutCache) {
|
|
assert.isDefined(path);
|
|
assert.isDefined(exportObj);
|
|
callingCount++;
|
|
exportObj.pref('test-string-key-' + callingCount, path);
|
|
exportObj.pref('test-boolean-key-' + callingCount, true);
|
|
exportObj.pref('test-integer-key-' + callingCount, 1);
|
|
exportObj.user_pref('test-user-string-key-' + callingCount,
|
|
'test user value');
|
|
exportObj.user_pref('test-user-boolean-key-' + callingCount, false);
|
|
exportObj.user_pref('test-user-integer-key-' + callingCount, 2);
|
|
};
|
|
|
|
var prefsList = ['prefs-a', 'prefs-b', 'prefs-c'];
|
|
var exists = function() { return true; };
|
|
var srcDir = {
|
|
path: 'build/config',
|
|
exists: exists,
|
|
clone: function() {
|
|
var path = 'build/config';
|
|
return {
|
|
path: path,
|
|
exists: exists,
|
|
append: function(filename) {
|
|
this.path += '/' + filename;
|
|
}
|
|
};
|
|
}
|
|
};
|
|
preferences.loadPrefFile(srcDir, prefsList);
|
|
assert.equal(callingCount, 3);
|
|
assert.deepEqual(preferences.prefs, {
|
|
'test-string-key-1': 'build/config/prefs-a',
|
|
'test-boolean-key-1': true,
|
|
'test-integer-key-1': 1,
|
|
'test-string-key-2': 'build/config/prefs-b',
|
|
'test-boolean-key-2': true,
|
|
'test-integer-key-2': 1,
|
|
'test-string-key-3': 'build/config/prefs-c',
|
|
'test-boolean-key-3': true,
|
|
'test-integer-key-3': 1
|
|
});
|
|
assert.deepEqual(preferences.userPrefs, {
|
|
'test-user-string-key-1': 'test user value',
|
|
'test-user-boolean-key-1': false,
|
|
'test-user-integer-key-1': 2,
|
|
'test-user-string-key-2': 'test user value',
|
|
'test-user-boolean-key-2': false,
|
|
'test-user-integer-key-2': 2,
|
|
'test-user-string-key-3': 'test user value',
|
|
'test-user-boolean-key-3': false,
|
|
'test-user-integer-key-3': 2
|
|
});
|
|
mockUtils.scriptLoader.load = oldLoader;
|
|
});
|
|
|
|
test('customizePrefValue', function() {
|
|
// responsive UI
|
|
var value = preferences.customizePrefValue(
|
|
'devtools.responsiveUI.customWidth', 0);
|
|
assert.equal(value, 32);
|
|
value = preferences.customizePrefValue(
|
|
'devtools.responsiveUI.customHeight', 0);
|
|
assert.equal(value, 61);
|
|
value = preferences.customizePrefValue('other-integer-pref', 0);
|
|
assert.equal(value, 0);
|
|
value = preferences.customizePrefValue('other-boolean-pref', true);
|
|
assert.isTrue(value);
|
|
value = preferences.customizePrefValue('other-string-pref', 'test');
|
|
assert.equal(value, 'test');
|
|
});
|
|
|
|
teardown(function() {
|
|
config = null;
|
|
preferences = null;
|
|
fileContent = null;
|
|
servicePrefs = {};
|
|
});
|
|
});
|
|
|
|
suite('editLocalDomainPref, editDesktopPref, editDebugPref, ' +
|
|
'editDeviceDebugPref', function() {
|
|
var config;
|
|
setup(function() {
|
|
preferences = new app.PreferencesBuilder();
|
|
});
|
|
|
|
test('editLocalDomainPref', function () {
|
|
preferences.domains = ['test1', 'test2'];
|
|
preferences.prefs = {};
|
|
preferences.userPrefs = {};
|
|
preferences.setLocalDomainPref();
|
|
|
|
assert.deepEqual(preferences.userPrefs, {
|
|
'network.dns.localDomains': preferences.domains.join(',')
|
|
});
|
|
});
|
|
|
|
test('editDesktopPref', function () {
|
|
preferences.system = 'testSystem';
|
|
preferences.prefs = {};
|
|
preferences.userPrefs = {};
|
|
preferences.setDesktopPref();
|
|
assert.deepEqual(preferences.userPrefs, {
|
|
'extensions.autoDisableScopes': 0,
|
|
'xpinstall.signatures.required': false
|
|
});
|
|
});
|
|
|
|
test('editDebugPref', function () {
|
|
preferences.homescreen = 'testHomescreen';
|
|
preferences.config = {
|
|
GAIA_DIR: 'testGaiaDir',
|
|
GAIA_DOMAIN: 'testGaiaDomain',
|
|
GAIA_PORT: ':8080',
|
|
GAIA_APPDIRS: 'testAppDirs',
|
|
GAIA_ALLAPPDIRS: 'testAppDir1 testAppDir2',
|
|
GAIA_LOCALES_PATH: 'testLocalesPath',
|
|
OFFICIAL: 1,
|
|
LOCALES_FILE: 'testLocaleFile',
|
|
LOCALE_BASEDIR: 'testLocaleBaseDir',
|
|
GAIA_DEV_PIXELS_PER_PX: 2
|
|
};
|
|
preferences.gaia = {
|
|
webapps: [
|
|
{
|
|
sourceAppDirectoryName: 'testSourceName',
|
|
sourceDirectoryName: 'testDirName'
|
|
}
|
|
]
|
|
};
|
|
preferences.prefs = {};
|
|
preferences.userPrefs = {};
|
|
preferences.setDebugPref();
|
|
assert.deepEqual(preferences.userPrefs, {
|
|
'docshell.device_size_is_page_size': true,
|
|
'marionette.defaultPrefs.enabled': true,
|
|
'nglayout.debug.disable_xul_cache': true,
|
|
'nglayout.debug.disable_xul_fastload': true,
|
|
'javascript.options.showInConsole': true,
|
|
'browser.dom.window.dump.enabled': true,
|
|
'dom.report_all_js_exceptions': true,
|
|
'dom.w3c_touch_events.enabled': 1,
|
|
'dom.promise.enabled': true,
|
|
'dom.wakelock.enabled': true,
|
|
'image.mozsamplesize.enabled': true,
|
|
'webgl.verbose': true,
|
|
'dom.max_script_run_time': 0,
|
|
'toolkit.identity.debug': true,
|
|
'extensions.gaia.dir': preferences.config.GAIA_DIR,
|
|
'extensions.gaia.domain': preferences.config.GAIA_DOMAIN,
|
|
'extensions.gaia.port': 8080,
|
|
'extensions.gaia.appdirs': preferences.config.GAIA_APPDIRS,
|
|
'extensions.gaia.allappdirs': preferences.config.GAIA_ALLAPPDIRS,
|
|
'extensions.gaia.locales_debug_path':
|
|
preferences.config.GAIA_LOCALES_PATH,
|
|
'extensions.gaia.official': true,
|
|
'extensions.gaia.locales_file': preferences.config.LOCALES_FILE,
|
|
'extensions.gaia.locale_basedir': preferences.config.LOCALE_BASEDIR,
|
|
'extensions.gaia.device_pixel_suffix':
|
|
'@' + preferences.config.GAIA_DEV_PIXELS_PER_PX + 'x',
|
|
'extensions.autoDisableScopes': 0,
|
|
'xpinstall.signatures.required': false,
|
|
'browser.tabs.remote.autostart': false,
|
|
'browser.tabs.remote.autostart.1': false,
|
|
'browser.tabs.remote.autostart.2': false,
|
|
'browser.shell.checkDefaultBrowser': false
|
|
});
|
|
assert.isUndefined(preferences.userPrefs['network.http.use-cache']);
|
|
});
|
|
|
|
test('editDeviceDebugPref', function () {
|
|
preferences.prefs = {};
|
|
preferences.userPrefs = {};
|
|
preferences.setDeviceDebugPref();
|
|
assert.deepEqual(preferences.userPrefs, {
|
|
'devtools.debugger.prompt-connection': false,
|
|
'devtools.debugger.forbid-certified-apps': false,
|
|
'javascript.options.discardSystemSource': false,
|
|
'dom.apps.developer_mode': true,
|
|
'network.disable.ipc.security': true,
|
|
'dom.webcomponents.enabled': true,
|
|
'b2g.adb.timeout': 0
|
|
});
|
|
});
|
|
|
|
teardown(function() {
|
|
config = null;
|
|
preferences = null;
|
|
fileContent = null;
|
|
});
|
|
});
|
|
suite('preparePref', function() {
|
|
var config;
|
|
setup(function() {
|
|
preferences = new app.PreferencesBuilder();
|
|
});
|
|
|
|
test('preparePref', function () {
|
|
var cusPref;
|
|
preferences.setLocalDomainPref = function() {
|
|
cusPref = 'local';
|
|
};
|
|
preferences.setDesktopPref = function() {
|
|
cusPref = 'desktop';
|
|
};
|
|
preferences.setDebugPref = function() {
|
|
cusPref = 'debug';
|
|
};
|
|
preferences.setDeviceDebugPref = function() {
|
|
cusPref = 'device';
|
|
};
|
|
|
|
preferences.gaia = {
|
|
webapps: [
|
|
{ domain: 'testDomain' }
|
|
]
|
|
};
|
|
preferences.config = {
|
|
SYSTEM: 'app://system',
|
|
GAIA_PORT: '8000',
|
|
GAIA_DOMAIN: 'domain',
|
|
GAIA_ALLAPPDIRS: 'testAppDir1 testAppDir2'
|
|
};
|
|
|
|
preferences.prefs = {};
|
|
preferences.userPrefs = {};
|
|
preferences.preparePref();
|
|
assert.deepEqual(preferences.userPrefs, {
|
|
'b2g.system_manifest_url': 'app://system/manifest.webapp',
|
|
'b2g.neterror.url': 'app://system/net_error.html',
|
|
'b2g.system_startup_url': 'app://system/index.html',
|
|
'network.http.max-connections-per-server': 15,
|
|
'dom.mozInputMethod.enabled': true,
|
|
'intl.uidirection.ar-x-psbidi': 'rtl',
|
|
'layout.css.scroll-behavior.enabled': true,
|
|
'layout.css.sticky.enabled': true,
|
|
'ril.debugging.enabled': false,
|
|
'dom.mms.version': 0x11,
|
|
'b2g.wifi.allow_unsafe_wpa_eap': true
|
|
});
|
|
preferences.config.LOCAL_DOMAINS = '1';
|
|
preferences.preparePref();
|
|
assert.equal(cusPref, 'local');
|
|
delete preferences.config.LOCAL_DOMAINS;
|
|
preferences.config.DESKTOP = '1';
|
|
preferences.preparePref();
|
|
assert.equal(cusPref, 'desktop');
|
|
delete preferences.config.DESKTOP;
|
|
preferences.config.DEBUG = '1';
|
|
preferences.preparePref();
|
|
assert.equal(cusPref, 'debug');
|
|
delete preferences.config.DEBUG;
|
|
preferences.config.DEVICE_DEBUG = '1';
|
|
preferences.preparePref();
|
|
assert.equal(cusPref, 'device');
|
|
|
|
});
|
|
|
|
teardown(function() {
|
|
config = null;
|
|
preferences = null;
|
|
});
|
|
});
|
|
});
|