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:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
(function(exports){'use strict';var ActivityHandler={_readyPromise:null,_targetPanelId:null,_targetPanelOptions:null,_currentActivity:null,_handlers:{'configure':function ah_configureHandler(activitySource){var targetPanelId=activitySource.data.section||'root';var targetPanel=document.getElementById(targetPanelId);if(!targetPanel||targetPanel.tagName!=='SECTION'){var msg='Trying to open an non-existent section: '+targetPanelId;console.warn(msg);targetPanelId='root';targetPanel=document.getElementById(targetPanelId);}
|
||||
switch(targetPanelId){case'root':document.body.dataset.filterBy=activitySource.data.filterBy||'all';break;default:targetPanel.dataset.dialog=true;break;}
|
||||
return{targetPanelId:targetPanelId,options:activitySource.data.options};}},_handleActivity:function ah_handler(activitySource){var handle=this._handlers[activitySource.name];if(handle){var{targetPanelId,options}=handle(activitySource);this._targetPanelId=targetPanelId;this._targetPanelOptions=options;}},_registerListener:function ah_registerListener(){document.addEventListener('visibilitychange',function change(){if(document.hidden){document.removeEventListener('visibilitychange',change);if(this._currentActivity){this._currentActivity.postResult(null);}}}.bind(this));},get targetPanelId(){return this._targetPanelId;},get targetPanelOptions(){return this._targetPanelOptions;},ready:function ah_ready(){if(!this._readyPromise){this._readyPromise=new Promise((resolve)=>{navigator.mozSetMessageHandler('activity',(activity)=>{this._currentActivity=activity;this._handleActivity(this._currentActivity.source);this._registerListener();resolve();});});}
|
||||
return this._readyPromise;},postResult:function ah_postResult(result){return this.ready().then(()=>{if(this._currentActivity){this._currentActivity.postResult(result);}});}};exports.ActivityHandler=ActivityHandler;})(window);
|
||||
13
assets/webapps/settings.gaiamobile.org/js/dsds_settings.js
Normal file
13
assets/webapps/settings.gaiamobile.org/js/dsds_settings.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
window.DsdsSettings=(function(){var _settings=window.navigator.mozSettings;var _mobileConnections=null;if(window.navigator.mozMobileConnections){_mobileConnections=window.navigator.mozMobileConnections;}
|
||||
var _iccCardIndexForCallSettings=0;var _iccCardIndexForCellAndDataSettings=0;function ds_init(){if(!_settings||!_mobileConnections){return;}
|
||||
ds_handleDefaultIccCard();ds_handleCellAndDataSettingSimPanel();}
|
||||
function ds_getNumberOfIccSlots(){if(_mobileConnections){return _mobileConnections.length;}}
|
||||
function ds_getIccCardIndexForCallSettings(){return _iccCardIndexForCallSettings;}
|
||||
function ds_setIccCardIndexForCallSettings(iccCardIndexForCallSettings){_iccCardIndexForCallSettings=iccCardIndexForCallSettings;}
|
||||
function ds_getIccCardIndexForCellAndDataSettings(){return _iccCardIndexForCellAndDataSettings;}
|
||||
function ds_handleDefaultIccCard(){for(var i=0,len=_mobileConnections.length;i<len;i++){if(_mobileConnections[i].iccId!==null){ds_setIccCardIndexForCellAndDataSettings(i);break;}}}
|
||||
function ds_setIccCardIndexForCellAndDataSettings(iccCardIndexForCellAndDataSettings){_iccCardIndexForCellAndDataSettings=iccCardIndexForCellAndDataSettings;}
|
||||
function ds_handleCellAndDataSettingSimPanel(){var cellAndDataItem=null;if(ds_getNumberOfIccSlots()>1){cellAndDataItem=document.getElementById('menuItem-cellularAndData');if((_mobileConnections[0].radioState!=='enabled')||(!_mobileConnections[0].iccId&&!_mobileConnections[1].iccId)){return;}
|
||||
cellAndDataItem=document.getElementById('data-connectivity');cellAndDataItem.removeAttribute('aria-disabled');}}
|
||||
return{init:ds_init,getNumberOfIccSlots:ds_getNumberOfIccSlots,getIccCardIndexForCallSettings:ds_getIccCardIndexForCallSettings,setIccCardIndexForCallSettings:ds_setIccCardIndexForCallSettings,getIccCardIndexForCellAndDataSettings:ds_getIccCardIndexForCellAndDataSettings,setIccCardIndexForCellAndDataSettings:ds_setIccCardIndexForCellAndDataSettings};})();
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
var FxaMenu=(function fxa_menu(){var fxaHelper,menuStatus;function init(helper){fxaHelper=helper||FxAccountsIACHelper;menuStatus=document.getElementById('fxa-desc');if(window.VulpesCompat){menuStatus.removeAttribute('data-l10n-id');menuStatus.textContent=(document.documentElement.lang||navigator.language).startsWith('fr')?'Service non disponible sur ce bureau':'Service unavailable on this desktop';return;}onVisibilityChange();refreshStatus();document.addEventListener('visibilitychange',onVisibilityChange);}
|
||||
function refreshStatus(){fxaHelper.getAccount(onStatusChange,onStatusError);}
|
||||
function onStatusChange(e){var email=e?Normalizer.escapeHTML(e.email):'';if(!e){menuStatus.setAttribute('data-l10n-id','fxa-invitation');menuStatus.removeAttribute('data-l10n-args');}else if(e.verified){document.l10n.setAttributes(menuStatus,'fxa-logged-in-text',{email:email});}else{document.l10n.setAttributes(menuStatus,'fxa-confirm-email',{email:email});}}
|
||||
function onStatusError(err){console.error('FxaMenu: Error getting Firefox Account: '+err.error);}
|
||||
function onVisibilityChange(){if(document.hidden){fxaHelper.removeEventListener('onlogin',refreshStatus);fxaHelper.removeEventListener('onverified',refreshStatus);fxaHelper.removeEventListener('onlogout',refreshStatus);}else{fxaHelper.addEventListener('onlogin',refreshStatus);fxaHelper.addEventListener('onverified',refreshStatus);fxaHelper.addEventListener('onlogout',refreshStatus);refreshStatus();}}
|
||||
return{init:init};})();
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
require(['shared/lazy_loader'],function(LazyLoader){var idleObserver={time:4,onidle:function(){navigator.removeIdleObserver(idleObserver);LazyLoader.load(['/shared/js/fxa_iac_client.js','/shared/js/text_normalizer.js','js/firefox_accounts/menu.js'],function fxa_menu_loaded(){FxaMenu.init(FxAccountsIACHelper);});}};navigator.addIdleObserver(idleObserver);});
|
||||
123
assets/webapps/settings.gaiamobile.org/js/main.js
Normal file
123
assets/webapps/settings.gaiamobile.org/js/main.js
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
define(['require','modules/navigator/mozApps','modules/app','modules/apps_cache','modules/mvvm/observable_array','shared/addons/match_pattern'],function(require){'use strict';var mozApps=require('modules/navigator/mozApps');var App=require('modules/app');var AppsCache=require('modules/apps_cache');var ObservableArray=require('modules/mvvm/observable_array');var MatchPattern=require('shared/addons/match_pattern');function AddonManager(){this._addons=ObservableArray([]);this._bindEvents();AppsCache.apps().then((apps)=>{apps.some((app)=>{if(this._isAddon(app)){this._addons.push(App(app));}});});}
|
||||
AddonManager.prototype={_bindEvents:function(){var _boundUpdateAddons=this._updateAddons.bind(this);AppsCache.addEventListener('oninstall',(evt)=>{var app=evt&&evt.application;if(this._isAddon(app)){_boundUpdateAddons(evt);}else{app.addEventListener('downloadsuccess',_boundUpdateAddons);}});AppsCache.addEventListener('onuninstall',_boundUpdateAddons);mozApps.mgmt.addEventListener('enabledstatechange',_boundUpdateAddons);},_updateAddons:function(evt){var app=evt&&evt.application;var type=evt.type;var index;if(this._isAddon(app)){if((type==='downloadsuccess'||type==='install')&&!this._alreadyExists(app)){this._addons.push(App(app));}else if(type==='uninstall'){index=this._findAddonIndex(app);if(index!==-1){this._addons.splice(index,1);}}else if(type==='enabledstatechange'){index=this._findAddonIndex(app);if(index!==-1){this._addons.get(index)._enabled=app.enabled;}}}},_alreadyExists:function(addon){return this._findAddonIndex(addon)!==-1;},_findAddonIndex:function(addon){return this._addons.array.findIndex((elem)=>{return addon.manifestURL===elem.instance.manifestURL;});},_privilegeCheck:function(addon,app){var addonManifest=this._getManifest(addon);var appManifest=this._getManifest(app);return addonManifest.type===appManifest.type||addonManifest.type==='certified'||addonManifest.type==='privileged';},_getManifest:function(app){return app.manifest||app.updateManifest;},_needsReboot:function({app,contentScripts}){var manifest=this._getManifest(app);var role=manifest.role;if(role==='system'||role==='homescreen'){return contentScripts.some(c=>c.js.length>0);}else{return false;}},_needsRestart:function({app,contentScripts}){return contentScripts.some(c=>c.js.length>0);},_isAddon:function(app){var manifest=this._getManifest(app);return manifest&&manifest.role==='addon';},_getAffectedApps:function(addon){if(!this._isAddon(addon)){return Promise.reject('not an addon');}
|
||||
var manifest=this._getManifest(addon);var customizations=manifest&&manifest.customizations;var contentScripts=manifest&&manifest.content_scripts;if(customizations){return Promise.resolve([]);}
|
||||
if(!contentScripts||contentScripts.length===0){return Promise.resolve([]);}
|
||||
return AppsCache.apps().then(apps=>apps.filter(app=>{var manifest=this._getManifest(app);return manifest.role!=='addon'&&this._privilegeCheck(addon,app);})).then(apps=>{var matches=[];apps.forEach(app=>{var matched;if((matched=this._matchContentScripts(contentScripts,app))){matches.push({app:app,contentScripts:matched});}});return matches;}).catch(()=>[]);},_matchContentScripts:function(contentScripts,app){var manifest=this._getManifest(app);var launchPath=manifest.launch_path||'';var launchURL=new URL(launchPath,app.origin);var patterns=contentScripts.map(contentScript=>{return{matches:new MatchPattern(contentScript.matches),excludeMatches:new MatchPattern(contentScript.exclude_matches)};});var appliedContentScripts=[];for(var i=0;i<patterns.length;i++){var pattern=patterns[i];if(!pattern.excludeMatches.matches(launchURL)&&pattern.matches.matches(launchURL)){appliedContentScripts.push(contentScripts[i]);break;}}
|
||||
if(appliedContentScripts.length>0){return appliedContentScripts;}},_blobToArrayBuffer:function(blob){return new Promise(function(resolve,reject){var fileReader=new FileReader();fileReader.onload=function(){resolve(fileReader.result);};fileReader.onerror=function(reason){reject(reason);};fileReader.readAsArrayBuffer(blob);});},_unpackScript:function(arrayBuffer){return this._JSZip.then(JSZip=>{var zip=new JSZip();zip.load(arrayBuffer);var applicationZipFile=zip.file('application.zip');if(!applicationZipFile){return;}
|
||||
var applicationZip=new JSZip();applicationZip.load(applicationZipFile.asArrayBuffer());var scriptFile=applicationZip.file('main.js');if(!scriptFile){return;}
|
||||
return(scriptFile.asText());});},_generate:function(manifest,script){return this._JSZip.then(JSZip=>{var id='addon'+Math.round(Math.random()*100000000);var applicationZip=new JSZip();manifest.role='addon';manifest.type='certified';manifest.origin='app://'+id+'.gaiamobile.org';manifest.activities=manifest.activities||{};applicationZip.file('manifest.webapp',JSON.stringify(manifest));applicationZip.file('main.js',script);var packageZip=new JSZip();packageZip.file('metadata.json',JSON.stringify({installOrigin:'http://gaiamobile.org',manifestURL:'app://'+id+'.gaiamobile.org/update.webapp',version:1}));packageZip.file('update.webapp',JSON.stringify({name:manifest.name,package_path:'/application.zip'}));packageZip.file('application.zip',applicationZip.generate({type:'arraybuffer'}));return new Blob([packageZip.generate({type:'arraybuffer'})],{type:'application/zip'});});},get _JSZip(){return new Promise(resolve=>{require(['vendor/jszip'],resolve);});},_install:function(blob){return navigator.mozApps.mgmt.import(blob).then(addon=>{var app={instance:addon};this.enableAddon(app);return app;});},isEnabled:function(addon){return this._isAddon(addon.instance)&&addon.instance.enabled===true;},canDelete:function(addon){return this._isAddon(addon.instance)&&addon.instance.removable===true;},enableAddon:function(addon){if(this._isAddon(addon.instance)&&!addon.instance.enabled){mozApps.mgmt.setEnabled(addon.instance,true);}},disableAddon:function(addon){if(this._isAddon(addon.instance)&&addon.instance.enabled){mozApps.mgmt.setEnabled(addon.instance,false);}},deleteAddon:function(addon){if(!this._isAddon(addon.instance)){return Promise.reject('not an addon');}
|
||||
if(!addon.instance.removable){return Promise.reject('addon is not deletable');}
|
||||
return new Promise(function(resolve,reject){var request=mozApps.mgmt.uninstall(addon.instance);request.onsuccess=function(){resolve();};request.onerror=function(){reject();};});},renameAddon:function(addon,name){if(!name){return Promise.reject('no name given');}
|
||||
if(!this._isAddon(addon.instance)){return Promise.reject('not an addon');}
|
||||
var manifest=this._getManifest(addon.instance);if(name===manifest.name){return Promise.reject('name is unchanged');}
|
||||
var newManifest,addonBlob;return addon.instance.export().then(blob=>{addonBlob=blob;newManifest=Object.assign({},manifest);newManifest.name=name;return this.deleteAddon(addon);}).then(()=>{return this._blobToArrayBuffer(addonBlob);}).then(this._unpackScript.bind(this)).then(script=>{return this._generate(newManifest,script);}).then(this._install.bind(this));},shareAddon:function(addon){if(!this._isAddon(addon.instance)){return Promise.reject('not an addon');}
|
||||
return new Promise(function(resolve,reject){var activity=new window.MozActivity({name:'share',data:{type:'app',app:addon.instance.manifestURL}});activity.onsuccess=function(){resolve();};activity.onerror=function(){reject((activity.error&&activity.error.name)||'activity error');};});},getAddonTargets:function(addon){return this._getAffectedApps(addon.instance).then((affectedApps)=>{return affectedApps.map((x)=>x.app);});},getAddonDisableType:function(addon){return this._getAffectedApps(addon.instance).then((affectedApps)=>{var needsReboot=affectedApps.some(this._needsReboot.bind(this));if(needsReboot){return'reboot';}
|
||||
var needsRestart=affectedApps.some(this._needsRestart.bind(this));if(needsRestart){return'restart';}
|
||||
return'';});},findAddonByManifestURL:function(manifestURL){return AppsCache.apps().then(()=>{return this._addons.array.find((addon)=>{return addon.instance.manifestURL===manifestURL;});});},addonAffectsApp:function(addon,manifestURL){if(!manifestURL){return Promise.reject('No manifestURL given for an app');}
|
||||
if(!this._isAddon(addon.instance)){return Promise.reject('not an addon');}
|
||||
var manifest=this._getManifest(addon.instance);var customizations=manifest&&manifest.customizations;var contentScripts=manifest&&manifest.content_scripts;if(customizations){return Promise.resolve(false);}
|
||||
if(!contentScripts||contentScripts.length===0){return Promise.resolve(false);}
|
||||
return AppsCache.apps().then(apps=>apps.find(app=>app.manifestURL===manifestURL)).then(app=>app?this._matchContentScripts(contentScripts,app):undefined).then(appliedContentScripts=>!!appliedContentScripts).catch(()=>false);},get length(){return this._addons.length;},get addons(){return this._addons;}};return new AddonManager();});
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
define('modules/apn/apn_const',['require'],function(require){'use strict';var APN_TYPES=['default','mms','supl','dun','ims','fota'];var CP_APN_KEY='ril.data.cp.apns';var DEFAULT_APN_KEY='ril.data.default.apns';var CACHED_ICCIDS_KEY='apn.cached.iccids';var APN_LIST_KEY='apn.list';var APN_SELECTIONS_KEY='apn.selections';var APN_SETTINGS_KEY='ril.data.apnSettings';var DEFAULT_APN_SETTINGS_KEY='ril.data.default.apnSettings';var MCC_SETTINGS_KEY='operatorvariant.mcc';var MNC_SETTINGS_KEY='operatorvariant.mnc';var EU_ROAMING_ENABLED_KEY='eu-roaming.enabled';var EU_ROAMING_FILE_PATH='/resources/eu-roaming.json';var APN_PROPS=['carrier','apn','user','passwd','httpproxyhost','httpproxyport','mmsc','mmsproxy','mmsport','authtype','types','protocol','roaming_protocol','mtu','_id'];return{get APN_TYPES(){return APN_TYPES;},get CP_APN_KEY(){return CP_APN_KEY;},get DEFAULT_APN_KEY(){return DEFAULT_APN_KEY;},get CACHED_ICCIDS_KEY(){return CACHED_ICCIDS_KEY;},get APN_LIST_KEY(){return APN_LIST_KEY;},get APN_SELECTIONS_KEY(){return APN_SELECTIONS_KEY;},get APN_SETTINGS_KEY(){return APN_SETTINGS_KEY;},get DEFAULT_APN_SETTINGS_KEY(){return DEFAULT_APN_SETTINGS_KEY;},get MCC_SETTINGS_KEY(){return MCC_SETTINGS_KEY;},get MNC_SETTINGS_KEY(){return MNC_SETTINGS_KEY;},get EU_ROAMING_ENABLED_KEY(){return EU_ROAMING_ENABLED_KEY;},get EU_ROAMING_FILE_PATH(){return EU_ROAMING_FILE_PATH;},get APN_PROPS(){return APN_PROPS;}};});define('modules/apn/apn_item',['require'],function(require){'use strict';var APN_CATEGORY={PRESET:'preset',CUSTOM:'custom',EU:'eu'};function ApnItem(id,category,apn){this._id=id;this._category=category;this._apn=apn;}
|
||||
ApnItem.prototype={get id(){return this._id;},get category(){return this._category;},get apn(){return this._apn;}};var constructor=function ctor_apn_item(id,category,apn){return new ApnItem(id,category,apn);};constructor.APN_CATEGORY=APN_CATEGORY;return constructor;});define('modules/apn/apn_utils',['require','modules/settings_cache','shared/apn_helper','modules/apn/apn_const','modules/apn/apn_item','shared/lazy_loader'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var ApnHelper=require('shared/apn_helper');var ApnConst=require('modules/apn/apn_const');var ApnItem=require('modules/apn/apn_item');var LazyLoader=require('shared/lazy_loader');var CP_APN_KEY=ApnConst.CP_APN_KEY;var DEFAULT_APN_KEY=ApnConst.DEFAULT_APN_KEY;var MCC_SETTINGS_KEY=ApnConst.MCC_SETTINGS_KEY;var MNC_SETTINGS_KEY=ApnConst.MNC_SETTINGS_KEY;var APN_PROPS=ApnConst.APN_PROPS;var EU_ROAMING_FILE_PATH=ApnConst.EU_ROAMING_FILE_PATH;function _getOperatorCode(serviceId,type){var value;var key;if(type==='mcc'){value='000';key=MCC_SETTINGS_KEY;}else if(type==='mnc'){value='00';key=MNC_SETTINGS_KEY;}else{return Promise.reject('invalid type');}
|
||||
return new Promise(function(resolve,reject){SettingsCache.getSettings(function(results){var values=results[key];if(values&&Array.isArray(values)&&values[serviceId]){value=values[serviceId];}
|
||||
resolve(value);});});}
|
||||
function _apnTypeFilter(type,apnItem){if(!type||!apnItem||!apnItem.apn.types){return false;}else if(type==='*'){return true;}
|
||||
return apnItem.apn.types.indexOf(type)!=-1;}
|
||||
function _getDefaultApns(mcc,mnc,networkType){return new Promise(function(resolve,reject){SettingsCache.getSettings(function(results){var apns=results[DEFAULT_APN_KEY]||{};resolve(ApnHelper.getCompatible(apns,mcc,mnc,networkType));});});}
|
||||
function _getCpApns(mcc,mnc,networkType){return new Promise(function(resolve,reject){SettingsCache.getSettings(function(results){var apns=results[CP_APN_KEY]||{};resolve(ApnHelper.getCompatible(apns,mcc,mnc,networkType));});});}
|
||||
var _euApnChecked=false;var _euApns=null;function _getEuApns(){if(_euApnChecked){return Promise.resolve(_euApns);}else{return LazyLoader.getJSON(EU_ROAMING_FILE_PATH).then(function(result){_euApnChecked=true;if(result.home&&result.foreign&&Object.keys(result.home).length>0&&Object.keys(result.foreign).length>0){_euApns=result.defaultApns;}
|
||||
return _euApns;}).catch(function(){_euApnChecked=true;return null;});}}
|
||||
function _generateId(){return Math.random().toString(36).substr(2,9);}
|
||||
function _cloneApn(apn){var newApn={};for(var p in apn){newApn[p]=apn[p];}
|
||||
return newApn;}
|
||||
function _separateApnsByType(apns){if(!apns){return[];}
|
||||
return apns.reduce(function(result,apn){apn.types.forEach(function(type){var cloneApn=_cloneApn(apn);cloneApn.types=[type];result.push(cloneApn);});return result;},[]);}
|
||||
function _isMatchedApn(apn1,apn2){if(apn1==null||apn2==null){return false;}
|
||||
if(!apn1.types.every(function(type){return(apn2.types.indexOf(type)!==-1);})){return false;}
|
||||
return APN_PROPS.every(function(prop){if(prop==='types'){return true;}else{return apn1[prop]===apn2[prop];}});}
|
||||
function _sortByCategory(apn1,apn2){if(apn1.category===ApnItem.APN_CATEGORY.PRESET){return true;}else if(apn2.category===ApnItem.APN_CATEGORY.PRESET){return false;}else{return true;}}
|
||||
function _clone(apn){return JSON.parse(JSON.stringify(apn));}
|
||||
return{getOperatorCode:_getOperatorCode,apnTypeFilter:_apnTypeFilter,getDefaultApns:_getDefaultApns,getCpApns:_getCpApns,getEuApns:_getEuApns,generateId:_generateId,separateApnsByType:_separateApnsByType,isMatchedApn:_isMatchedApn,sortByCategory:_sortByCategory,clone:_clone};});define('modules/apn/apn_settings',['require','modules/settings_cache','modules/apn/apn_utils','modules/apn/apn_const'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var ApnUtils=require('modules/apn/apn_utils');var ApnConst=require('modules/apn/apn_const');var APN_SETTINGS_KEY=ApnConst.APN_SETTINGS_KEY;var DEFAULT_APN_SETTINGS_KEY=ApnConst.DEFAULT_APN_SETTINGS_KEY;function ApnSettings(){this._isReady=false;this._readyPromise=null;this._isWritingDB=false;this._isDirty=false;this._apnSettings=null;this._promiseChain=Promise.resolve();}
|
||||
ApnSettings.prototype={_schedule:function al__schedule(task){var that=this;this._promiseChain=this._promiseChain.then(function(){return task().then(function(){return that._commit();});});return this._promiseChain;},_commit:function al__commit(){if(!this._isDirty){return Promise.resolve();}
|
||||
var that=this;return new Promise(function(resolve){that._isWritingDB=true;var obj={};obj[APN_SETTINGS_KEY]=that._apnSettings;var req=navigator.mozSettings.createLock().set(obj);req.onsuccess=req.onerror=function(){that._isDirty=false;that._isWritingDB=false;resolve();};});},_addObservers:function as__registerListeners(){var mozSettings=window.navigator.mozSettings;if(!mozSettings){return;}
|
||||
mozSettings.addObserver(APN_SETTINGS_KEY,function(event){if(!this._isWritingDB){this._apnSettings=event.settingValue||[];}}.bind(this));},_ready:function as__ready(){if(this._isReady){return Promise.resolve();}else{if(!this._readyPromise){var that=this;this._readyPromise=new Promise(function(resolve){SettingsCache.getSettings(function(results){that._isReady=true;that._apnSettings=results[APN_SETTINGS_KEY]||[];that._addObservers();resolve();});});}
|
||||
return this._readyPromise;}},_update:function as__update(serviceId,apnType,newApn){return this._ready().then(function(){var apns=this._apnSettings[serviceId];if(!apns){apns=this._apnSettings[serviceId]=[];}
|
||||
var index=apns.findIndex(function(apn){return apn.types.some((type)=>apnType===type);});if(index===-1){if(newApn){this._isDirty=true;apns.push(newApn);}}else{if(newApn){if(!ApnUtils.isMatchedApn(apns[index],newApn)){this._isDirty=true;apns[index]=newApn;}}else{this._isDirty=true;apns.splice(index,1);}}}.bind(this));},getAll:function as_getAll(serviceId){return this._ready().then(function(){return this._apnSettings[serviceId];}.bind(this));},get:function as_get(serviceId,apnType){return this._ready().then(function(){var apns=this._apnSettings[serviceId];if(apns){return apns.find((apn)=>apn.types.indexOf(apnType)>=0);}else{return null;}}.bind(this));},update:function as_update(serviceId,apnType,apn){var apnClone=ApnUtils.clone(apn);return this._schedule(this._update.bind(this,serviceId,apnType,apnClone));},restore:function as_restore(serviceId){var that=this;return this._ready().then(function(){return new Promise(function(resolve){SettingsCache.getSettings(function(results){resolve(results[DEFAULT_APN_SETTINGS_KEY]||[]);});});}).then(function(defaultApnSettings){return that._schedule(function(){that._isDirty=true;that._apnSettings[serviceId]=defaultApnSettings[serviceId];return Promise.resolve();});});}};return function ctor_apn_settings(){return new ApnSettings();};});define('modules/apn/apn_list',['require','modules/async_storage','modules/apn/apn_utils','modules/apn/apn_item'],function(require){'use strict';var AsyncStorage=require('modules/async_storage');var ApnUtils=require('modules/apn/apn_utils');var ApnItem=require('modules/apn/apn_item');function ApnList(key){this._key=key;this._apnItems=null;this._pendingTaskCount=0;this._promiseChain=Promise.resolve();}
|
||||
ApnList.prototype={_schedule:function al__schedule(task){var that=this;this._promiseChain=this._promiseChain.then(function(){that._pendingTaskCount++;return task().then(function(result){that._pendingTaskCount--;if(that._pendingTaskCount===0){return that._commit().then(function(){return result;});}else{return result;}});});return this._promiseChain;},_export:function al__export(){return this._apnItems.map(function(apnItem){var apnClone=ApnUtils.clone(apnItem.apn);apnClone.id=apnItem.id;apnClone.category=apnItem.category;return apnClone;});},_commit:function al__commit(){if(!this._apnItems){return Promise.resolve();}else{var apns=this._export();return AsyncStorage.setItem(this._key,apns);}},_add:function al__add(apn,category){return this.items().then(function(apnItems){if(!apnItems){this._apnItems=apnItems=[];}
|
||||
category=category||ApnItem.APN_CATEGORY.CUSTOM;if(category===ApnItem.APN_CATEGORY.CUSTOM){apn.carrier='_custom_';}
|
||||
var apnItem=ApnItem(ApnUtils.generateId(),category,apn);apnItems.unshift(apnItem);return apnItem.id;}.bind(this));},_remove:function al__remove(id){return this.items().then(function(apnItems){if(!apnItems){return Promise.reject('no apn items');}
|
||||
var index=apnItems.findIndex((apnItem)=>apnItem.id===id);if(index>=0){apnItems=apnItems.splice(index,1);}else{return Promise.reject('apn not found');}}.bind(this));},_update:function al__update(id,apn){return this.items().then(function(apnItems){if(!apnItems){return Promise.reject('no apn items');}
|
||||
var index=apnItems.findIndex((apnItem)=>apnItem.id===id);if(index>=0){var currentApn=apnItems[index].apn;for(var p in apn){if(p==='id'||p==='category'){continue;}
|
||||
currentApn[p]=apn[p];}}else{return Promise.reject('apn not found');}}.bind(this));},items:function al_items(){if(this._apnItems){return Promise.resolve(this._apnItems);}else{return AsyncStorage.getItem(this._key).then(function(apns){if(apns){this._apnItems=apns.map(function(apn){return ApnItem(apn.id,apn.category,apn);});return this._apnItems;}else{return null;}}.bind(this));}},item:function al_item(id){return this.items().then(function(apnItems){if(!apnItems||!id){return null;}else{return apnItems.find((apnItem)=>apnItem.id===id);}});},add:function al_apns(apn,category){var apnClone=ApnUtils.clone(apn);return this._schedule(this._add.bind(this,apnClone,category));},remove:function al_remove(id){return this._schedule(this._remove.bind(this,id));},update:function al_update(id,apn){var apnClone=ApnUtils.clone(apn);return this._schedule(this._update.bind(this,id,apnClone));}};return function ctor_apn_list(key){return new ApnList(key);};});define('modules/apn/apn_selections',['require','modules/mvvm/observable','modules/settings_cache','modules/apn/apn_const'],function(require){'use strict';var Observable=require('modules/mvvm/observable');var SettingsCache=require('modules/settings_cache');var ApnConst=require('modules/apn/apn_const');var ICC_COUNT=navigator.mozMobileConnections.length;var APN_TYPES=ApnConst.APN_TYPES;var APN_SELECTIONS_KEY=ApnConst.APN_SELECTIONS_KEY;function ApnSelections(){this._readyPromise=null;this._apnSelections=[];}
|
||||
ApnSelections.prototype={_export:function as__export(){return this._apnSelections.map(function(apnSelection){var obj={};APN_TYPES.forEach(function(apnType){obj[apnType]=apnSelection[apnType];});return obj;});},_commit:function as__commit(){return new Promise(function(resolve){var obj={};obj[APN_SELECTIONS_KEY]=this._export();var req=navigator.mozSettings.createLock().set(obj);req.onsuccess=function(){resolve();};req.onerror=function(){console.error('write apn selections failed');resolve();};}.bind(this));},_observeApnSelections:function as__observeApnSelections(apnSelection){APN_TYPES.forEach(function(apnType){apnSelection.observe(apnType,this._commit.bind(this));},this);},_createEmptySelections:function as__createEmptySelections(){var emptySelections=[];var emptySelection={};APN_TYPES.forEach((apnType)=>emptySelection[apnType]=null);for(var i=0;i<ICC_COUNT;i++){emptySelections.push(emptySelection);}
|
||||
return new Promise(function(resolve,reject){var obj={};obj[APN_SELECTIONS_KEY]=emptySelections;var req=navigator.mozSettings.createLock().set(obj);req.onsuccess=req.onerror=function(){resolve(emptySelections);};}.bind(this));},_ready:function as__ready(){if(!this._readyPromise){var that=this;this._readyPromise=new Promise(function(resolve){SettingsCache.getSettings(function(results){resolve(results[APN_SELECTIONS_KEY]);});}).then(function(apnSelections){if(apnSelections){return apnSelections;}else{return that._createEmptySelections();}}).then(function(apnSelections){apnSelections.forEach(function(selection,index){var observableApnSelection=Observable(selection);that._observeApnSelections(observableApnSelection);that._apnSelections[index]=observableApnSelection;});navigator.mozSettings.addObserver(APN_SELECTIONS_KEY,function(event){if(event.settingValue===null){that._readyPromise=null;}});});}
|
||||
return this._readyPromise;},get:function as_get(serviceId){return this._ready().then(function(){return this._apnSelections[serviceId];}.bind(this));},clear:function as_clear(serviceId){var apnSelection=this._apnSelections[serviceId];if(!apnSelection){return Promise.resolve();}
|
||||
return this._ready().then(function(){APN_TYPES.forEach(function(apnType){apnSelection[apnType]=null;});});}};return function(){return new ApnSelections();};});define('modules/apn/apn_settings_manager',['require','modules/async_storage','modules/apn/apn_const','modules/apn/apn_utils','modules/apn/apn_item','modules/apn/apn_settings','modules/apn/apn_list','modules/apn/apn_selections'],function(require){'use strict';var AsyncStorage=require('modules/async_storage');var ApnConst=require('modules/apn/apn_const');var ApnUtils=require('modules/apn/apn_utils');var ApnItem=require('modules/apn/apn_item');var ApnSettings=require('modules/apn/apn_settings');var ApnList=require('modules/apn/apn_list');var ApnSelections=require('modules/apn/apn_selections');var APN_TYPES=ApnConst.APN_TYPES;var APN_LIST_KEY=ApnConst.APN_LIST_KEY;var CACHED_ICCIDS_KEY=ApnConst.CACHED_ICCIDS_KEY;var RESTORE_MODE={ALL:0,ONLY_APN_ITEMS:1,};function ApnSettingsManager(){this._apnLists={};this._apnSelections=ApnSelections();this._apnSettings=ApnSettings();this._readyPromises={};Object.defineProperty(this,'RESTORE_MODE',{configurable:false,get:function(){return RESTORE_MODE;}});}
|
||||
ApnSettingsManager.prototype={_ready:function asc_fromItems(serviceId){if(!this._readyPromises[serviceId]){this._readyPromises[serviceId]=AsyncStorage.getItem(CACHED_ICCIDS_KEY).then((cachedIccIds)=>{var cachedIccId=cachedIccIds&&cachedIccIds[serviceId];var curIccId=navigator.mozMobileConnections[serviceId].iccId;if(!curIccId||curIccId===cachedIccId){return;}
|
||||
cachedIccIds=cachedIccIds||{};cachedIccIds[serviceId]=curIccId;return Promise.all([this.restore(serviceId,RESTORE_MODE.ONLY_APN_ITEMS),AsyncStorage.setItem(CACHED_ICCIDS_KEY,cachedIccIds)]);});}
|
||||
return this._readyPromises[serviceId];},_deriveActiveApnIdFromItems:function asc_fromItems(serviceId,apnType){return this._apnItems(serviceId,apnType).then(function(apnItems){if(apnItems.length){return apnItems.sort(ApnUtils.sortByCategory)[0].id;}else{return null;}});},_deriveActiveApnIdFromSettings:function asc_deriveFromSettings(serviceId,apnType){return Promise.all([this._apnItems(serviceId,apnType),this._apnSettings.get(serviceId,apnType)]).then(function(results){var apnItems=results[0];var apnInUse=results[1];if(apnInUse){var matchedApnItem=apnItems.find(function(apnItem){return ApnUtils.isMatchedApn(apnItem.apn,apnInUse);});if(matchedApnItem){return matchedApnItem.id;}else{var category=(apnInUse.carrier==='_custom_')?ApnItem.APN_CATEGORY.CUSTOM:ApnItem.APN_CATEGORY.PRESET;return this.addApn(serviceId,apnInUse,category);}}else{return null;}}.bind(this));},_getApnAppliedType:function asc_getApnAppliedType(serviceId,apnId){return this._apnSelections.get(serviceId).then(function(apnSelection){return APN_TYPES.find((apnType)=>apnSelection[apnType]===apnId);}.bind(this));},_storeApnSettingByType:function asc_storeApnByType(serviceId,apnType){return this._apnSelections.get(serviceId).then(function(apnSelection){var apnList=this._apnList(serviceId);var apnId=apnSelection[apnType];if(apnId){return apnList.item(apnId);}}.bind(this)).then(function(apnItem){if(apnItem){return this._apnSettings.update(serviceId,apnType,apnItem.apn);}else{return this._apnSettings.update(serviceId,apnType,null);}}.bind(this));},_apnList:function asc_apnList(serviceId){var apnList=this._apnLists[serviceId];if(!apnList){this._apnLists[serviceId]=apnList=ApnList(APN_LIST_KEY+serviceId);}
|
||||
return apnList;},_apnItems:function asc_apnItems(serviceId,apnType){return this._ready(serviceId).then(()=>{return this._apnList(serviceId).items();}).then((apnItems)=>{return apnItems&&apnItems.filter(ApnUtils.apnTypeFilter.bind(null,apnType))||[];});},_restoreApnItemsOfCategory:function asc_restoreApnItems(apnList,apnsForRestoring,category){return apnList.items().then(function(apnItems){apnItems=apnItems||[];var promises=[];apnItems.filter(function(apnItem){if(apnItem.category===category){return true;}}).forEach(function(apnItem){promises.push(apnList.remove(apnItem.id));});return Promise.all(promises);}).then(function(){var promises=[];apnsForRestoring.forEach(function(apns){promises.push(apnList.add(apns,category));});return Promise.all(promises);});},restore:function asc_restore(serviceId,mode){var mobileConnection=navigator.mozMobileConnections[serviceId];var networkType=mobileConnection.data.type;var apnList=this._apnList(serviceId);var that=this;return Promise.all([ApnUtils.getOperatorCode(serviceId,'mcc'),ApnUtils.getOperatorCode(serviceId,'mnc')]).then(function(values){var mcc=values[0];var mnc=values[1];return Promise.all([ApnUtils.getEuApns(),ApnUtils.getDefaultApns(mcc,mnc,networkType),ApnUtils.getCpApns(mcc,mnc,networkType)]);}).then(function(results){var euApns=ApnUtils.separateApnsByType(results[0]);var presetApns=ApnUtils.separateApnsByType(Array.prototype.concat.apply([],results.slice(1)));return that._restoreApnItemsOfCategory(apnList,euApns,ApnItem.APN_CATEGORY.EU).then(function(){return that._restoreApnItemsOfCategory(apnList,presetApns,ApnItem.APN_CATEGORY.PRESET);});}).then(function(){return that._apnSelections.clear(serviceId);}).then(function(){if(mode!==RESTORE_MODE.ONLY_APN_ITEMS){return that._apnSettings.restore(serviceId);}});},queryApns:function asc_queryApns(serviceId,apnType){return this.getActiveApnId(serviceId,apnType).then(function(activeApnId){return this._apnItems(serviceId,apnType).then(function(items){items.forEach(function(apnItem){apnItem.active=(apnItem.id===activeApnId);});return items;});}.bind(this));},addApn:function asc_addApn(serviceId,apn,category){return this._ready(serviceId).then(()=>{return this._apnList(serviceId).add(apn,category||ApnItem.APN_CATEGORY.CUSTOM);});},removeApn:function asc_removeApn(serviceId,id){return this._ready(serviceId).then(()=>{return this._apnList(serviceId).remove(id);}).then(()=>{return this._getApnAppliedType(serviceId,id);}).then((matchedApnType)=>{if(matchedApnType){return this._deriveActiveApnIdFromItems(serviceId,matchedApnType).then((activeApnId)=>{return this.setActiveApnId(serviceId,matchedApnType,activeApnId);});}});},updateApn:function asc_updateApn(serviceId,id,apn){return this._ready(serviceId).then(()=>{return this._apnList(serviceId).update(id,apn);}).then(()=>{return this._getApnAppliedType(serviceId,id);}).then((matchedApnType)=>{if(matchedApnType){return this._storeApnSettingByType(serviceId,matchedApnType);}});},getActiveApnId:function asc_getActiveApnId(serviceId,apnType){var that=this;return this._ready(serviceId).then(function(){return that._apnSelections.get(serviceId);}).then(function(apnSelection){return apnSelection&&apnSelection[apnType];}).then(function(activeApnId){if(activeApnId){return activeApnId;}else{return that._deriveActiveApnIdFromSettings(serviceId,apnType).then(function(apnId){that.setActiveApnId(serviceId,apnType,apnId);return apnId;});}}).then(function(activeApnId){if(activeApnId){return activeApnId;}else{return that._deriveActiveApnIdFromItems(serviceId,apnType).then(function(apnId){that.setActiveApnId(serviceId,apnType,apnId);return apnId;});}});},setActiveApnId:function asc_setActiveApnId(serviceId,apnType,id){return this._ready(serviceId).then(()=>{return this._apnSelections.get(serviceId);}).then((apnSelection)=>{if(apnSelection[apnType]!==id){apnSelection[apnType]=id;return this._storeApnSettingByType(serviceId,apnType);}});}};return new ApnSettingsManager();});
|
||||
2
assets/webapps/settings.gaiamobile.org/js/modules/app.js
Normal file
2
assets/webapps/settings.gaiamobile.org/js/modules/app.js
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var App=Module.create(function App(app){this.super(Observable).call(this);this._app=app;this._enabled=app.enabled;}).extend(Observable);Observable.defineObservableProperty(App.prototype,'enabled',{readonly:true});Object.defineProperty(App.prototype,'instance',{enumerable:true,get:function(){return this._app;}});return App;});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var AppStorage=Module.create(function AppStorage(){this.super(Observable).call(this);this._appStorage=navigator.getDeviceStorage('apps');this._attachListeners();this._getSpaceInfo();}).extend(Observable);Observable.defineObservableProperty(AppStorage.prototype,'usedPercentage',{readonly:true,value:0});Observable.defineObservableProperty(AppStorage.prototype,'totalSize',{readonly:true,value:0});Observable.defineObservableProperty(AppStorage.prototype,'usedSize',{readonly:true,value:0});Observable.defineObservableProperty(AppStorage.prototype,'freeSize',{readonly:true,value:0});AppStorage.prototype.updateInfo=function as_updateInfo(){this._getSpaceInfo();};AppStorage.prototype._attachListeners=function as_attachListeners(){this._appStorage.addEventListener('change',this);};AppStorage.prototype.handleEvent=function as_handler(evt){switch(evt.type){case'change':this._getSpaceInfo();break;}};AppStorage.prototype._getSpaceInfo=function as_getSpaceInfo(){var deviceStorage=this._appStorage;if(!deviceStorage){console.error('Cannot get DeviceStorage for: app');return;}
|
||||
deviceStorage.freeSpace().onsuccess=(e)=>{this._freeSize=e.target.result;deviceStorage.usedSpace().onsuccess=(e)=>{this._usedSize=e.target.result;this._totalSize=this._usedSize+this._freeSize;var usedPercentage=(this._totalSize===0)?0:(this._usedSize*100/this._totalSize);if(usedPercentage>100){usedPercentage=100;}
|
||||
this._usedPercentage=usedPercentage;};};};return AppStorage();});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require'],function(require){'use strict';var mozApps=window.navigator.mozApps;var mozAppsMgmt=mozApps&&mozApps.mgmt;var AppsCache=function(){this._initPromise=null;this._apps=[];this._eventHandlers={};this._eventHandlers.oninstall=[];this._eventHandlers.onuninstall=[];};AppsCache.prototype={apps:function am_apps(){var self=this;return this._init().then(function(){return self._apps;});},_init:function am__init(){var self=this;if(!this._initPromise){this._initPromise=this._initApps().then(function(){self._initEvents();});}
|
||||
return this._initPromise;},_initEvents:function am__initEvents(){var self=this;mozAppsMgmt.oninstall=function(evt){var newApp=evt.application;var existing=false;self._apps.some((app,i)=>{if(app.manifestURL===newApp.manifestURL){self._apps[i]=newApp;existing=true;return true;}});if(!existing){self._apps.push(newApp);}
|
||||
self._eventHandlers.oninstall.forEach(function(eventHandler){eventHandler(evt);});};mozAppsMgmt.onuninstall=function(evt){var manifestURL=evt.application.manifestURL;var appRemoved=false;self._apps=self._apps.filter(app=>{if(app.manifestURL===manifestURL){appRemoved=true;return false;}
|
||||
return true;});if(appRemoved){self._eventHandlers.onuninstall.forEach(function(eventHandler){eventHandler(evt);});}};},_initApps:function am__initApps(){var self=this;var promise=new Promise(function(resolve,reject){var req=mozAppsMgmt.getAll();req.onsuccess=function success(evt){self._apps=evt.target.result;resolve(self._apps);};req.onerror=function error(evt){console.log('failed to get installed apps');reject(req.error);};});return promise;},addEventListener:function am_addEventListener(eventName,callback){if(this._eventHandlers[eventName]){this._eventHandlers[eventName].push(callback);}},removeEventListener:function am_removeEventListener(eventName,callback){if(this._eventHandlers[eventName]){var index=this._eventHandlers[eventName].indexOf(callback);if(index>=0){this._eventHandlers[eventName].splice(index,1);}}},};var appsCache=new AppsCache();return appsCache;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','shared/async_storage'],function(require){'use strict';var AsyncStorage=require('shared/async_storage');return{getItem:function as_getItem(key){return new Promise(function(resolve,reject){AsyncStorage.getItem(key,resolve);});},setItem:function as_setItem(key,value){return new Promise(function(resolve,reject){AsyncStorage.setItem(key,value,resolve);});}};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/defer','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var Defer=require('modules/defer');var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var TaskScheduler=Module.create(function TaskScheduler(){this.super(Observable).call(this);this.isLocked=false;this._tasks=[];}).extend(Observable);Observable.defineObservableProperty(TaskScheduler.prototype,'isLocked',{value:false});const TASK_TYPE={GENERAL:0};Object.defineProperty(TaskScheduler,'TASK_TYPE',{enumerable:true,configurable:false,get:function(){return TASK_TYPE;}});TaskScheduler.prototype._lock=function(){this.isLocked=true;};TaskScheduler.prototype._unlock=function(){this.isLocked=false;this._executeNextTask();};TaskScheduler.prototype._removeRedundantTasks=function(type){return this._tasks.filter((task)=>{if(!task.cancelable){return true;}else{return task.type!==type;}});};TaskScheduler.prototype._executeNextTask=function(){if(this.isLocked){return;}
|
||||
var nextTask=this._tasks.shift();if(nextTask){this._lock();return nextTask.func().then((result)=>{nextTask.defer.resolve(result);this._unlock();},()=>{nextTask.defer.reject();this._unlock();});}};TaskScheduler.prototype.enqueue=function(task){var defer=Defer();if(!task.func){return Promise.resolve();}
|
||||
if(!task.type){task=Object.assign({},task);task.type=TaskScheduler.TASK_TYPE.GENERAL;}
|
||||
task.defer=defer;this._tasks=this._removeRedundantTasks(task.type);this._tasks.push(task);this._executeNextTask();return defer.promise;};return TaskScheduler;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/navigator/battery','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var NavigatorBattery=require('modules/navigator/battery');var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var Battery=Module.create(function Battery(){this.super(Observable).call(this);this._level=this._getLevel();this._state=this._getState();this._chargingTime=this._getChargingTime();this._dischargingTime=this._getDischargingTime();NavigatorBattery.addEventListener('levelchange',()=>{this._level=this._getLevel();});NavigatorBattery.addEventListener('chargingchange',()=>{this._state=this._getState();this._chargingTime=this._getChargingTime();this._dischargingTime=this._getDischargingTime();});NavigatorBattery.addEventListener('chargingtimechange',()=>{this._chargingTime=this._getChargingTime();});NavigatorBattery.addEventListener('dischargingtimechange',()=>{this._dischargingTime=this._getDischargingTime();});}).extend(Observable);Observable.defineObservableProperty(Battery.prototype,'level',{readonly:true,value:''});Observable.defineObservableProperty(Battery.prototype,'state',{readonly:true,value:''});Observable.defineObservableProperty(Battery.prototype,'chargingTime',{readonly:true,value:''});Observable.defineObservableProperty(Battery.prototype,'dischargingTime',{readonly:true,value:''});Battery.prototype._getLevel=function(){return Math.min(100,Math.round(NavigatorBattery.level*100));};Battery.prototype._getState=function(){if(NavigatorBattery.charging){return(this._getLevel()==100)?'charged':'charging';}else{return'unplugged';}};Battery.prototype._getChargingTime=function(){return NavigatorBattery.chargingTime;};Battery.prototype._getDischargingTime=function(){return NavigatorBattery.dischargingTime;};return Battery();});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/navigator/mozBluetooth','modules/mvvm/observable'],function(require){'use strict';var NavigatorBluetooth=require('modules/navigator/mozBluetooth');var Observable=require('modules/mvvm/observable');var _debug=false;var debug=function(){};if(_debug){debug=function btam_debug(msg){console.log('--> [BluetoothAdapterManager]: '+msg);};}
|
||||
var BluetoothAdapterManager={defaultAdapter:null,_init:function btam__init(){if(!NavigatorBluetooth){return;}
|
||||
this._watchMozBluetoothAttributechanged();this._initDefaultAdapter();},_watchMozBluetoothAttributechanged:function btam__watchMozBluetoothAttributechanged(){NavigatorBluetooth.addEventListener('attributechanged',(evt)=>{for(var i in evt.attrs){switch(evt.attrs[i]){case'defaultAdapter':this.defaultAdapter=NavigatorBluetooth.defaultAdapter;debug('_watchMozBluetoothAttributechanged(): '+'this.defaultAdapter = '+this.defaultAdapter);break;default:break;}}});},_initDefaultAdapter:function btam__initDefaultAdapter(){this.defaultAdapter=NavigatorBluetooth.defaultAdapter;debug('_initDefaultAdapter(): this.defaultAdapter = '+
|
||||
this.defaultAdapter);}};var bluetoothAdapterManager=Observable(BluetoothAdapterManager);bluetoothAdapterManager._init();return bluetoothAdapterManager;});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define([],function(){'use strict';var _debug=false;var debug=function(){};if(_debug){debug=function btcodm_debug(msg){console.log('--> [BluetoothCODMapper]: '+msg);};}
|
||||
var MinorDeviceClasses={Computer:{0:'computer',1:'computer',2:'computer',3:'computer',4:'pda',5:'pda',6:'computer',7:'computer',reserved:'computer'},Phone:{0:'phone',1:'phone',2:'phone',3:'phone',4:'modem',5:'phone',reserved:'phone'},AudioVideo:{0:'audio-card',1:'audio-card',2:'audio-card',4:'audio-input-microphone',5:'audio-card',6:'audio-card',7:'audio-card',8:'audio-card',9:'audio-card',10:'audio-card',11:'camera-video',12:'camera-video',13:'camera-video',14:'video-display',15:'video-display',16:'video-display',18:'audio-card',reserved:'audio-card'},Peripheral:{1:'input-gaming',2:'input-gaming',16:'input-keyboard',17:'input-keyboard',18:'input-keyboard',19:'input-keyboard',20:'input-keyboard',21:'input-keyboard',22:'input-keyboard',23:'input-keyboard',24:'input-keyboard',25:'input-keyboard',26:'input-keyboard',27:'input-keyboard',28:'input-keyboard',29:'input-keyboard',30:'input-keyboard',31:'input-keyboard',32:'input-mouse',33:'input-mouse',34:'input-mouse',35:'input-mouse',36:'input-mouse',37:'input-tablet',38:'input-mouse',39:'input-mouse',40:'input-mouse',41:'input-mouse',42:'input-mouse',43:'input-mouse',44:'input-mouse',45:'input-mouse',46:'input-mouse',47:'input-mouse'},Imaging:{4:'video-display',8:'camera-photo',16:'scanner',32:'printer'}};var MajorDeviceClasses={1:MinorDeviceClasses.Computer,2:MinorDeviceClasses.Phone,3:'network-wireless',4:MinorDeviceClasses.AudioVideo,5:MinorDeviceClasses.Peripheral,6:MinorDeviceClasses.Imaging};var BluetoothClassOfDeviceMapper={getDeviceType:function btcodm_getDeviceType(cod){debug('cod.majorDeviceClass = '+cod.majorDeviceClass);debug('cod.majorServiceClass = '+cod.majorServiceClass);debug('cod.minorDeviceClass = '+cod.minorDeviceClass);var deviceType='';var majorDeviceClass=MajorDeviceClasses[cod.majorDeviceClass];debug('majorDeviceClass = '+majorDeviceClass);if(typeof(majorDeviceClass)==='object'){deviceType=majorDeviceClass[cod.minorDeviceClass]||majorDeviceClass.reserved||'';debug('return in minor class, type = '+deviceType);return deviceType;}else if(typeof(majorDeviceClass)==='string'){debug('return in major class, type = network-wireless');return majorDeviceClass;}else if(cod.majorServiceClass&0x100){deviceType='audio-card';debug('return in major service class, type = audio-card');return deviceType;}else{debug('not mapping in any class, return type = '+deviceType);return deviceType;}}};return BluetoothClassOfDeviceMapper;});
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
define(['require','modules/bluetooth/bluetooth_adapter_manager','shared/async_storage'],function(require){'use strict';var AdapterManager=require('modules/bluetooth/bluetooth_adapter_manager');var AsyncStorage=require('shared/async_storage');var _debug=false;var debug=function(){};if(_debug){debug=function btam_debug(msg){console.log('--> [BluetoothConnectionManager]: '+msg);};}
|
||||
var BluetoothConnectionManager={Profiles:{'hfp':0x111E,'a2dp':0x110D},connectingAddress:null,_connectedDevicesInfo:{},_getConnectedDevicesPromise:null,_listeners:{'connecting':[],'connected':[],'disconnected':[],'profileChanged':[]},_defaultAdapter:null,_init:function btcm__init(){AdapterManager.observe('defaultAdapter',this._onDefaultAdapterChanged.bind(this));this._onDefaultAdapterChanged(AdapterManager.defaultAdapter);},_onDefaultAdapterChanged:function btcm__onDefaultAdapterChanged(newAdapter,oldAdapter){debug('_onDefaultAdapterChanged(): newAdapter = '+newAdapter);debug('_onDefaultAdapterChanged(): oldAdapter = '+oldAdapter);this._defaultAdapter=newAdapter;if(oldAdapter){this._unwatchProfilesStatuschanged(oldAdapter);this._unwatchDefaultAdapterOnattributechanged(oldAdapter);}
|
||||
if(newAdapter){this._watchProfilesStatuschanged(newAdapter);this._watchDefaultAdapterOnattributechanged(newAdapter);if(newAdapter.state==='enabled'){this._restoreConnection();}}else{this._resetConnectionInfo();}},getConnectedDevices:function btcm_getConnectedDevices(){if(!this._getConnectedDevicesPromise){this._getConnectedDevicesPromise=this._initConnectedDevicesInfo().then(()=>{debug('getConnectedDevices(): resolved with latest cache = '+
|
||||
JSON.stringify(this._connectedDevicesInfo));return this._connectedDevicesInfo;},(reason)=>{debug('getConnectedDevices(): rejected with reason = '+reason);this._getConnectedDevicesPromise=null;});}
|
||||
return this._getConnectedDevicesPromise;},_initConnectedDevicesInfo:function btcm__initConnectedDevicesInfo(){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._getConnectedDevicesFromPlatform().then((connectedDevicesByProfile)=>{this._constructDeviceItemsMap(connectedDevicesByProfile);},(reason)=>{debug('_initConnectedDevicesInfo(): rejected in '+'_getConnectedDevicesFromPlatform');return Promise.reject(reason);});},_constructDeviceItemsMap:function btcm__constructDeviceItemsMap(connectedDevices){debug('_constructDeviceItemsMap(): connectedDevices = '+
|
||||
JSON.stringify(connectedDevices));if(!connectedDevices){debug('_constructDeviceItemsMap(): early return with empty object');return;}
|
||||
Object.keys(this.Profiles).map((profileID)=>{connectedDevices[profileID].forEach((connectedDevice)=>{var connectionDeviceInfo={address:connectedDevice.address,connected:true,profileID:profileID,device:connectedDevice};debug('_constructDeviceItemsMap(): connectionDeviceInfo = '+
|
||||
JSON.stringify(connectionDeviceInfo));this._initConnectedDevicesCache(connectionDeviceInfo);});});},_initConnectedDevicesCache:function btcm__initConnectedDevicesCache(options){debug('_initConnectedDevicesCache(): options = '+
|
||||
JSON.stringify(options));var info=this._connectedDevicesInfo[options.address];if(info){info.connectedProfiles[options.profileID]=options.connected;}else{var connectedDevice=(options.device)?options.device:null;info={'device':connectedDevice,'connectedProfiles':{}};info.connectedProfiles[options.profileID]=options.connected;}
|
||||
this._connectedDevicesInfo[options.address]=info;var dataToCheckConnectedProfile={address:options.address,connectedDevices:this._connectedDevicesInfo};if(!this._hasConnectedProfileByAddress(dataToCheckConnectedProfile)){delete this._connectedDevicesInfo[options.address];}
|
||||
debug('_initConnectedDevicesCache(): this._connectedDevicesInfo = '+
|
||||
JSON.stringify(this._connectedDevicesInfo));return this._connectedDevicesInfo;},_updateConnectedDevices:function btcm__updateConnectedDevices(options){return this.getConnectedDevices().then((connectedDevicesInfo)=>{debug('_updateConnectedDevices(): connectedDevicesInfo = '+
|
||||
JSON.stringify(connectedDevicesInfo));var info=(connectedDevicesInfo)?connectedDevicesInfo[options.address]:null;if(info){info.connectedProfiles[options.profileID]=options.connected;}else{var connectedDevice=(options.device)?options.device:null;info={'device':connectedDevice,'connectedProfiles':{}};info.connectedProfiles[options.profileID]=options.connected;}
|
||||
this._connectedDevicesInfo[options.address]=info;var dataToCheckConnectedProfile={address:options.address,connectedDevices:this._connectedDevicesInfo};if(!this._hasConnectedProfileByAddress(dataToCheckConnectedProfile)){delete this._connectedDevicesInfo[options.address];}
|
||||
debug('_updateConnectedDevices(): this._connectedDevicesInfo = '+
|
||||
JSON.stringify(this._connectedDevicesInfo));return Promise.resolve(this._connectedDevicesInfo);},()=>{debug('_updateConnectedDevices(): rejected with some exception');return Promise.reject('rejected with some exception');});},_resetConnectionInfo:function btcm__resetConnectionInfo(){this.connectingAddress=null;this._getConnectedDevicesPromise=null;},_watchDefaultAdapterOnattributechanged:function btcm__watchDefaultAdapterOnattributechanged(adapter){adapter.addEventListener('attributechanged',this._onAdapterAttributeChanged.bind(this,adapter));},_unwatchDefaultAdapterOnattributechanged:function btcm__unwatchDefaultAdapterOnattributechanged(adapter){adapter.removeEventListener('attributechanged',this._onAdapterAttributeChanged);},_onAdapterAttributeChanged:function btcm__onAdapterAttributeChanged(adapter,evt){for(var i in evt.attrs){debug('_onAdapterAttributeChanged(): '+evt.attrs[i]);switch(evt.attrs[i]){case'state':if(adapter.state==='enabled'){this._restoreConnection();}
|
||||
break;default:break;}}},_watchProfilesStatuschanged:function btcm__watchProfilesStatuschanged(adapter){var eventName;for(var profileID in this.Profiles){eventName='on'+profileID+'statuschanged';adapter[eventName]=this._onProfileStatuschangeHandler.bind(this,profileID);}},_unwatchProfilesStatuschanged:function btc__unwatchProfilesStatuschanged(adapter){var eventName;for(var profileID in this.Profiles){eventName='on'+profileID+'statuschanged';adapter[eventName]=null;}},_onProfileStatuschangeHandler:function btcm__onProfileStatuschangeHandler(profileID,evt){debug('_onProfileStatuschangeHandler(): profileID = '+profileID+', evt.address = '+evt.address+', evt.status = '+evt.status);var options={address:evt.address,connected:evt.status,profileID:profileID};this._updateConnectionStatus(options);},_restoreConnection:function btcm__restoreConnection(){if(!this._defaultAdapter){return;}
|
||||
AsyncStorage.getItem('device.connected',(address)=>{if(!address){return;}
|
||||
this.getConnectedDevices().then((connectedDevices)=>{if(connectedDevices&&connectedDevices[address]){debug('_restoreConnection(): early return cause connected already');return;}
|
||||
var restoreDevice=this._getPairedDeviceByAddress(address);if(restoreDevice){this.connectingAddress=restoreDevice.address;var event={type:'connecting',detail:{address:restoreDevice.address}};this._emitEvent(event);this._connect(restoreDevice).then(()=>{debug('_restoreConnection(): restore connection successfully');},(reason)=>{debug('_restoreConnection(): restore connection failed, '+'reason = '+reason);this.connectingAddress=null;event={type:'disconnected',detail:{address:restoreDevice.address}};this._emitEvent(event);});}});});},_recordConnection:function btcm__recordConnection(action,address){if(action==='set'){AsyncStorage.setItem('device.connected',address);debug('_recordConnection(): set item');}else if((action==='remove')&&(this._defaultAdapter.state==='enabled')){AsyncStorage.removeItem('device.connected');debug('_recordConnection(): remove item');}},_updateConnectionStatus:function btcm___updateConnectionStatus(options){debug('_updateConnectionStatus(): address = '+options.address+', connected = '+options.connected+', profileID = '+options.profileID);this.connectingAddress=null;this._updateConnectedDevices(options).then((connectedDevicesInfo)=>{debug('_updateConnectionStatus(): _updateConnectedDevices() '+'resolved with connectedDevicesInfo = '+
|
||||
JSON.stringify(connectedDevicesInfo));var dataToCheckConnectedProfile={address:options.address,connectedDevices:connectedDevicesInfo};var event;if(options.connected){event={type:'connected',detail:{address:options.address}};this._emitEvent(event);this._recordConnection('set',options.address);}else{if(!this._hasConnectedProfileByAddress(dataToCheckConnectedProfile)){if(this._defaultAdapter.state==='enabled'){this._recordConnection('remove');}
|
||||
event={type:'disconnected',detail:{address:options.address}};this._emitEvent(event);}}
|
||||
var newProfiles;if(!this._hasConnectedProfileByAddress(dataToCheckConnectedProfile)){newProfiles=null;}else{newProfiles=connectedDevicesInfo[options.address].connectedProfiles;}
|
||||
event={type:'profileChanged',detail:{address:options.address,profiles:newProfiles}};this._emitEvent(event);},(reason)=>{debug('_updateConnectionStatus(): miss to update in rejected case, '+'reason = '+reason);});},connect:function btcm_connect(device){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
debug('connect(): Want to connect device address = '+device.address+', name = '+device.name);var connectedDevices=[];return this.getConnectedDevices().then((connectedDevicesInfo)=>{for(var address in connectedDevicesInfo){if(connectedDevicesInfo[address].device!==null){connectedDevices.push(connectedDevicesInfo[address].device);debug('connect(): push device cache in queue = '+
|
||||
JSON.stringify(connectedDevices));}else{var regetPairedDevice=this._getPairedDeviceByAddress(address);connectedDevices.push(regetPairedDevice);debug('connect(): push _getPairedDeviceByAddress in queue = '+
|
||||
JSON.stringify(regetPairedDevice));}}
|
||||
debug('connect(): Will disconnect these connected devices = '+
|
||||
JSON.stringify(connectedDevices));return Promise.all(connectedDevices.map((connectedDevice)=>{return this.disconnect(connectedDevice);})).then(()=>{debug('connect(): Start to connect with wanted device address = '+
|
||||
device.address);return this._connect(device).then(()=>{debug('connect(): Resolved');},(reason)=>{debug('connect(): reason = '+reason);return Promise.reject(reason);});});});},_connect:function btcm__connect(device){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
this.connectingAddress=device.address;var event={type:'connecting',detail:{address:device.address}};this._emitEvent(event);debug('_connect(): before start to connect, stop discovery first');return this._defaultAdapter.stopDiscovery().then(()=>{debug('_connect(): start connecting device, '+'address = '+device.address);return this._defaultAdapter.connect(device).then(()=>{debug('_connect(): resolve, already connected with address = '+
|
||||
device.address);},()=>{this.connectingAddress=null;event={type:'disconnected',detail:{address:device.address}};this._emitEvent(event);debug('_connect(): reject with connection failed');return Promise.reject('connection failed');});},()=>{this.connectingAddress=null;event={type:'disconnected',detail:{address:device.address}};this._emitEvent(event);debug('_connect(): reject with stop discovery failed');return Promise.reject('stop discovery failed');});},disconnect:function btcm_disconnect(device){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.disconnect(device).then(()=>{debug('disconnect(): onsuccess(): resolve');},()=>{debug('disconnect(): onerror(): reject with disconnect failed');return Promise.reject('disconnect failed');});},_getConnectedDevicesFromPlatform:function btcm__getConnectedDevicesFromPlatform(){return Promise.all(Object.keys(this.Profiles).map((profile)=>{return this._getConnectedDevicesByProfile(this.Profiles[profile]);})).then((connectedDevices)=>{var collectedConnectedDevicesByProfile={};Object.keys(this.Profiles).forEach((profile,index)=>{collectedConnectedDevicesByProfile[profile]=connectedDevices[index];});debug('_getConnectedDevicesFromPlatform(): '+'collectedConnectedDevicesByProfile = '+
|
||||
JSON.stringify(collectedConnectedDevicesByProfile));return Promise.resolve(collectedConnectedDevicesByProfile);});},_getConnectedDevicesByProfile:function btcm__getConnectedDevicesByProfile(profileID){if(!this._defaultAdapter){debug('_getConnectedDevicesByProfile(): reject with no adapter');return Promise.reject('default adapter is not existed!!');}
|
||||
if(this._defaultAdapter.state==='disabled'){debug('_getConnectedDevicesByProfile(): resolve with empty array '+'since it is impossible to connect with any device');return Promise.reject('getConnectedDevices in disabled state');}
|
||||
return this._defaultAdapter.getConnectedDevices(profileID).then((connectedDevice)=>{debug('_getConnectedDevicesByProfile(): resolved with '+'connectedDevice = '+JSON.stringify(connectedDevice));return Promise.resolve(connectedDevice||[]);},(reason)=>{debug('_getConnectedDevicesByProfile(): rejected with '+'reason = '+reason);return Promise.reject(reason);});},_getPairedDeviceByAddress:function btcm__getPairedDeviceByAddress(address){if(!this._defaultAdapter){return null;}
|
||||
var pairedDevices=this._defaultAdapter.getPairedDevices();if(pairedDevices.length===0){return null;}else{for(var i in pairedDevices){if(pairedDevices[i].address===address){return pairedDevices[i];}}
|
||||
return null;}},_hasConnectedProfileByAddress:function btcm__hasConnectedProfileByAddress(options){if(!options.connectedDevices[options.address]){return false;}
|
||||
var hasConnectedProfile=false;for(var profileID in this.Profiles){var connectedProfiles=options.connectedDevices[options.address].connectedProfiles;if(connectedProfiles&&(connectedProfiles[profileID]===true)){hasConnectedProfile=true;}}
|
||||
return hasConnectedProfile;},_emitEvent:function btcm__emitEvent(options){this._listeners[options.type].forEach(function(listener){listener(options);});},addEventListener:function btcm_addEventListener(eventName,callback){if(callback&&(this._listeners.hasOwnProperty(eventName))){this._listeners[eventName].push(callback);}},removeEventListener:function btcm_removeEventListener(eventName,callback){if(callback&&(this._listeners.hasOwnProperty(eventName))){var index=this._listeners[eventName].indexOf(callback);if(index>=0){this._listeners[eventName].splice(index,1);}}}};BluetoothConnectionManager._init();return BluetoothConnectionManager;});
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
define(['require','modules/bluetooth/bluetooth_adapter_manager','modules/bluetooth/bluetooth_device','modules/bluetooth/bluetooth_connection_manager','modules/mvvm/observable','modules/mvvm/observable_array','modules/settings_cache'],function(require){'use strict';var AdapterManager=require('modules/bluetooth/bluetooth_adapter_manager');var BtDevice=require('modules/bluetooth/bluetooth_device');var ConnectionManager=require('modules/bluetooth/bluetooth_connection_manager');var Observable=require('modules/mvvm/observable');var ObservableArray=require('modules/mvvm/observable_array');var SettingsCache=require('modules/settings_cache');var settings=navigator.mozSettings;var _debug=false;var debug=function(){};if(_debug){debug=function btc_debug(msg){console.log('--> [BluetoothContext]: '+msg);};}
|
||||
var BluetoothContext={state:'disabled',enabled:undefined,address:null,name:'',discoverable:false,discovering:false,numberOfPairedDevices:0,firstPairedDeviceName:'',hasPairedDevice:false,_defaultAdapter:null,_init:function btc__init(){AdapterManager.observe('defaultAdapter',this._onDefaultAdapterChanged.bind(this));this._onDefaultAdapterChanged(AdapterManager.defaultAdapter);ConnectionManager.addEventListener('connecting',this._updateDeviceConnectionInfo.bind(this));ConnectionManager.addEventListener('connected',this._updateDeviceConnectionInfo.bind(this));ConnectionManager.addEventListener('disconnected',this._updateDeviceConnectionInfo.bind(this));ConnectionManager.addEventListener('profileChanged',this._updateDeviceConnectionInfo.bind(this));},_initProperties:function btc__initProperties(adapter){this._updateStatus(adapter.state);this.address=adapter.address;this.name=adapter.name;this.discoverable=adapter.discoverable;this.discovering=adapter.discovering;},_resetProperties:function btc__resetProperties(){this._updateStatus('disabled');this.address='';this.name='';this.discoverable=false;this.discovering=false;},_watchDefaultAdapterAttributechanged:function btc__watchDefaultAdapterAttributechanged(adapter){adapter.addEventListener('attributechanged',this._onAdapterAttributeChanged.bind(this,adapter));},_unwatchDefaultAdapterAttributechanged:function btc__unwatchDefaultAdapterAttributechanged(adapter){adapter.removeEventListener('attributechanged',this._onAdapterAttributeChanged);},_watchDefaultAdapterOndevicepaired:function btc__watchDefaultAdapterOndevicepaired(adapter){adapter.ondevicepaired=this._onAdapterDevicepaired.bind(this,adapter);},_unwatchDefaultAdapterOndevicepaired:function btc__unwatchDefaultAdapterOndevicepaired(adapter){adapter.ondevicepaired=null;},_watchDefaultAdapterOndeviceunpaired:function btc__watchDefaultAdapterOndeviceunpaired(adapter){adapter.ondeviceunpaired=this._onAdapterDeviceunpaired.bind(this,adapter);},_unwatchDefaultAdapterOndeviceunpaired:function btc__unwatchDefaultAdapterOndeviceunpaired(adapter){adapter.ondeviceunpaired=null;},_onAdapterAttributeChanged:function btc__onAdapterAttributeChanged(adapter,evt){for(var i in evt.attrs){debug('--> _onAdapterAttributeChanged(): '+evt.attrs[i]);switch(evt.attrs[i]){case'state':this._updateStatus(adapter.state);if(adapter.state==='enabled'){this._refreshPairedDevicesInfo(adapter);this.startDiscovery();}
|
||||
break;case'address':this.address=adapter.address;break;case'name':this.name=adapter.name;break;case'discoverable':this.discoverable=adapter.discoverable;break;case'discovering':this.discovering=adapter.discovering;break;default:break;}}},_onAdapterDevicepaired:function btc__onAdapterDevicepaired(adapter,evt){debug('_onAdapterDevicepaired evt = '+evt);this._removeItemFromList(this._remoteDevices,evt.device.address);this._refreshPairedDevicesInfo(adapter);},_onAdapterDeviceunpaired:function btc__onAdapterDeviceunpaired(adapter,evt){debug('_onAdapterDeviceunpaired evt = '+evt);this._refreshPairedDevicesInfo(adapter);},_onDefaultAdapterChanged:function btc__onDefaultAdapterChanged(newAdapter,oldAdapter){debug('_onDefaultAdapterChanged(): newAdapter = '+newAdapter);debug('_onDefaultAdapterChanged(): oldAdapter = '+oldAdapter);this._defaultAdapter=newAdapter;if(oldAdapter){this._unwatchDefaultAdapterAttributechanged(oldAdapter);this._unwatchDefaultAdapterOndeviceunpaired(oldAdapter);this._unwatchDefaultAdapterOndevicepaired(oldAdapter);}
|
||||
if(newAdapter){this._initProperties(newAdapter);this._watchDefaultAdapterAttributechanged(newAdapter);this._watchDefaultAdapterOndevicepaired(newAdapter);this._watchDefaultAdapterOndeviceunpaired(newAdapter);if(newAdapter.state==='enabled'){this._refreshPairedDevicesInfo(newAdapter);}}else{this._resetProperties();}},_refreshPairedDevicesInfo:function btc__refreshPairedDevicesInfo(adapter){var pairedDevices=adapter.getPairedDevices();debug('pairedDevices.length = '+pairedDevices.length);this._pairedDevices.reset([]);if(pairedDevices.length===0){this.firstPairedDeviceName='';this.hasPairedDevice=false;}else{pairedDevices.sort(function(a,b){return a.name>b.name;});for(var i in pairedDevices){var observableBtDevice=BtDevice(pairedDevices[i]);this._pairedDevices.push(observableBtDevice);}
|
||||
this.firstPairedDeviceName=this._pairedDevices.get(0).name;this.hasPairedDevice=true;this._initConnectingDevices();this._initConnectedDevices();}
|
||||
this.numberOfPairedDevices=pairedDevices.length;},_updateStatus:function btc__updateStatus(state){var enabled;if(state==='enabled'||state==='disabling'){enabled=true;}else if(state==='disabled'||state==='enabling'){enabled=false;}
|
||||
this.state=state;debug('_updateStatus(): set state = '+state);this.enabled=enabled;debug('_updateStatus(): set enabled = '+enabled);this._syncWithSettingsKey(enabled);},_syncWithSettingsKey:function btc__syncWithSettingsKey(enabled){SettingsCache.getSettings((results)=>{var btEnabled=results['bluetooth.enabled'];if(btEnabled!==enabled){settings.createLock().set({'bluetooth.enabled':enabled});}});},setEnabled:function btc_setEnabled(enabled){debug('setEnabled(): request set enabled = '+enabled);if((this.enabled===enabled)||(this.state==='enabling')||(this.state==='disabling')){return Promise.reject('state transition!!');}
|
||||
if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
if(enabled){return this._defaultAdapter.enable().then(()=>{debug('setEnabled(): set enable successfully :)');},(reason)=>{debug('setEnabled(): set enable failed: reason = '+reason);return Promise.reject(reason);});}else{return this._defaultAdapter.disable().then(()=>{debug('setEnabled(): set disable successfully :)');},(reason)=>{debug('setEnabled(): set disable failed: reason = '+reason);return Promise.reject(reason);});}},setDiscoverable:function btc_setDiscoverable(enabled){if((this.discoverable===enabled)||(this.state!=='enabled')){return Promise.reject('same state or Bluetooth is disabled!!');}
|
||||
if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.setDiscoverable(enabled).then(()=>{debug('setDiscoverable(): set discoverable '+
|
||||
enabled+' successfully :)');},(reason)=>{debug('setDiscoverable(): set discoverable failed: '+'reason = '+reason);return Promise.reject(reason);});},setName:function btc_setName(name){if(name===this.name){return Promise.reject('same name!!');}
|
||||
if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.setName(name).then(()=>{debug('setName(): set name successfully :) name = '+
|
||||
this._defaultAdapter.name);},(reason)=>{debug('setName(): set name failed: reason = '+reason);return Promise.reject(reason);});},setNameByProductModel:function btc_setNameByProductModel(){SettingsCache.getSettings((results)=>{var productModel=results['deviceinfo.product_model'];debug('setNameByProductModel(): productModel = '+productModel);this.setName(productModel);});},_pairedDevices:ObservableArray([]),_remoteDevices:ObservableArray([]),_discoveryHandler:null,startDiscovery:function btc_startDiscovery(){if((this.discovering===true)||(this.state!=='enabled')){return Promise.reject('same state or Bluetooth is disabled!!');}
|
||||
this._remoteDevices.reset([]);if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.startDiscovery().then((handle)=>{debug('startDiscovery(): startDiscovery successfully :)');this._setDiscoveryHandler(handle);},(reason)=>{debug('startDiscovery(): startDiscovery failed: '+'reason = '+reason);return Promise.reject(reason);});},stopDiscovery:function btc_stopDiscovery(){if(this.discovering===false){debug('stopDiscovery(): stopDiscovery successfully in same state :)');return Promise.resolve('same state');}
|
||||
if(this.state!=='enabled'){return Promise.reject('Bluetooth is disabled!!');}
|
||||
if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.stopDiscovery().then(()=>{debug('stopDiscovery(): stopDiscovery successfully :)');},(reason)=>{debug('stopDiscovery(): stopDiscovery failed: reason = '+reason);return Promise.reject(reason);});},_setDiscoveryHandler:function btc__setDiscoveryHandler(handle){debug('_setDiscoveryHandler(): handle = '+handle);this._discoveryHandler=handle;this._discoveryHandler.ondevicefound=this._onDeviceFound.bind(this);},_onDeviceFound:function btc__onDeviceFound(evt){this._saveDevice(evt.device);},_saveDevice:function btc__saveDevice(device){var existedDevice=this._findDeviceByAddress({paired:device.paired,address:device.address});if(!existedDevice){var observableBtDevice=BtDevice(device);var operatingDevices=(device.paired)?this.getPairedDevices():this.getRemoteDevices();operatingDevices.push(observableBtDevice);}else{}},_removeItemFromList:function btc__removeItemFromList(list,address){var index=list.array.findIndex(this._matchDeviceByAddress.bind(this,address));if(index>-1){list.splice(index,1);debug('_removeItemFromList(): index = '+index);}else{}},_findDeviceByAddress:function btc__findDeviceByAddress(options){var operatingDevices=(options.paired)?this.getPairedDevices():this.getRemoteDevices();var index=operatingDevices.array.findIndex(this._matchDeviceByAddress.bind(this,options.address));if(index>-1){return operatingDevices.get(index);}else{return null;}},_matchDeviceByAddress:function btc__matchDeviceByAddress(address,btDevice){return btDevice.address&&(btDevice.address===address);},getPairedDevices:function btc_getPairedDevices(){return this._pairedDevices;},getRemoteDevices:function btc_getRemoteDevices(){return this._remoteDevices;},pair:function btc_pair(address){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this.stopDiscovery().then(()=>{return this._defaultAdapter.pair(address).then(()=>{debug('pair(): Resolved with void value');},(reason)=>{debug('pair(): Reject with this reason: '+reason);return Promise.reject(reason);});},(reason)=>{return Promise.reject(reason);});},unpair:function btc_unpair(address){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.unpair(address).then(()=>{debug('unpair(): Resolved with void value');},(reason)=>{debug('unpair(): Reject with this reason: '+reason);return Promise.reject(reason);});},sendFile:function btc_sendFile(address,blob){if(!this._defaultAdapter){return Promise.reject('default adapter is not existed!!');}
|
||||
return this._defaultAdapter.sendFile(address,blob).then(()=>{debug('sendFile(): Resolved with void value');},(reason)=>{debug('sendFile(): Reject with this reason: '+reason);return Promise.reject(reason);});},_initConnectingDevices:function btc__initConnectingDevices(){if(!ConnectionManager.connectingAddress){return;}
|
||||
var existedDevice=this._findDeviceByAddress({paired:true,address:ConnectionManager.connectingAddress});if(existedDevice){var options={connectionStatus:'connecting'};debug('_initConnectingDevices(): options = '+JSON.stringify(options));existedDevice.updateConnectionInfo(options);}},_initConnectedDevices:function btc__initConnectedDevices(){ConnectionManager.getConnectedDevices().then((connectedDevices)=>{for(var address in connectedDevices){var existedDevice=this._findDeviceByAddress({paired:true,address:address});if(existedDevice){var options={connectionStatus:'connected',profiles:connectedDevices[address].connectedProfiles};debug('_initConnectedDevices(): address = '+address+', options = '+JSON.stringify(options));existedDevice.updateConnectionInfo(options);}}},(reason)=>{debug('_initConnectedDevices(): getConnectedDevices(): failed, '+'reason = '+reason);});},_updateDeviceConnectionInfo:function btc__updateDeviceConnectionInfo(event){debug('_updateDeviceConnectionInfo(): event = '+JSON.stringify(event));var existedDevice=this._findDeviceByAddress({paired:true,address:event.detail.address});if(existedDevice){var options;switch(event.type){case'connecting':case'connected':case'disconnected':options={connectionStatus:event.type};break;case'profileChanged':options={profiles:event.detail.profiles};break;default:break;}
|
||||
debug('_updateDeviceConnectionInfo(): options = '+
|
||||
JSON.stringify(options));existedDevice.updateConnectionInfo(options);}else{}}};var bluetoothContext=Observable(BluetoothContext);bluetoothContext._init();return bluetoothContext;});
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
define(['require','modules/bluetooth/bluetooth_cod_mapper','modules/mvvm/observable'],function(require){'use strict';var BtClassOfDeviceMapper=require('modules/bluetooth/bluetooth_cod_mapper');var Observable=require('modules/mvvm/observable');var _debug=false;var debug=function(){};if(_debug){debug=function btd_debug(msg){console.log('--> [BluetoothDevice]: '+msg);};}
|
||||
var updateConnectionInfo=function(options){debug('updateConnectionInfo(): this.address = '+this.address+', this.name = '+this.name+', options = '+JSON.stringify(options));if(options.connectionStatus){this.connectionStatus=options.connectionStatus;}
|
||||
if(options.profiles){this.profiles=Object.create(options.profiles);}
|
||||
debug('updateConnectionInfo(): this.connectionStatus = '+
|
||||
this.connectionStatus+', this.profiles = '+
|
||||
JSON.stringify(this.profiles));};var updateDescriptionText=function(){debug('updateDescriptionText():');if(this.paired===false){this.descriptionText='tapToConnect';}else if(this.paired==='pairing'){this.descriptionText='pairing';}else if(this.paired===true){this.descriptionText='paired';if(this.connectionStatus==='connecting'){this.descriptionText='connecting';}else if(this.connectionStatus==='connected'){if(this.profiles){var hfpConnected=this.profiles.hfp;var a2dpConnected=this.profiles.a2dp;if(hfpConnected&&a2dpConnected){this.descriptionText='connectedWithDeviceMedia';}else if(hfpConnected){this.descriptionText='connectedWithDevice';}else if(a2dpConnected){this.descriptionText='connectedWithMedia';}else{this.descriptionText='connectedWithNoProfileInfo';}}else{this.descriptionText='connectedWithNoProfileInfo';}}else if(this.connectionStatus==='disconnected'){this.descriptionText='disconnected';}}
|
||||
debug('updateDescriptionText(): this.descriptionText = '+
|
||||
this.descriptionText);};return function ctor_bluetooth_device(device){var type=BtClassOfDeviceMapper.getDeviceType(device.cod);var connectionStatus=device.connectionStatus||'disconnected';var observableBluetoothDevice=Observable({name:device.name,paired:device.paired,address:device.address,type:type,connectionStatus:connectionStatus,profiles:null,descriptionText:'',get data(){return device;},updateConnectionInfo:updateConnectionInfo,updateDescriptionText:updateDescriptionText});observableBluetoothDevice._init=function btd__init(){this.observe('paired',this.updateDescriptionText.bind(this));this.observe('connectionStatus',this.updateDescriptionText.bind(this));this.observe('profiles',this.updateDescriptionText.bind(this));};device.onattributechanged=function btd_onDeviceAttributeChanged(evt){for(var i in evt.attrs){debug('onDeviceAttributeChanged(): '+evt.attrs[i]);switch(evt.attrs[i]){case'name':observableBluetoothDevice.name=device.name;break;case'paired':debug('onDeviceAttributeChanged(): '+'device.paired = '+device.paired);observableBluetoothDevice.paired=device.paired;break;case'cod':debug('onDeviceAttributeChanged(): '+'device.cod = '+device.cod);observableBluetoothDevice.type=BtClassOfDeviceMapper.getDeviceType(device.cod);break;default:break;}}};observableBluetoothDevice._init();return observableBluetoothDevice;};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require'],function(require){'use strict';const KEY='operatorResources.data.icon';var initialized=false;var map={};function getCustomizedNetworkTypeMap(){if(initialized){return Promise.resolve(map);}else{return new Promise((resolve)=>{var req=navigator.mozSettings.createLock().get(KEY);req.onsuccess=function(){initialized=true;var result=req.result[KEY];if(result&&Object.keys(result).length){map=Object.create(result);}
|
||||
resolve(map);};req.onerror=function(){initialized=true;console.error('Error loading '+KEY+' settings. '+
|
||||
req.error&&req.error.name);resolve(map);};});}}
|
||||
return Object.freeze({get:getCustomizedNetworkTypeMap});});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/settings_cache','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var settings=window.navigator.mozSettings;var _kClockAutoEnabled='time.clock.automatic-update.enabled';var _kTimezoneAutoEnabled='time.timezone.automatic-update.enabled';var _kClockAutoAvailable='time.clock.automatic-update.available';var _kTimezoneAutoAvailable='time.timezone.automatic-update.available';var _kTimezone='time.timezone';var _kUserSelected='time.timezone.user-selected';var _kLocaleTime='locale.hour12';var _updateDateTimeout=null;var _updateTimeTimeout=null;var DateTime=Module.create(function DateTime(){this.super(Observable).call(this);this._init();}).extend(Observable);Observable.defineObservableProperty(DateTime.prototype,'clockAutoEnabled',{readonly:true,value:true});Observable.defineObservableProperty(DateTime.prototype,'clockAutoAvailable',{readonly:true,value:true});Observable.defineObservableProperty(DateTime.prototype,'timezoneAutoAvailable',{readonly:true,value:true});Observable.defineObservableProperty(DateTime.prototype,'timezone',{readonly:true,value:''});Observable.defineObservableProperty(DateTime.prototype,'userSelectedTimezone',{readonly:true,value:''});Observable.defineObservableProperty(DateTime.prototype,'date',{readonly:true,value:''});Observable.defineObservableProperty(DateTime.prototype,'time',{readonly:true,value:''});Observable.defineObservableProperty(DateTime.prototype,'currentHour12',{readonly:true,value:true});DateTime.prototype._init=function(){this._mozTime=window.navigator.mozTime;if(!this._mozTime){console.error('Could not get window.navigator.mozTime');return;}
|
||||
this._boundSetTimeAutoEnabled=function(event){this._clockAutoEnabled=event.settingValue;this._setTimezoneAutoEnabled(event.settingValue);}.bind(this);this._boundSetClockAutoAvailable=function(event){this._clockAutoAvailable=event.settingValue;}.bind(this);this._boundSetTimezoneAutoAvailable=function(event){this._timezoneAutoAvailable=event.settingValue;}.bind(this);this._boundSetTimezone=function(event){this._timezone=event.settingValue;}.bind(this);this._boundUserSelectedTimezone=function(event){this._userSelectedTimezone=event.settingValue;}.bind(this);this._boundCurrentHour12=function(event){this._currentHour12=event.settingValue;this._autoUpdateDateTime();}.bind(this);this._getDefaults();this._attachListeners();};DateTime.prototype._attachListeners=function(){window.navigator.mozSettings.addObserver(_kClockAutoEnabled,this._boundSetTimeAutoEnabled);window.navigator.mozSettings.addObserver(_kClockAutoAvailable,this._boundSetClockAutoAvailable);window.navigator.mozSettings.addObserver(_kTimezoneAutoAvailable,this._boundSetTimezoneAutoAvailable);window.navigator.mozSettings.addObserver(_kTimezone,this._boundSetTimezone);window.navigator.mozSettings.addObserver(_kUserSelected,this._boundUserSelectedTimezone);window.navigator.mozSettings.addObserver(_kLocaleTime,this._boundCurrentHour12);document.addEventListener('DOMRetranslated',this);window.addEventListener('moztimechange',this);};DateTime.prototype.handleEvent=function(evt){switch(evt.type){case'moztimechange':this._autoUpdateDateTime();break;case'DOMRetranslated':var d=new Date();this._date=this._formatDate(d);this._time=this._formatTime(d);break;}};DateTime.prototype._getDefaults=function(){SettingsCache.getSettings(function(results){this._clockAutoEnabled=results[_kClockAutoEnabled];this._clockAutoAvailable=results[_kClockAutoAvailable];this._timezoneAutoAvailable=results[_kTimezoneAutoAvailable];this._timezone=results[_kTimezone];this._currentHour12=results[_kLocaleTime];this._autoUpdateDateTime();}.bind(this));};DateTime.prototype._autoUpdateDateTime=function(){window.clearTimeout(_updateDateTimeout);window.clearTimeout(_updateTimeTimeout);this._autoUpdateDate();this._autoUpdateTime();};DateTime.prototype._autoUpdateDate=function(){var d=new Date();this._date=this._formatDate(d);var remainMillisecond=(24-d.getHours())*3600*1000-
|
||||
d.getMinutes()*60*1000-d.getMilliseconds();_updateDateTimeout=window.setTimeout(function updateDateTimeout(){this._autoUpdateDate();}.bind(this),remainMillisecond);};DateTime.prototype._autoUpdateTime=function(){var d=new Date();this._time=this._formatTime(d);var remainMillisecond=(60-d.getSeconds())*1000;_updateTimeTimeout=window.setTimeout(function updateTimeTimeout(){this._autoUpdateTime();}.bind(this),remainMillisecond);};DateTime.prototype._formatDate=function(d){return d.toLocaleString(navigator.languages,{year:'numeric',month:'long',day:'2-digit',});};DateTime.prototype._formatTime=function(d){return d.toLocaleString(navigator.languages,{hour12:navigator.mozHour12,hour:'numeric',minute:'numeric',});};DateTime.prototype.setTime=function(type,value){var newDate=new Date();var tokens;switch(type){case'date':tokens=value.split('-');newDate.setYear(tokens[0]);newDate.setMonth(tokens[1]-1);newDate.setDate(tokens[2]);break;case'time':tokens=value.split(':');newDate.setHours(parseInt(tokens[0]));newDate.setMinutes(parseInt(tokens[1]));break;}
|
||||
this._mozTime.set(newDate);};DateTime.prototype._setTimezoneAutoEnabled=function(enabled){var cset={};cset[_kTimezoneAutoEnabled]=enabled;settings.createLock().set(cset);},DateTime.prototype.setUserSelectedTimezone=function(selected){var cset={};cset[_kTimezone]=selected;settings.createLock().set(cset);};DateTime.prototype.setCurrentHour12=function(selected){var cset={};cset[_kLocaleTime]=selected;settings.createLock().set(cset);};DateTime.prototype.getHour12ForCurrentLocale=function(){var format=new Intl.DateTimeFormat(navigator.languages,{hour:'numeric'});return format.resolvedOptions().hour12;};return DateTime();});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require'],function(require){'use strict';var Defer=function(){this.promise=new Promise((resolve,reject)=>{this.resolve=resolve;this.reject=reject;});};return function ctor_defer(){return new Defer();};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/panel'],function(require){'use strict';var Panel=require('modules/panel');var DialogPanel=function ctor_dialogPanel(panelOptions){var panel=Panel(panelOptions);var _emptyFunc=function(){};var submitFunction=_emptyFunc;var cancelFunction=_emptyFunc;var originalInit=panel.init;panel.init=function(panel,userOptions){submitFunction=userOptions.onWrapSubmit.bind(userOptions);cancelFunction=userOptions.onWrapCancel.bind(userOptions);return originalInit.apply(panel,arguments);};panel.onSubmit=panelOptions.onSubmit||_emptyFunc;panel.onCancel=panelOptions.onCancel||_emptyFunc;panel.onSubmit=panel.onSubmit.bind(panelOptions);panel.onCancel=panel.onCancel.bind(panelOptions);panelOptions.submit=function(){submitFunction();};panelOptions.cancel=function(){cancelFunction();};return panel;};return DialogPanel;});
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
define([],function(){'use strict';var FdnContext={_fdnContacts:[],_cloneObject:function(obj){return JSON.parse(JSON.stringify(obj));},getContacts:function(cardIndex){var promise=new Promise((resolve,reject)=>{var iccId=navigator.mozMobileConnections[cardIndex].iccId;if(!iccId){console.log('can\'t get right iccId');reject();}
|
||||
var icc=navigator.mozIccManager.getIccById(iccId);if(!icc){console.log('Could not retrieve ICC object');reject();}
|
||||
var request=icc.readContacts('fdn');request.onerror=(error)=>{console.log('we got error when reading contacts from icc');console.log(error);reject();};request.onsuccess=()=>{var result=this._fdnContacts[cardIndex]=request.result;var contacts=[];for(var i=0,l=result.length;i<l;i++){contacts.push({id:i,name:result[i].name||'',number:result[i].tel[0].value||''});}
|
||||
resolve(contacts);};});return promise;},createAction:function(action,options){var simContact={};var cardIndex=options.cardIndex;var contact=options.contact;switch(action){case'add':simContact.name=[contact.name];simContact.tel=[{value:contact.number}];break;case'edit':simContact=this._cloneObject(this._fdnContacts[cardIndex][contact.id]);simContact.name[0]=contact.name;simContact.tel[0].value=contact.number;break;case'remove':simContact=this._cloneObject(this._fdnContacts[cardIndex][contact.id]);simContact.name[0]='';simContact.tel[0].value='';break;}
|
||||
var result=new window.mozContact(simContact);if('id'in simContact){result.id=simContact.id;}
|
||||
return result;}};return FdnContext;});
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
define(['require','modules/mvvm/observable','modules/mvvm/observable_array','shared/keyboard_helper','shared/manifest_helper'],function(require){'use strict';var Observable=require('modules/mvvm/observable');var ObservableArray=require('modules/mvvm/observable_array');var KeyboardHelper=require('shared/keyboard_helper');var ManifestHelper=require('shared/manifest_helper');var _layoutDict=null;var _keyboards=ObservableArray([]);var _enabledLayouts=ObservableArray([]);var _isReady=false;var _parsingApps=false;var _callbacks=[];var _defaultEnabledCallbacks=[];var Keyboard=function(name,description,launchPath,layouts,app){var _observable=Observable({name:name,description:description,launchPath:launchPath,layouts:layouts,app:app});return _observable;};var Layout=function(options){var _observable=Observable({id:options.id,appName:options.appName,name:options.name,nameL10nId:options.nameL10nId,description:options.description,types:options.types,enabled:options.enabled});_observable.observe('enabled',function(newValue,oldValue){if(!_parsingApps){KeyboardHelper.setLayoutEnabled(options.appManifestURL,options.id,newValue);if(!newValue){KeyboardHelper.checkDefaults(function(layouts,missingTypes){refreshEnabledLayouts(layouts);notifyDefaultEnabled(layouts,missingTypes);});}}});return _observable;};var _waitForLayouts;function refreshEnabledLayouts(reEnabledLayouts){reEnabledLayouts.forEach(function(layout){var app=_layoutDict[layout.app.manifestURL];if(app){app[layout.layoutId].enabled=true;}});}
|
||||
function notifyDefaultEnabled(layouts,missingTypes){_defaultEnabledCallbacks.forEach(function withCallbacks(callback){callback(layouts[0],missingTypes[0]);});}
|
||||
function updateLayouts(layouts,reason){function mapLayout(layout){var app=_layoutDict[layout.app.manifestURL];if(!app){app=_layoutDict[layout.app.manifestURL]={};}
|
||||
if(app[layout.layoutId]){app[layout.layoutId].enabled=layout.enabled;return app[layout.layoutId];}
|
||||
app[layout.layoutId]=Layout({id:layout.layoutId,appName:layout.manifest.name,appManifestURL:layout.app.manifestURL,name:layout.inputManifest.name,nameL10nId:layout.inputManifest.nameL10nId,description:layout.inputManifest.description,types:layout.inputManifest.types,enabled:layout.enabled});return app[layout.layoutId];}
|
||||
function reduceApps(carry,layout){if(!carry.some(function checkApp(app){if(app.app===layout.app){app.layouts.push(mapLayout(layout));return true;}})){carry.push({app:layout.app,manifest:layout.manifest,layouts:[mapLayout(layout)]});}
|
||||
return carry;}
|
||||
function mapKeyboard(app){return Keyboard(app.manifest.name,app.manifest.description,app.manifest.launch_path,app.layouts,app.app);}
|
||||
_parsingApps=true;if(reason.apps){_layoutDict={};var apps=layouts.reduce(reduceApps,[]);var keyboards=apps.map(mapKeyboard);_keyboards.reset(keyboards);}
|
||||
var enabled=layouts.filter(function filterEnabled(layout){return layout.enabled;}).map(mapLayout);_enabledLayouts.reset(enabled);_parsingApps=false;if(_waitForLayouts){_waitForLayouts();_waitForLayouts=undefined;}}
|
||||
var _init=function(callback){document.addEventListener('DOMRetranslated',function(){_keyboards.forEach(function(keyboard){var keyboardAppInstance=keyboard.app;var keyboardManifest=new ManifestHelper(keyboardAppInstance.manifest);keyboard.name=keyboardManifest.name;keyboard.description=keyboardManifest.description;keyboard.layouts.forEach(function(layout){layout.appName=keyboardManifest.name;});});});_waitForLayouts=callback;KeyboardHelper.stopWatching();KeyboardHelper.watchLayouts(updateLayouts);};var _ready=function(callback){if(!callback){return;}
|
||||
if(_isReady){callback();}else{_callbacks.push(callback);}};return{reset:function kc_reset(){_layoutDict=null;_keyboards=ObservableArray([]);_enabledLayouts=ObservableArray([]);_isReady=false;_parsingApps=false;_callbacks=[];_defaultEnabledCallbacks=[];},init:function kc_init(callback){_defaultEnabledCallbacks=[];_isReady=false;_init(function(){_isReady=true;_callbacks.forEach(function(callback){callback();});});_ready(callback);},keyboards:function kc_keyboards(callback){_ready(function(){callback(_keyboards);});},enabledLayouts:function kc_enabledLayouts(callback){_ready(function(){callback(_enabledLayouts);});},defaultKeyboardEnabled:function kc_defaultKeyboardEnabled(callback){_defaultEnabledCallbacks.push(callback);}};});
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
define(['require','modules/base/module','modules/mvvm/observable','shared/settings_listener'],function(require){'use strict';var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var SettingsListener=require('shared/settings_listener');var MediaStorage=Module.create(function MediaStorage(){this.super(Observable).call(this);this._defaultMediaVolume=null;this._defaultMediaVolumeKey='device.storage.writable.name';SettingsListener.observe(this._defaultMediaVolumeKey,'sdcard',this._mediaVolumeChangeHandler.bind(this));}).extend(Observable);Observable.defineObservableProperty(MediaStorage.prototype,'volumeState',{readonly:true,value:'available'});Observable.defineObservableProperty(MediaStorage.prototype,'freeSize',{readonly:true,value:0});MediaStorage.prototype.handleEvent=function ms_handler(evt){switch(evt.type){case'change':this._updateMediaStorageInfo();break;}};MediaStorage.prototype._mediaVolumeChangeHandler=function ms__mediaVolumeChangeHandler(defaultName){if(this._defaultMediaVolume){this._defaultMediaVolume.removeEventListener('change',this);}
|
||||
this._defaultMediaVolume=this._getDefaultVolume(defaultName);if(this._defaultMediaVolume){this._defaultMediaVolume.addEventListener('change',this);}
|
||||
this._updateMediaStorageInfo();};MediaStorage.prototype._updateMediaStorageInfo=function ms__updateMediaStorageInfo(){if(!this._defaultMediaVolume){this._updateVolumeState(null,'unavailable');return;}
|
||||
var req=this._defaultMediaVolume.available();req.onsuccess=evt=>{var state=evt.target.result;var firstVolume=navigator.getDeviceStorages('sdcard')[0];if(state==='unavailable'&&this._defaultMediaVolume.storageName!==firstVolume.storageName){firstVolume.available().onsuccess=e=>{this._updateVolumeState(firstVolume,e.target.result);};}else{this._updateVolumeState(this._defaultMediaVolume,state);}};};MediaStorage.prototype._updateVolumeState=function ms__updateVolumeState(volume,state){this._volumeState=state;volume.freeSpace().onsuccess=(e)=>{this._freeSize=e.target.result;};};MediaStorage.prototype._getDefaultVolume=function ms__getDefaultVolume(name){var volumes=navigator.getDeviceStorages('sdcard');if(!name||name===''){return volumes[0];}
|
||||
for(var i=0;i<volumes.length;++i){if(volumes[i].storageName===name){return volumes[i];}}
|
||||
return volumes[0];};return MediaStorage();});
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
define(['require','shared/icc_helper','shared/async_storage','modules/settings_utils','shared/settings_listener'],function(require){'use strict';var CBS_KEY='ril.cellbroadcast.disabled';var CMAS_KEY='cmas.enabled';var CMAS_PREF_KEY='cmas.user-pref.enabled';var IccHelper=require('shared/icc_helper');var asyncStorage=require('shared/async_storage');var SettingsUtils=require('modules/settings_utils');var SettingsListener=require('shared/settings_listener');var settings=window.navigator.mozSettings;var Messaging=function(){this._cardIndex=0;this._cbs=null;this._cbsInput=null;this._cbsInit=false;this._cmas=null;this._cmasInput=null;this._cmasInit=false;this._boundCBSChanged=this._cbsChanged.bind(this);this._boundCBSInputChanged=this._cbsInputChanged.bind(this);this._boundCMASInputChanged=this._cmasInputChanged.bind(this);};Messaging.prototype={_disableItems:function m__disableItems(panel,disable){var elementIds=['menuItem-deliveryReport','menuItem-readReport','menuItem-autoRetrieve','menuItem-wapPush','menuItem-cellBroadcast','menuItem-emergencyAlert'];elementIds.forEach(function(id){var element=panel.querySelector(id);if(!element){return;}
|
||||
if(disable){element.setAttribute('aria-disabled',true);}else{element.removeAttribute('aria-disabled');}
|
||||
var input=element.querySelector('gaia-switch');if(!input){input=element.querySelector('select');}
|
||||
input.disabled=disable;});},_setCMAS:function m__setCMAS(enabled){var cardIndex=this._cardIndex;this._cmasInput.checked=enabled;var getReq=settings.createLock().get(CMAS_KEY);getReq.onsuccess=function(){var values=getReq.result[CMAS_KEY];values[cardIndex]=enabled;var cmasset={};cmasset[CMAS_KEY]=values;settings.createLock().set(cmasset);};},_cbsChanged:function m__cbsChanged(cbsSettings){var cardIndex=this._cardIndex;var value=cbsSettings[cardIndex];this._cbsInput.checked=!value;if(value){this._setCMAS(false);}else{this._restoreCMASPref();}
|
||||
this._cmasInput.disabled=value;if(!this._cbsInit){this._cbsInput.disabled=false;this._cbs.removeAttribute('aria-disabled');this._cbsInit=true;}},_cbsInputChanged:function m__cbsInputChanged(){var cardIndex=this._cardIndex;var cbsInputChecked=this._cbsInput.checked;if(!cbsInputChecked){this._storeCMASPref(this._cmasInput.checked);}
|
||||
var getReq=settings.createLock().get(CBS_KEY);getReq.onsuccess=function(){var values=getReq.result[CBS_KEY];values[cardIndex]=!cbsInputChecked;var cbsset={};cbsset[CBS_KEY]=values;settings.createLock().set(cbsset);};},_cmasInputChanged:function m__cmasInputChanged(){this._setCMAS(this._cmasInput.checked);this._storeCMASPref(this._cmasInput.checked);},_storeCMASPref:function m__storeCMASPref(checked){var cardIndex=this._cardIndex;asyncStorage.getItem(CMAS_PREF_KEY,function(pref){var states=pref||[true,true];states[cardIndex]=checked;asyncStorage.setItem(CMAS_PREF_KEY,states);});},_restoreCMASPref:function m__restoreCMASPref(){var cardIndex=this._cardIndex;asyncStorage.getItem(CMAS_PREF_KEY,function(pref){var states=pref||[true,true];this._setCMAS(states[cardIndex]);if(!this._cmasInit){this._cmasInput.disabled=false;this._cmas.removeAttribute('aria-disabled');this._cmasInit=true;}}.bind(this));},initCBS:function m_initCBS(panel,cardIndex){this._cardIndex=cardIndex;this._cbs=panel.querySelector('#menuItem-cellBroadcast');this._cbsInput=this._cbs.querySelector('gaia-switch');this._cbsInit=false;this._cmas=panel.querySelector('#menuItem-emergencyAlert');this._cmasInput=this._cmas.querySelector('gaia-switch');this._cmasInit=false;this._cbsInput.removeEventListener('change',this._boundCBSInputChanged);this._cmasInput.removeEventListener('change',this._boundCMASInputChanged);SettingsListener.unobserve(CBS_KEY,this._boundCBSChanged);this._cbsInput.addEventListener('change',this._boundCBSInputChanged);this._cmasInput.addEventListener('change',this._boundCMASInputChanged);SettingsListener.observe(CBS_KEY,[false,false],this._boundCBSChanged);},disableItems:function m_disableItems(panel){var self=this;if(!settings||!IccHelper||IccHelper.cardState!=='ready'){this._disableItems(panel,true);return;}
|
||||
IccHelper.addEventListener('cardstatechange',function(){self._disableItems(panel,IccHelper.cardState!=='ready');});this._disableItems(panel,false);},injectCBSTemplate:function m_injectCBSTemplate(containerNode){var promise=new Promise(function(resolve,reject){var templateId='template-messaging';SettingsUtils.loadTemplate(templateId,function(html){if(!html){reject('We can\'t get the template '+templateId);}else{containerNode.innerHTML=html;resolve();}});});return promise;}};var messaging=new Messaging();return messaging;});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/mobile/supported_network_type'],function(require){'use strict';var NetworkType=require('modules/mobile/supported_network_type');var SupportedNetworkInfo={supportedNetworkTypeHelpers:[],_getMobileConnectionIndex:function ni_getMobileConnectionIndex(mobileConnection){return Array.prototype.indexOf.call(navigator.mozMobileConnections,mobileConnection);},getSupportedNetworkInfo:function getSupportedNetworkInfo(mobileConnection,callback){if(!navigator.mozMobileConnections){if(typeof callback==='function'){callback();}}
|
||||
var index=this._getMobileConnectionIndex(mobileConnection);var helper=this.supportedNetworkTypeHelpers[index];if(!helper){this.supportedNetworkTypeHelpers[index]=helper=NetworkType.SupportedNetworkTypeHelper(mobileConnection.supportedNetworkTypes);}
|
||||
if(typeof callback==='function'){callback(helper);}}};return SupportedNetworkInfo;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require'],function(require){'use strict';const NETWORK_TYPES=['wcdma/gsm','gsm','wcdma','wcdma/gsm-auto','cdma/evdo','cdma','evdo','wcdma/gsm/cdma/evdo','lte/cdma/evdo','lte/wcdma/gsm','lte/wcdma/gsm/cdma/evdo','lte','lte/wcdma'];const NETWORK_TYPE_STRING_MAP={'CDMA':{'cdma/evdo':'operator-networkType-auto','cdma':'operator-networkType-CDMA','evdo':'operator-networkType-EVDO'},'LTE':{'lte':'operator-networkType-LTE'},'GSM':{'wcdma/gsm':'operator-networkType-prefer3G','gsm':'operator-networkType-2G','wcdma':'operator-networkType-3G','wcdma/gsm-auto':'operator-networkType-auto'},'GSM,LTE':{'lte/wcdma/gsm':'operator-networkType-auto','lte/wcdma':'operator-networkType-auto-3G-4G','gsm':'operator-networkType-2G','wcdma':'operator-networkType-3G','wcdma/gsm-auto':'operator-networkType-auto-2G-3G','wcdma/gsm':'operator-networkType-prefer3G','lte':'operator-networkType-LTE'},'CDMA,LTE':{'lte/cdma/evdo':'operator-networkType-auto','cdma/evdo':'operator-networkType-auto-CDMA-EVDO','cdma':'operator-networkType-CDMA','evdo':'operator-networkType-EVDO','lte':'operator-networkType-LTE'},'GSM,CDMA':{'wcdma/gsm':'operator-networkType-preferWCDMA','gsm':'operator-networkType-GSM','wcdma':'operator-networkType-WCDMA','wcdma/gsm-auto':'operator-networkType-auto-WCDMA-GSM','cdma/evdo':'operator-networkType-auto-CDMA-EVDO','cdma':'operator-networkType-CDMA','evdo':'operator-networkType-EVDO','wcdma/gsm/cdma/evdo':'operator-networkType-auto'},'GSM,CDMA,LTE':{'wcdma/gsm':'operator-networkType-preferWCDMA','gsm':'operator-networkType-GSM','wcdma':'operator-networkType-WCDMA','wcdma/gsm-auto':'operator-networkType-auto-WCDMA-GSM','cdma/evdo':'operator-networkType-auto-CDMA-EVDO','cdma':'operator-networkType-CDMA','evdo':'operator-networkType-EVDO','wcdma/gsm/cdma/evdo':'operator-networkType-auto-WCDMA-GSM-CDMA-EVDO','lte':'operator-networkType-LTE','lte/wcdma/gsm':'operator-networkType-auto-LTE-WCDMA-GSM','lte/wcdma':'operator-networkType-auto-LTE-WCDMA','lte/cdma/evdo':'operator-networkType-auto-LTE-CDMA-EVDO','lte/wcdma/gsm/cdma/evdo':'operator-networkType-auto'},'':{'wcdma/gsm':'operator-networkType-preferWCDMA','gsm':'operator-networkType-GSM','wcdma':'operator-networkType-WCDMA','wcdma/gsm-auto':'operator-networkType-auto-WCDMA-GSM','cdma/evdo':'operator-networkType-auto-CDMA-EVDO','cdma':'operator-networkType-CDMA','evdo':'operator-networkType-EVDO','wcdma/gsm/cdma/evdo':'operator-networkType-auto'}};var NetworkType={SupportedNetworkTypeHelper:function ctor_snth(hwSupportedTypes){var _hwSupportedTypeMap={gsm:hwSupportedTypes.indexOf('gsm')!==-1,cdma:hwSupportedTypes.indexOf('cdma')!==-1,wcdma:hwSupportedTypes.indexOf('wcdma')!==-1,evdo:hwSupportedTypes.indexOf('evdo')!==-1,lte:hwSupportedTypes.indexOf('lte')!==-1};var _networkTypes=NETWORK_TYPES.filter(function(type){return type.split('/').every(function(subtype){return _hwSupportedTypeMap[subtype.split('-')[0]];});});var _stringMap=NETWORK_TYPE_STRING_MAP[['GSM','CDMA','LTE'].filter(function(category){switch(category){case'GSM':return _hwSupportedTypeMap.gsm||_hwSupportedTypeMap.wcdma;case'CDMA':return _hwSupportedTypeMap.cdma||_hwSupportedTypeMap.evdo;case'LTE':return _hwSupportedTypeMap.lte;}}).toString()];return{get gsm(){return _hwSupportedTypeMap.gsm;},get cdma(){return _hwSupportedTypeMap.cdma;},get wcdma(){return _hwSupportedTypeMap.wcdma;},get evdo(){return _hwSupportedTypeMap.evdo;},get lte(){return _hwSupportedTypeMap.lte;},get networkTypes(){return _networkTypes;},l10nIdForType:function(type){return _stringMap[type];}};}};return NetworkType;});
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
define(['require','modules/mvvm/observable_array'],function(require){var elements=new WeakMap();var ObservableArray=require('modules/mvvm/observable_array');var ListView=function(root,observableArray,templateFunc){var _observableArray=null;var _root=root;var _templateFunc=templateFunc;var _enabled=true;var observerMap=new WeakMap();function releaseObservers(element){var observable=observerMap.get(element);if(!observable||typeof observable!=='object'){return;}
|
||||
var observers=observerMap.get(observable);if(observers){observers.forEach(function eachObserver(observer){observable.unobserve(observer);});observerMap.delete(observable);observerMap.delete(element);}}
|
||||
function observeAndCall(observable,map){var observers=observerMap.get(observable)||[];if(observerMap.has(observable)){observers=observerMap.get(observable);}
|
||||
observers=Object.keys(map).map(function eachProperty(property){observable.observe(property,map[property]);map[property]();return map[property];});observerMap.set(observable,observers);}
|
||||
var _helper={observeAndCall:observeAndCall};var _handleEvent=function(event){if(!_enabled){return;}
|
||||
var data=event.detail;switch(event.type){case'insert':_insert(data.index,data.items);break;case'remove':_remove(data.index,data.count);break;case'replace':_replace(data.index,data.newValue);break;case'reset':_reset(data.items||[]);break;default:break;}};var _insert=function(index,items){if(items.length<=0){return;}
|
||||
var referenceElement=_root.children[index];for(var i=items.length-1;i>=0;i--){var curElement=_templateFunc(items[i],undefined,_helper);observerMap.set(curElement,items[i]);_root.insertBefore(curElement,referenceElement);referenceElement=curElement;}};var _remove=function(index,count){if(count===0){return;}
|
||||
if(count>=_root.childElementCount){while(_root.firstElementChild){releaseObservers(_root.firstElementChild);_root.removeChild(_root.firstElementChild);}}else{var nextElement=_root.children[index];for(var i=0;i<count;i++){if(nextElement){var temp=nextElement.nextElementSibling;releaseObservers(nextElement);_root.removeChild(nextElement);nextElement=temp;}else{break;}}}};var _replace=function(index,value){var element=_root.children[index];if(element){releaseObservers(element);var newElement=_templateFunc(value,element,_helper);observerMap.set(element,value);if(newElement!==element){_root.insertBefore(newElement,element);_root.removeChild(element);}}};var _reset=function(items){var itemCount=items.length;var elementCount=_root.childElementCount;if(itemCount===0){_remove(0,elementCount);}else if(itemCount<=elementCount){items.forEach(function(item,index){_replace(index,item);});_remove(itemCount,elementCount-itemCount);}else{var slicedItems=items.slice(0,elementCount);var remainingItems=items.slice(elementCount);slicedItems.forEach(function(item,index){_replace(index,item);});_insert(elementCount,remainingItems);}};var _enabledChanged=function(){if(_enabled){_reset(_observableArray.array);}};var view={set:function lv_set(newArray){if(_observableArray){_observableArray.removeEventListener('insert',_handleEvent);_observableArray.removeEventListener('remove',_handleEvent);_observableArray.removeEventListener('replace',_handleEvent);_observableArray.removeEventListener('reset',_handleEvent);}
|
||||
if(!newArray){if(_observableArray){_remove(0,_observableArray.length);_observableArray=null;}
|
||||
return;}
|
||||
if(Array.isArray(newArray)){newArray=ObservableArray(newArray);}
|
||||
_observableArray=newArray;_observableArray.addEventListener('insert',_handleEvent);_observableArray.addEventListener('remove',_handleEvent);_observableArray.addEventListener('replace',_handleEvent);_observableArray.addEventListener('reset',_handleEvent);if(this.enabled){_reset(_observableArray.array);}},destroy:function(){if(_observableArray){_observableArray.removeEventListener('insert',_handleEvent);_observableArray.removeEventListener('remove',_handleEvent);_observableArray.removeEventListener('replace',_handleEvent);_observableArray.removeEventListener('reset',_handleEvent);}
|
||||
_remove(0,_observableArray.length);elements.delete(_root);_root=null;_observableArray=null;_templateFunc=null;_enabled=false;},get element(){return _root;},set enabled(value){if(_enabled!==value){_enabled=value;_enabledChanged();}},get enabled(){return _enabled;}};if(elements.has(_root)){elements.get(_root).destroy();}
|
||||
elements.set(_root,view);_root.innerHTML='';view.set(observableArray);return view;};return ListView;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define([],function(){'use strict';return navigator.battery;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define([],function(){'use strict';return window.navigator.mozApps;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define([],function(){'use strict';if(navigator.mozBluetooth){return navigator.mozBluetooth;}else{return null;}});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','shared/lazy_loader'],function(require){'use strict';var LazyLoader=require('shared/lazy_loader');var SettingsUtils={loadTemplate:function su_loadTemplate(panelId,callback){var templateElement=document.getElementById(panelId);if(!templateElement){callback(null);}else{LazyLoader.load([templateElement],function(){callback(templateElement.innerHTML);});}},runHeaderFontFit:function su_runHeaderFontFit(header){var titles=header.querySelectorAll('h1');[].forEach.call(titles,function(title){title.textContent=title.textContent;});}};return SettingsUtils;});
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
define(['require','modules/base/module','modules/base/event_emitter'],function(require){'use strict';var Module=require('modules/base/module');var EventEmitter=require('modules/base/event_emitter');var APIS=['unlockCardLock','setCardLock','updateContact','getCardLock','getCardLockRetryCount'];var EVENT_CHANGE_APIS=['unlockCardLock','setCardLock'];var _debug=false;var debug=function(){};if(_debug){debug=function ss_debug(msg){console.log('--> [SimSecurity]: '+msg);};}
|
||||
var SimSecurity=Module.create(function(){this.super(EventEmitter).call(this,['pin-enabled','pin-disabled','pin2-enabled','pin2-disabled','fdn-enabled','fdn-disabled','pin-changed','pin2-changed','puk2-changed']);}).extend(EventEmitter);SimSecurity.prototype._getIccByCardIndex=function(cardIndex){if(cardIndex===undefined){return null;}
|
||||
var iccObj;if(navigator.mozMobileConnections[cardIndex]){var iccId=navigator.mozMobileConnections[cardIndex].iccId;if(iccId){iccObj=navigator.mozIccManager.getIccById(iccId);}}
|
||||
return iccObj;};APIS.forEach(function(apiName){SimSecurity.prototype[apiName]=function(cardIndex){if(arguments.length<2){this.throw('You are using SimSecurity API wrongly and you may forget'+'to put your cardIndex, please check again');}
|
||||
var passedArguments=[].slice.call(arguments,1);var icc=this._getIccByCardIndex(cardIndex);if(!icc){console.error('We can\'t find needed icc object');return Promise.reject();}else{var func=icc[apiName];var promise=func.apply(icc,passedArguments);return promise.then((result)=>{if(EVENT_CHANGE_APIS.indexOf(apiName)>-1){var status='';var lockType=passedArguments[0].lockType;var enabled=passedArguments[0].enabled;var newPin=passedArguments[0].newPin;if(newPin){status='changed';}else{status=enabled?'enabled':'disabled';}
|
||||
debug('_emitEvent: '+lockType+'-'+status+' through card '+cardIndex);this._emitEvent(lockType+'-'+status,cardIndex);}
|
||||
return result;});}};});var simSecurity=new SimSecurity();return simSecurity;});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var StateModel=Module.create(function StateModel({onInit,onGetState,onSetState}){if(typeof onInit!=='function'||typeof onGetState!=='function'||typeof onSetState!=='function'){this.throw('invalid arguments');}
|
||||
this.super(Observable).call(this);var argument=arguments[0];this._init(onInit.bind(argument),onGetState.bind(argument),onSetState.bind(argument));}).extend(Observable);Observable.defineObservableProperty(StateModel.prototype,'targetState',{value:null});Observable.defineObservableProperty(StateModel.prototype,'currentState',{readonly:true,value:null});Observable.defineObservableProperty(StateModel.prototype,'transitioning',{readonly:true,value:false});StateModel.prototype._init=function(onInit,onGetState,onSetState){this._onInit=onInit;this._onGetState=onGetState;this._onSetState=onSetState;this.targetState=this._onInit((realState)=>{if(!this._transitioning){this._currentState=realState;this.targetState=realState;}});this._currentState=this.targetState;this._onGetState().then((realState)=>{this._currentState=realState;if(this.targetState!==realState){this._setState(this.targetState);}
|
||||
this.observe('targetState',(newState)=>{if(this._transitioning||newState===this._currentState){return;}
|
||||
this._setState(newState);});}).catch((err)=>{this.error('initialization error '+err);});};StateModel.prototype._setState=function(state){this.debug('set state: '+state);this._transitioning=true;return this._onSetState(state).then((realState)=>{this.debug('set state completed: '+state+', real state: '+realState);this._currentState=realState;if(this.targetState!==realState){this._setState(this.targetState);}else{this._transitioning=false;}},(realState)=>{this.debug('set state failed: '+state+', real state: '+realState);this._currentState=realState;this.targetState=realState;this._transitioning=false;});};return StateModel;});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
define(['require','modules/settings_cache','shared/wifi_helper'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var WifiHelper=require('shared/wifi_helper');var wifiManager=WifiHelper.getWifiManager();var settings=navigator.mozSettings;var _currentNetwork=wifiManager&&wifiManager.connection&&wifiManager.connection.network;var WifiContext={_wifiEnabledListeners:[],_wifiDisabledListeners:[],_wifiStatusChangeListeners:[],_wifiStatusTextChangeListeners:[],_wifiConnectionInfoUpdateListeners:[],_wifiNetworkForgottenListeners:[],_wifiWrongPasswordListeners:[],_wifiStatusText:{id:null},_macAddress:'',_init:function(){if(!wifiManager){return;}
|
||||
settings.createLock().set({'wifi.enabled':wifiManager.enabled});this._bindEvents();this._updateWifi();},_bindEvents:function(){var self=this;var _updateWifi=this._updateWifi.bind(this);var _updateNetworkStatus=this._updateNetworkStatus.bind(this);this._wifiEnabledListeners.push(_updateWifi,_updateNetworkStatus);this._wifiDisabledListeners.push(_updateWifi);this._wifiStatusChangeListeners.push(_updateWifi,_updateNetworkStatus);if(wifiManager){wifiManager.onenabled=function(event){self._wifiEnabled(event);self._wifiStatusTextChange();};wifiManager.ondisabled=function(event){self._wifiDisabled(event);self._wifiStatusTextChange();};wifiManager.onstatuschange=function(event){self._wifiStatusChange.call(self,event);self._wifiStatusTextChange();};wifiManager.onconnectioninfoupdate=self._wifiConnectionInfoUpdate.bind(self);}},_updateWifi:function(event){var self=this;if(!wifiManager){return;}
|
||||
if(!this._macAddress&&settings){SettingsCache.getSettings(function(results){self._macAddress=results['deviceinfo.mac'];});}
|
||||
if(wifiManager.enabled){this._storeMacAddress();}
|
||||
this._updateWifiStatusText(event);},_updateWifiStatusText:function(event){if(wifiManager.enabled){var network=(event&&event.network)?event.network:wifiManager.connection.network;var status=event&&event.status?event.status:wifiManager.connection.status;var networkProp=network?{ssid:network.ssid}:null;this._wifiStatusText={id:'full-status-'+status,args:networkProp};}else{this._wifiStatusText={id:'disabled'};}},_updateNetworkStatus:function(event){if(!_currentNetwork){return;}
|
||||
if(event&&event.network&&_currentNetwork.ssid!=event.network.ssid){return;}
|
||||
var networkStatus=event?event.status:wifiManager.connection.status;if(networkStatus==='connectingfailed'){var isCurrentNetworkKnown=_currentNetwork.known;delete _currentNetwork.password;this.forgetNetwork(_currentNetwork);if(isCurrentNetworkKnown===false){this._wifiWrongPassword();}}},_wifiEnabled:function(event){var self=this;this._syncWifiEnabled(true,function(){self._wifiEnabledListeners.forEach(function(listener){listener(event);});});},_wifiDisabled:function(event){var self=this;this._syncWifiEnabled(false,function(){self._wifiDisabledListeners.forEach(function(listener){listener(event);});});},_wifiStatusChange:function(event){this._wifiStatusChangeListeners.forEach(function(listener){listener(event);});},_wifiStatusTextChange:function(){this._wifiStatusTextChangeListeners.forEach(function(listener){listener();});},_wifiWrongPassword:function(){this._wifiWrongPasswordListeners.forEach(function(listener){listener();});},_wifiConnectionInfoUpdate:function(event){this._wifiConnectionInfoUpdateListeners.forEach(function(listener){listener(event);});},_wifiNetworkForgotten:function(event){this._wifiNetworkForgottenListeners.forEach(function(listener){listener(event);});},_storeMacAddress:function(){if(!wifiManager){return;}
|
||||
if(settings&&wifiManager.macAddress&&wifiManager.macAddress!==this._macAddress&&wifiManager.macAddress!=='undefined'){this._macAddress=wifiManager.macAddress;settings.createLock().set({'deviceinfo.mac':this._macAddress});}},_syncWifiEnabled:function(enabled,callback){SettingsCache.getSettings(function(results){var wifiEnabled=results['wifi.enabled'];if(wifiEnabled!==enabled){settings.createLock().set({'wifi.enabled':enabled});}
|
||||
callback();});},_removeEventListener:function(listeners,callback){var index=listeners.indexOf(callback);if(index>=0){listeners.splice(index,1);}},associateNetwork:function(network,cb){cb=cb||function(){};var request=wifiManager.associate(network);var done=function(){if(!request.error){_currentNetwork=network;}
|
||||
cb(request.error);};request.onsuccess=done;request.onerror=done;},forgetNetwork:function(network,cb){cb=cb||function(){};var request=wifiManager.forget(network);var done=function(){if(!request.error){_currentNetwork=null;WifiContext._wifiNetworkForgotten({network:network});}
|
||||
cb(request.error);};request.onsuccess=done;request.onerror=done;}};WifiContext._init();return{addEventListener:function(eventName,callback){if(eventName==='wifiEnabled'){WifiContext._wifiEnabledListeners.push(callback);}else if(eventName==='wifiDisabled'){WifiContext._wifiDisabledListeners.push(callback);}else if(eventName==='wifiStatusChange'){WifiContext._wifiStatusChangeListeners.push(callback);}else if(eventName==='wifiStatusTextChange'){WifiContext._wifiStatusTextChangeListeners.push(callback);}else if(eventName==='wifiWrongPassword'){WifiContext._wifiWrongPasswordListeners.push(callback);}else if(eventName==='wifiConnectionInfoUpdate'){WifiContext._wifiConnectionInfoUpdateListeners.push(callback);}else if(eventName==='wifiNetworkForgotten'){WifiContext._wifiNetworkForgottenListeners.push(callback);}},removeEventListener:function(eventName,callback){if(eventName==='wifiEnabled'){WifiContext._removeEventListener(WifiContext._wifiEnabledListeners,callback);}else if(eventName==='wifiDisabled'){WifiContext._removeEventListener(WifiContext._wifiDisabledListeners,callback);}else if(eventName==='wifiStatusChange'){WifiContext._removeEventListener(WifiContext._wifiStatusChangeListeners,callback);}else if(eventName==='wifiStatusTextChange'){WifiContext._removeEventListener(WifiContext._wifiStatusTextChangeListeners,callback);}else if(eventName==='wifiWrongPassword'){WifiContext._removeEventListener(WifiContext._wifiWrongPasswordListeners,callback);}else if(eventName==='wifiConnectionInfoUpdate'){WifiContext._removeEventListener(WifiContext._wifiConnectionInfoUpdateListeners,callback);}else if(eventName==='wifiNetworkForgotten'){WifiContext._removeEventListener(WifiContext._wifiNetworkForgottenListeners,callback);}},get wifiStatusText(){return WifiContext._wifiStatusText;},get currentNetwork(){return _currentNetwork;},forgetNetwork:WifiContext.forgetNetwork,associateNetwork:WifiContext.associateNetwork};});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
define(['require','shared/wifi_helper'],function(require){'use strict';var WifiHelper=require('shared/wifi_helper');var wifiManager=WifiHelper.getWifiManager();var WifiUtils={newExplanationItem:function(message){var li=document.createElement('li');li.className='explanation';li.setAttribute('data-l10n-id',message);return li;},newListItem:function(options){var network=options.network;var showNotInRange=options.showNotInRange||false;var onClick=options.onClick||function(){};var icon=document.createElement('aside');icon.classList.add('pack-end');icon.classList.add('wifi-icon');var level=Math.min(Math.floor(network.relSignalStrength/20),4);icon.classList.add('level-'+level);var ssid=document.createElement('span');ssid.dir='auto';ssid.textContent=network.ssid;var small=document.createElement('small');var keys=WifiHelper.getSecurity(network);var networkNotInRange=(network.known&&level===0);var hasSecurity=(keys&&keys.length);if(hasSecurity){if(showNotInRange&&networkNotInRange){small.setAttribute('data-l10n-id','notInRange');}else{document.l10n.setAttributes(small,'securedBy',{capabilities:keys.join(', ')});}
|
||||
icon.classList.add('secured');}else{if(showNotInRange&&networkNotInRange){small.setAttribute('data-l10n-id','notInRange');}else{small.setAttribute('data-l10n-id','securityOpen');}}
|
||||
var a=document.createElement('a');a.appendChild(ssid);a.appendChild(small);var li=document.createElement('li');li.dataset.ssid=network.ssid;li.appendChild(icon);li.appendChild(a);icon.classList.add('wifi-signal');var networkStatus=WifiHelper.getNetworkStatus(network);var kActiveStatuses=['associated','connecting','connected'];if(-1!==kActiveStatuses.indexOf(networkStatus)){li.classList.add('active');if('connected'===networkStatus){icon.classList.add('connected');}else{icon.classList.add('connecting');}
|
||||
small.setAttribute('data-l10n-id','short-status-'+networkStatus);}
|
||||
li.onclick=function(){onClick(network);};return li;},changeDisplay:function(panel,security){var eap=panel.querySelector('li.eap select');var identity=panel.querySelector('input[name=identity]');var password=panel.querySelector('input[name=password]');var authPhase2=panel.querySelector('li.auth-phase2 select');var certificate=panel.querySelector('li.server-certificate select');var description=panel.querySelector('li.server-certificate-description');if(security==='WEP'||security==='WPA-PSK'){identity.parentNode.style.display='none';password.parentNode.style.display='block';authPhase2.parentNode.parentNode.style.display='none';certificate.parentNode.parentNode.style.display='none';description.style.display='none';}else if(security==='WPA-EAP'){if(eap){switch(eap.value){case'SIM':identity.parentNode.style.display='none';password.parentNode.style.display='none';authPhase2.parentNode.parentNode.style.display='none';certificate.parentNode.parentNode.style.display='none';description.style.display='none';break;case'PEAP':case'TLS':case'TTLS':identity.parentNode.style.display='block';password.parentNode.style.display='block';authPhase2.parentNode.parentNode.style.display='block';certificate.parentNode.parentNode.style.display='block';description.style.display='block';break;default:break;}}}else{identity.parentNode.style.display='none';password.parentNode.style.display='none';}},initializeAuthFields:function(panel,network){var ssid=panel.querySelector('input[name=ssid]');var identity=panel.querySelector('input[name=identity]');var password=panel.querySelector('input[name=password]');var showPassword=panel.querySelector('gaia-checkbox[name=show-pwd]');var eap=panel.querySelector('li.eap select');var certificate=panel.querySelector('li.server-certificate select');var submitButton=panel.querySelector('button[type=submit]');this.loadImportedCertificateOptions(certificate);identity.value=network.identity||'';password.type='password';password.value=network.password||'';showPassword.checked=false;showPassword.onchange=function(){password.type=this.checked?'text':'password';};var checkPassword=function(){var key=WifiHelper.getKeyManagement(network);var isDisabled=!WifiHelper.isValidInput(key,password.value,identity.value,eap.value);if(ssid){isDisabled=isDisabled||!WifiHelper.isSSIDValid(ssid.value);}
|
||||
submitButton.disabled=isDisabled;};eap.onchange=function(){var key=WifiHelper.getKeyManagement(network);checkPassword();WifiUtils.changeDisplay(panel,key);};if(ssid){ssid.oninput=checkPassword;}
|
||||
password.oninput=checkPassword;identity.oninput=checkPassword;checkPassword();},loadImportedCertificateOptions:function(select){if(!wifiManager.getImportedCerts){return;}
|
||||
var certRequest=wifiManager.getImportedCerts();certRequest.onsuccess=function(){var i;var certList=certRequest.result;var certificateList=certList.ServerCert;var originLengthOfOptions=select.options.length;for(i=0;i<originLengthOfOptions-1;i++){select.remove(1);}
|
||||
for(i=0;i<certificateList.length;i++){var option=document.createElement('option');option.text=certificateList[i];option.value=certificateList[i];select.add(option,null);}};certRequest.onerror=function(){console.warn('getImportedCerts failed');};},updateNetworkSignal:function(network,networkSignal){var li=document.querySelector('li[data-ssid="'+network.ssid+'"]');var icon=li.querySelector('aside');icon.className=icon.className.replace(/level-\w*/,'');var level=Math.min(Math.floor(networkSignal/20),4);icon.classList.add('level-'+level);},getNetworkKey:function(network){if(!network){return'';}else{var key=network.ssid+'+'+WifiHelper.getSecurity(network).join('+');return key;}},updateListItemStatus:function(options){options=options||{};var listItems=options.listItems;var activeItemDOM=options.activeItemDOM;var network=options.network;var networkStatus=options.networkStatus;if(!network||!networkStatus||!listItems){console.log('Please check passing options for updateListItemStatus');return;}
|
||||
var key=this.getNetworkKey(network);var listItemDOM=listItems[key];if(activeItemDOM&&activeItemDOM!=listItemDOM){activeItemDOM.classList.remove('active');activeItemDOM.querySelector('small').setAttribute('data-l10n-id','short-status-disconnected');activeItemDOM.querySelector('aside').classList.remove('connecting');activeItemDOM.querySelector('aside').classList.remove('connected');}
|
||||
if(listItemDOM){listItemDOM.classList.add('active');listItemDOM.querySelector('small').setAttribute('data-l10n-id','short-status-'+networkStatus);if(networkStatus==='connecting'||networkStatus==='associated'){listItemDOM.querySelector('aside').classList.remove('connected');listItemDOM.querySelector('aside').classList.add('connecting');}else if(networkStatus==='connected'){listItemDOM.querySelector('aside').classList.remove('connecting');listItemDOM.querySelector('aside').classList.add('connected');}}}};return WifiUtils;});
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
|
||||
define('panels/about/hardware_info',['require'],function(require){'use strict';var HardwareInfo=function(){this._elements=null;};HardwareInfo.prototype={init:function hi_init(elements){this._elements=elements;this._loadHardwareInfo();},_loadHardwareInfo:function hi__loadHardwareInfo(){var _conns=navigator.mozMobileConnections;if(!_conns){this._elements.deviceInfoPhoneNum.hidden=true;return;}
|
||||
var _isMultiSim=_conns.length>1;var _hideListItem=true;while(this._elements.deviceInfoMsisdns.hasChildNodes()){this._elements.deviceInfoMsisdns.removeChild(this._elements.deviceInfoMsisdns.lastChild);}
|
||||
Array.prototype.forEach.call(_conns,function(conn,index){var iccId=conn.iccId;if(!iccId){return;}
|
||||
var iccObj=navigator.mozIccManager.getIccById(iccId);if(!iccObj){return;}
|
||||
var iccInfo=iccObj.iccInfo;if(!iccInfo){return;}
|
||||
_hideListItem=false;var span=this._renderPhoneNumberElement(iccInfo,index,_isMultiSim);this._elements.deviceInfoMsisdns.appendChild(span);}.bind(this));this._elements.deviceInfoPhoneNum.hidden=_hideListItem;},_renderPhoneNumberElement:function hi__renderPhoneNumberElement(iccInfo,index,isMultiSim){var span=document.createElement('span');var msisdn=iccInfo.msisdn||iccInfo.mdn;if(msisdn){if(isMultiSim){document.l10n.setAttributes(span,'deviceInfo-MSISDN-with-index',{index:index+1,msisdn:msisdn});}else{span.textContent=msisdn;}}else{if(isMultiSim){document.l10n.setAttributes(span,'unknown-phoneNumber-sim',{index:index+1});}else{span.setAttribute('data-l10n-id','unknown-phoneNumber');}}
|
||||
return span;}};return function ctor_hardwareInfo(){return new HardwareInfo();};});define('panels/about/update_check',['require'],function(require){'use strict';var UpdateCheck=function(){this._elements=null;this._settings=window.navigator.mozSettings;this._checkStatus={'gecko.updateStatus':{},'apps.updateStatus':{}};};UpdateCheck.prototype={init:function uc_init(elements){this._elements=elements;this._loadLastUpdated();this._displayNotifyCheckbox();this._elements.checkUpdateNow.addEventListener('click',this._checkForUpdates.bind(this));},_displayNotifyCheckbox:function uc__displayNotifyCheckBox(){var key='addons.auto_update';var request=this._settings.createLock().get(key);request.onsuccess=()=>{this._elements.addonUpdateNotify.classList.toggle('hidden',!request.result[key]);this._settings.addObserver(key,e=>{this._elements.addonUpdateNotify.classList.toggle('hidden',!e.settingValue);});};request.onerror=err=>{console.error('Failed to fetch ',key,err);};},_loadLastUpdated:function uc__loadLastUpdated(){var key='deviceinfo.last_updated';var request=this._settings.createLock().get(key);request.onsuccess=function(){var lastUpdated=request.result[key];if(!lastUpdated){return;}
|
||||
this._elements.lastUpdateDate.textContent=new Date(lastUpdated).toLocaleString(navigator.languages,{hour12:navigator.mozHour12,hour:'numeric',minute:'numeric',day:'numeric',month:'numeric',year:'numeric'});}.bind(this);},_statusCompleteUpdater:function uc__statusCompleteUpdater(){var hasAllCheckComplete=Object.keys(this._checkStatus).some((setting)=>this._checkStatus[setting].value==='check-complete');var hasAllResponses=Object.keys(this._checkStatus).every((setting)=>!!this._checkStatus[setting].value);if(hasAllCheckComplete){this._startClearUpdateStatus();}
|
||||
var hasNoUpdatesResult=Object.keys(this._checkStatus).some((setting)=>this._checkStatus[setting].value==='no-updates');if(hasAllResponses||hasNoUpdatesResult){this._elements.updateStatus.classList.remove('checking');}},_onUpdateStatus:function uc__onUpdateStatus(setting,event){var value=event.settingValue;this._checkStatus[setting].value=value;var l10nValues=['no-updates','already-latest-version','retry-when-online'];if(value!=='check-complete'){var id=l10nValues.indexOf(value)!==-1?value:'check-error';this._elements.systemStatus.setAttribute('data-l10n-id',id);if(id==='check-error'){console.error('Error checking for system update:',value);}}
|
||||
this._statusCompleteUpdater();this._settings.removeObserver(setting,this._checkStatus[setting].cb);this._checkStatus[setting].cb=null;},_clearUpdateStatusTimer:null,_startClearUpdateStatus:function uc__clearUpdateStatus(){if(this._clearUpdateStatusTimer){clearTimeout(this._clearUpdateStatusTimer);}
|
||||
this._clearUpdateStatusTimer=window.setTimeout(this._doClearUpdateStatus.bind(this),5000);},_doClearUpdateStatus:function uc__clearUpdateStatus(){this._elements.updateStatus.classList.remove('visible');this._elements.systemStatus.textContent='';},_checkForUpdates:function uc__checkForUpdates(){if(!navigator.onLine){this._elements.checkUpdateNow.setAttribute('disabled','disabled');document.l10n.formatValue('no-network-when-update').then(msg=>{alert(msg);this._elements.checkUpdateNow.removeAttribute('disabled');});return;}
|
||||
this._elements.updateStatus.classList.add('checking','visible');this._elements.systemStatus.textContent='';for(var setting in this._checkStatus){this._checkStatus[setting].cb=this._onUpdateStatus.bind(this,setting);this._settings.addObserver(setting,this._checkStatus[setting].cb);}
|
||||
this._settings.createLock().set({'gaia.system.checkForUpdates':true});}};return function ctor_updateCheck(){return new UpdateCheck();};});define('panels/about/factory_reset',['require'],function(require){'use strict';var FactoryReset=function(){this._elements=null;};FactoryReset.prototype={init:function fr_init(elements){this._elements=elements;if(navigator.mozPower){this._elements.resetButton.disabled=false;this._elements.resetButton.addEventListener('click',this._resetClick.bind(this));}else{this._elements.resetButton.disabled=true;}},_resetClick:function fr__resetClick(){this._elements.resetDialog.hidden=false;this._elements.resetCancel.onclick=function(){this._elements.resetDialog.hidden=true;}.bind(this);this._elements.resetConfirm.onclick=function(){this._factoryReset();this._elements.resetDialog.hidden=true;}.bind(this);},_factoryReset:function fr__factoryReset(){var power=navigator.mozPower;if(!power){console.error('Cannot get mozPower');return;}
|
||||
if(!power.factoryReset){console.error('Cannot invoke mozPower.factoryReset()');return;}
|
||||
power.factoryReset();}};return function ctor_factoryReset(){return new FactoryReset();};});define('panels/about/panel',['require','modules/settings_panel','panels/about/hardware_info','panels/about/update_check','panels/about/factory_reset'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var HardwareInfo=require('panels/about/hardware_info');var UpdateCheck=require('panels/about/update_check');var FactoryReset=require('panels/about/factory_reset');return function ctor_support_panel(){var hardwareInfo=HardwareInfo();var factoryReset=FactoryReset();var updateCheck=UpdateCheck();return SettingsPanel({onInit:function(panel){hardwareInfo.init({deviceInfoPhoneNum:panel.querySelector('.deviceinfo-phone-num'),deviceInfoMsisdns:panel.querySelector('.deviceInfo-msisdns')});updateCheck.init({checkUpdateNow:panel.querySelector('.check-update-now'),lastUpdateDate:panel.querySelector('.last-update-date'),updateStatus:panel.querySelector('.update-status'),systemStatus:panel.querySelector('.system-update-status'),addonUpdateNotify:panel.querySelector('.addon-update-notify')});factoryReset.init({resetButton:panel.querySelector('.reset-phone'),resetDialog:panel.querySelector('.reset-phone-dialog'),resetConfirm:panel.querySelector('.confirm-reset-phone'),resetCancel:panel.querySelector('.cancel-reset-phone')});}});};});
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
define('panels/about_more_info/commit_info',['require'],function(require){'use strict';var commitInfo=function(){this._elements={};};commitInfo.prototype={init:function mi_init(elements){this._elements=elements;this._loadGaiaCommit();},_dateToUTC:function mi__dateToUTC(d){var arr=[];[d.getUTCFullYear(),(d.getUTCMonth()+1),d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds()].forEach(function(n){arr.push((n>=10)?n:'0'+n);});return arr.splice(0,3).join('-')+' '+arr.join(':');},_loadGaiaCommit:function mi__loadGaiaCommit(){const GAIA_COMMIT='resources/gaia_commit.txt';if(this._elements.dispHash.textContent){return;}
|
||||
var req=new XMLHttpRequest();req.onreadystatechange=(function(e){if(req.readyState===4){if(req.status===0||req.status===200){var data=req.responseText.split('\n');var d=new Date(parseInt(data[1]+'000',10));this._elements.dispDate.textContent=this._dateToUTC(d);this._elements.dispHash.textContent=data[0].substr(0,8);}else{console.error('Failed to fetch gaia commit: ',req.statusText);}}}).bind(this);req.open('GET',GAIA_COMMIT,true);req.responseType='text';req.send();}};return function ctor_commitInfo(){return new commitInfo();};});define('panels/about_more_info/hardware_info',['require','shared/settings_listener','modules/bluetooth/bluetooth_context'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var BtContext=require('modules/bluetooth/bluetooth_context');var HardwareInfo=function(){this._elements={};};HardwareInfo.prototype={init:function mi_init(elements){this._elements=elements;this._loadMacAddress();this._loadBluetoothAddress();},_loadMacAddress:function mi__loadMacAddress(){SettingsListener.observe('deviceinfo.mac','',(macAddress)=>this._elements.deviceInfoMac.textContent=macAddress);},_refreshBluetoothAddress:function mi__refreshBluetoothAddress(address){if(address==null||address===''){this._elements.btAddr.setAttribute('data-l10n-id','bluetooth-address-unavailable');}else{this._elements.btAddr.removeAttribute('data-l10n-id');this._elements.btAddr.textContent=address;}},_loadBluetoothAddress:function about_loadBluetoothAddress(){BtContext.observe('address',this._refreshBluetoothAddress.bind(this));this._refreshBluetoothAddress(BtContext.address);}};return function ctor_hardwareInfo(){return new HardwareInfo();};});define('panels/about_more_info/device_info',['require'],function(require){'use strict';const GET_IMEI_COMMAND='*#06#';var DeviceInfo=function(){this._elements={};};DeviceInfo.prototype={init:function mi_init(elements){this._elements=elements;this._loadImei();this._loadIccId();},_getImeiCode:function mi__getImeiCode(simSlotIndex){var dialPromise=navigator.mozTelephony.dial(GET_IMEI_COMMAND,simSlotIndex);return dialPromise.then(function about_dialImeiPromise(call){return call.result.then(function(result){if(result&&result.success&&(result.serviceCode==='scImei')){return result.statusMessage;}else{var errorMsg='Could not retrieve the IMEI code for SIM '+
|
||||
simSlotIndex;console.log(errorMsg);return Promise.reject(new Error(errorMsg));}});});},_createImeiField:function mi__createImeiField(imeis){while(this._elements.deviceInfoImeis.hasChildNodes()){this._elements.deviceInfoImeis.removeChild(this._elements.deviceInfoImeis.lastChild);}
|
||||
if(!imeis||imeis.length===0){var span=document.createElement('span');span.setAttribute('data-l10n-id','unavailable');this._elements.deviceInfoImeis.appendChild(span);}else{imeis.forEach(function(imei,index){var span=document.createElement('span');if(imeis.length>1){document.l10n.setAttributes(span,'deviceInfo-IMEI-with-index',{index:index+1,imei:imei});}else{span.textContent=imei;}
|
||||
span.dataset.slot=index;this._elements.deviceInfoImeis.appendChild(span);}.bind(this));}},_loadImei:function mi__loadImei(){var conns=navigator.mozMobileConnections;if(!navigator.mozTelephony||!conns){this._elements.listImeis.hidden=true;return Promise.resolve();}
|
||||
var promises=[];for(var i=0;i<conns.length;i++){promises.push(this._getImeiCode(i));}
|
||||
var self=this;return Promise.all(promises).then(function(imeis){self._createImeiField(imeis);},function(){self._createImeiField(null);});},_loadIccId:function mi__loadIccId(){var conns=navigator.mozMobileConnections;if(!navigator.mozTelephony||!conns){this._elements.listIccIds.hidden=true;return;}
|
||||
var multiSim=conns.length>1;while(this._elements.deviceInfoIccIds.hasChildNodes()){this._elements.deviceInfoIccIds.removeChild(this._elements.deviceInfoIccIds.lastChild);}
|
||||
Array.prototype.forEach.call(conns,function(conn,index){var span=document.createElement('span');if(conn.iccId){if(multiSim){document.l10n.setAttributes(span,'deviceInfo-ICCID-with-index',{index:index+1,iccid:conn.iccId});}else{span.textContent=conn.iccId;}}else{if(multiSim){document.l10n.setAttributes(span,'deviceInfo-ICCID-unavailable-sim',{index:index+1});}else{span.setAttribute('data-l10n-id','unavailable');}}
|
||||
this._elements.deviceInfoIccIds.appendChild(span);}.bind(this));}};return function ctor_deviceInfo(){return new DeviceInfo();};});define('panels/about_more_info/panel',['require','modules/settings_panel','panels/about_more_info/commit_info','panels/about_more_info/hardware_info','panels/about_more_info/device_info'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var CommitInfo=require('panels/about_more_info/commit_info');var HardwareInfo=require('panels/about_more_info/hardware_info');var DeviceInfo=require('panels/about_more_info/device_info');return function ctor_support_panel(){var commitInfo=CommitInfo();var hardwareInfo=HardwareInfo();var deviceInfo=DeviceInfo();return SettingsPanel({onInit:function(panel){deviceInfo.init({listImeis:panel.querySelector('.list-imeis'),listIccIds:panel.querySelector('.list-iccids'),deviceInfoImeis:panel.querySelector('.deviceInfo-imeis'),deviceInfoIccIds:panel.querySelector('.deviceInfo-iccids')});commitInfo.init({dispDate:panel.querySelector('.gaia-commit-date'),dispHash:panel.querySelector('.gaia-commit-hash')});hardwareInfo.init({deviceInfoMac:panel.querySelector('[data-name="deviceinfo.mac"]'),btAddr:panel.querySelector('[data-name="deviceinfo.bt_address"]')});}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','shared/settings_listener','modules/settings_panel'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var SettingsPanel=require('modules/settings_panel');return function ctor_accessibilityPanel(){var _screenReaderDesc;var _colorFilterDesc;var _audioDesc;return SettingsPanel({onInit:function accessibilityPanel_onInit(rootElement){_screenReaderDesc=rootElement.querySelector('#screenReader-desc');_colorFilterDesc=rootElement.querySelector('#colorFilter-desc');_audioDesc=rootElement.querySelector('#audio-desc');SettingsListener.observe('accessibility.screenreader',false,function(enabled){_screenReaderDesc.setAttribute('data-l10n-id',enabled?'enabled':'disabled');});SettingsListener.observe('accessibility.colors.enable',false,function(enabled){_colorFilterDesc.setAttribute('data-l10n-id',enabled?'enabled':'disabled');});SettingsListener.observe('accessibility.monoaudio.enable',false,function(enabled){_audioDesc.setAttribute('data-l10n-id',enabled?'mono-enabled':'mono-disabled');});}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','shared/settings_listener'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var _elements;var _enable;var ConfirmDialog={init:function ConfirmDialog_init(elements,onConfirmDialog){_elements=elements;_elements.container.onclick=function(){_elements.container.hidden=true;};_elements.confirmButton.onclick=function(e){SettingsListener.getSettingsLock().set({'accessibility.screenreader':_enable});};},show:function ConfirmDialog_show(enable){_enable=enable;var startStop=enable?'start':'stop';_elements.heading.setAttribute('data-l10n-id','screenReader-confirm-title-'+startStop);_elements.text.setAttribute('data-l10n-id','screenReader-confirm-description-'+startStop);_elements.confirmButton.setAttribute('data-l10n-id','screenReader-confirm-button-'+startStop);_elements.container.hidden=false;}};return ConfirmDialog;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','shared/settings_listener','modules/settings_panel','modules/settings_cache','panels/accessibility_screenreader/confirm_dialog'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var SettingsPanel=require('modules/settings_panel');var SettingsCache=require('modules/settings_cache');var ConfirmDialog=require('panels/accessibility_screenreader/confirm_dialog');var kEnabledKey='accessibility.screenreader';return function ctor_accessibility_screenreader_panel(){var _screenreaderSwitch;return SettingsPanel({onInit:function asr_onInit(rootElement){_screenreaderSwitch=rootElement.querySelector('.screenreader-enable');var dialogContainer=rootElement.querySelector('#screenreader-confirm-dialog');ConfirmDialog.init({container:dialogContainer,confirmButton:dialogContainer.querySelector('button.danger'),heading:dialogContainer.querySelector('h1'),text:dialogContainer.querySelector('p')});_screenreaderSwitch.addEventListener('click',event=>{event.preventDefault();SettingsCache.getSettings(function(results){ConfirmDialog.show(!results[kEnabledKey]);});});SettingsListener.observe(kEnabledKey,false,function(value){_screenreaderSwitch.checked=value;});}});};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define(['require','modules/mvvm/list_view','modules/mvvm/observable_array','panels/achievements/achievements_template'],function(require){'use strict';var ListView=require('modules/mvvm/list_view');var ObservableArray=require('modules/mvvm/observable_array');var AchievementsTemplate=require('panels/achievements/achievements_template');function AchievementsList(root){this._achievements=ObservableArray([]);this._listView=ListView(root,this._achievements,AchievementsTemplate);}
|
||||
AchievementsList.prototype={get achievements(){return this._achievements.array;},set achievements(achievements){achievements=achievements||[];this._achievements.reset(achievements);}};return function ctor_achievements_list(panel){return new AchievementsList(panel);};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require'],function(require){'use strict';return function achievementsTemplate(achievement,recycled){var container,span,small,icon,details;var name=achievement.criteria.split('achievements/')[1];if(recycled){container=recycled;details=container.querySelector('span');span=details.querySelector('span');small=details.querySelector('small');icon=container.querySelector('img');}else{container=document.createElement('li');details=document.createElement('span');span=document.createElement('span');small=document.createElement('small');icon=document.createElement('img');container.classList.add('achievements-item');details.classList.add('details');details.setAttribute('role','presentation');small.classList.add('description');icon.classList.add('icon');icon.setAttribute('aria-hidden',true);container.appendChild(icon);details.appendChild(span);details.appendChild(small);container.appendChild(details);}
|
||||
icon.src=`../style/images/achievements/${name}.png`;span.setAttribute('data-l10n-id',`achievements-${name}-name`);small.setAttribute('data-l10n-id',`achievements-${name}-description`);if(achievement.evidence){container.classList.add('rewarded');container.removeAttribute('aria-disabled');}else{container.classList.remove('rewarded');container.setAttribute('aria-disabled',true);}
|
||||
return container;};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_panel','panels/achievements/achievements_list','shared/settings_listener'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var AchievementsList=require('panels/achievements/achievements_list');var SettingsListener=require('shared/settings_listener');return function ctor_achievements_panel(){var achievementsList;var update=achievements=>achievementsList.achievements=achievements;return SettingsPanel({onInit:function(panel){var listElement=panel.querySelector('.achievements-list');achievementsList=AchievementsList(listElement);},onBeforeShow:function(){SettingsListener.observe('achievements',achievementsList.achievements,update);},onHide:function(){SettingsListener.unobserve('achievements',update);}});};});
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
define(['require','shared/manifest_helper','modules/addon_manager'],function(require){'use strict';var ManifestHelper=require('shared/manifest_helper');var AddonManager=require('modules/addon_manager');const PREFERRED_ICON_SIZE=64*(window.devicePixelRatio||1);function AddonDetails(elements){this._boundUpdateEnabledState=this._updateEnabledState.bind(this);this._elements=elements;this._curApp=null;}
|
||||
AddonDetails.prototype._updateEnabledState=function _update(newState){this._elements.enabledState.setAttribute('data-l10n-id',newState?'enabled':'disabled');};AddonDetails.prototype.render=function render(app){if(this._curApp!==null){this._curApp.unobserve('enabled',this._boundUpdateEnabledState);}
|
||||
this._curApp=app;if(this._curApp){this._curApp.observe('enabled',this._boundUpdateEnabledState);this._updateEnabledState(this._curApp.enabled);}
|
||||
var l10n=document.l10n;var manifest=new ManifestHelper(app.instance.manifest||app.instance.updateManifest);this.updateNames(manifest);navigator.mozApps.mgmt.getIcon(app,PREFERRED_ICON_SIZE).then((blob)=>{this._elements.icon.src=URL.createObjectURL(blob);}).catch(()=>{this._elements.icon.src='../style/images/default.png';});if(manifest.version){this._elements.version.textContent='v'+manifest.version;}
|
||||
if(manifest.description){this._elements.description.removeAttribute('data-l10n-id');this._elements.description.textContent=manifest.description;}else{this._elements.description.setAttribute('data-l10n-id','addon-no-description');}
|
||||
var developerName=manifest.developer&&manifest.developer.name;l10n.setAttributes(this._elements.developer,'addon-developer-name',{developerName:developerName||''});var oldAddonFormat=!!manifest.customizations;if(oldAddonFormat){l10n.setAttributes(this._elements.obsoleteStatusInfo,AddonManager.canDelete(app)?'addon-obsolete-can-delete':'addon-obsolete');}
|
||||
this._elements.obsoleteStatus.hidden=!oldAddonFormat;this._elements.targetsList.textContent='';AddonManager.getAddonTargets(app).then((targets)=>{var names=[];targets.forEach(function(target){var manifest=new ManifestHelper(target.manifest||target.updateManifest);names.push(manifest.displayName);});names.sort();if(names.length<1){this._elements.targetsList.setAttribute('data-l10n-id','addon-no-targets');}else{this._elements.targetsList.textContent=names.join(', ');}});};AddonDetails.prototype.updateNames=function _updateNames(manifest){var appnameArgs={appName:manifest.name};var l10n=document.l10n;l10n.setAttributes(this._elements.header,'addon-details-header1',appnameArgs);l10n.setAttributes(this._elements.name,'addon-details-header1',appnameArgs);l10n.setAttributes(this._elements.icon,'accessibility-app-icon',appnameArgs);};return function ctor_addon_details(panel){return new AddonDetails(panel);};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define(['require','modules/settings_panel','modules/addon_manager','panels/addon_details/addon_details','modules/settings_service','shared/toaster'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var AddonManager=require('modules/addon_manager');var AddonDetails=require('panels/addon_details/addon_details');var SettingsService=require('modules/settings_service');var Toaster=require('shared/toaster');return function ctor_addon_details_panel(){return SettingsPanel({onInit:function(panel){this._elements={body:panel.querySelector('.addon-details-body'),header:panel.querySelector('.addon-details-header'),gaiaHeader:panel.querySelector('gaia-header'),enabledState:panel.querySelector('.addon-enabled details'),name:panel.querySelector('.addon-details-name'),icon:panel.querySelector('.addon-details-icon'),version:panel.querySelector('.addon-details-version'),description:panel.querySelector('.addon-description-text'),developer:panel.querySelector('.addon-developer'),targetsList:panel.querySelector('.addon-targets'),toggle:panel.querySelector('.addon-enabled'),deleteButton:panel.querySelector('.addon-delete'),obsoleteStatus:panel.querySelector('.addon-obsolete-status'),obsoleteStatusInfo:panel.querySelector('.addon-obsolete-info')};this._details=AddonDetails(this._elements);this._boundOnAppEnabledChange=this._onAppEnabledChange.bind(this);this._elements.toggle.onchange=this._onToggleChange.bind(this);this._elements.deleteButton.onclick=this._onDelete.bind(this);},onBeforeShow:function(panel,options){return Promise.resolve((()=>{if(options.addon){return options.addon;}else if(options.manifestURL){return AddonManager.findAddonByManifestURL(options.manifestURL);}})()).then((addon)=>{this._curAddon=addon;if(this._curAddon){this._details.render(this._curAddon);this._elements.toggle.checked=AddonManager.isEnabled(this._curAddon);this._curAddon.observe('enabled',this._boundOnAppEnabledChange);this._elements.deleteButton.disabled=!AddonManager.canDelete(this._curAddon);this._elements.body.hidden=false;}else{console.error('No valid add-on');this._elements.body.hidden=true;}
|
||||
this._elements.gaiaHeader.hidden=false;});},onHide:function(){this._elements.body.scrollTop=0;if(this._curAddon){this._curAddon.unobserve('enabled',this._boundOnAppEnabledChange);this._curAddon=null;}},_showStepsRequired(type){if(type==='reboot'){Toaster.showToast({messageL10nId:'addon-reboot-required',latency:3000,useTransition:true});}else if(type==='restart'){Toaster.showToast({messageL10nId:'addon-restart-apps-to-disable',latency:3000,useTransition:true});}},_onAppEnabledChange:function(enabled){this._elements.toggle.checked=enabled;if(!enabled){AddonManager.getAddonDisableType(this._curAddon).then(this._showStepsRequired);}},_onToggleChange:function(){if(this._elements.toggle.checked){AddonManager.enableAddon(this._curAddon);}else{AddonManager.disableAddon(this._curAddon);}},_onDelete:function(){this._elements.deleteButton.disabled=true;var disableType;AddonManager.getAddonDisableType(this._curAddon).then(type=>{disableType=type;return AddonManager.deleteAddon(this._curAddon);}).then(()=>{this._showStepsRequired(disableType);SettingsService.navigate('addons');}).catch(reason=>{console.error('Addon deletion failed:',reason);this._elements.deleteButton.disabled=false;});}});};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/settings_service','modules/mvvm/list_view','panels/addons/addons_template','modules/mvvm/observable_array'],function(require){'use strict';var SettingsService=require('modules/settings_service');var ListView=require('modules/mvvm/list_view');var AddonItemTemplateFactory=require('panels/addons/addons_template');var ObservableArray=require('modules/mvvm/observable_array');function AddonsList(root,manager){this._enabled=false;this._listRoot=root;this._addonManager=manager;this._addons=ObservableArray(this._sortByName(this._addonManager.addons.array));['insert','remove'].forEach(e=>this._addonManager.addons.addEventListener(e,this._update.bind(this)));var addonTemplate=AddonItemTemplateFactory(function onClick(addon){SettingsService.navigate('addon-details',{addon:addon});});this._listView=ListView(this._listRoot,this._addons,addonTemplate);}
|
||||
AddonsList.prototype={set enabled(value){if(value!==this._enabled){this._listView.enabled=this._enabled=value;}},_sortByName:function(addons){return addons.sort((a,b)=>{return a._app.manifest.name.localeCompare(b._app.manifest.name);});},_update:function(){return this._filter?Promise.all(this._addonManager.addons.array.map(addon=>this._addonManager.addonAffectsApp(addon,this._filter).then(affects=>affects?addon:undefined))).then(addons=>this._addons.reset(this._sortByName(addons.filter(addon=>addon)))):Promise.resolve(this._addons.reset(this._sortByName(this._addonManager.addons.array)));},setFilter:function(manifestURL){if(!manifestURL){return Promise.resolve();}
|
||||
this._filter=manifestURL;return this._update();},unsetFilter:function(){if(!this._filter){return Promise.resolve();}
|
||||
delete this._filter;return this._update();}};return function ctor_addons_list(root,manager){return new AddonsList(root,manager);};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','shared/manifest_helper'],function(require){'use strict';var ManifestHelper=require('shared/manifest_helper');const PREFERRED_ICON_SIZE=30*(window.devicePixelRatio||1);function addonsTemplate(onClick,addon,recycled){var manifest=new ManifestHelper(addon.instance.manifest||addon.instance.updateManifest);var container=null;var link,span,small,icon;if(recycled){container=recycled;link=container.querySelector('a');span=container.querySelector('span');small=container.querySelector('small');icon=container.querySelector('img');}else{container=document.createElement('li');link=document.createElement('a');span=document.createElement('span');small=document.createElement('small');icon=document.createElement('img');link.href='#';link.classList.add('menu-item');small.classList.add('menu-item-desc');link.appendChild(icon);link.appendChild(span);link.appendChild(small);container.appendChild(link);}
|
||||
navigator.mozApps.mgmt.getIcon(addon.instance,PREFERRED_ICON_SIZE).then((blob)=>{icon.src=URL.createObjectURL(blob);}).catch(()=>{icon.src='../style/images/default.png';});span.textContent=manifest.displayName;small.setAttribute('data-l10n-id',addon.enabled?'enabled':'disabled');addon.observe('enabled',function(enabled){small.setAttribute('data-l10n-id',enabled?'enabled':'disabled');});link.onclick=()=>{onClick(addon);};return container;}
|
||||
return function ctor_addonsTemplate(onClick){return addonsTemplate.bind(null,onClick);};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_panel','modules/addon_manager','panels/addons/addons_list'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var AddonManager=require('modules/addon_manager');var AddonsList=require('panels/addons/addons_list');return function ctor_addons_panel(){var addonsList;return SettingsPanel({onInit:function(panel){var listElement=panel.querySelector('.addon-list');var moreLink=panel.querySelector('.get-more-addons');addonsList=AddonsList(listElement,AddonManager);moreLink.addEventListener('click',function(){moreLink.blur();var activity=new window.MozActivity({name:'marketplace-category',data:{slug:'addons'}});activity.onsuccess=function(){};});},onBeforeShow:function(panel,options){if(options&&options.manifestURL){return addonsList.setFilter(options.manifestURL).then(()=>addonsList.enabled=true);}else{addonsList.enabled=true;}},onBeforeHide:function(){return addonsList.unsetFilter().then(()=>addonsList.enabled=false);}});};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define(['require','panels/apn_editor/apn_editor_const','panels/apn_editor/apn_editor_session'],function(require){'use strict';var ApnEditorConst=require('panels/apn_editor/apn_editor_const');var ApnEditorSession=require('panels/apn_editor/apn_editor_session');var APN_PROPERTIES=ApnEditorConst.APN_PROPERTIES;var APN_PROPERTY_DEFAULTS=ApnEditorConst.APN_PROPERTY_DEFAULTS;var VALUE_CONVERTERS=ApnEditorConst.VALUE_CONVERTERS;function ApnEditor(rootElement){this._inputElements={};APN_PROPERTIES.forEach(function(name){this._inputElements[name]=rootElement.querySelector('.'+name);},this);}
|
||||
ApnEditor.prototype={_convertValue:function ae_convertValue(value,converter){if(converter){return converter(value);}else{return value;}},_fillInputElements:function ae_fillInputElements(inputElements,apn){APN_PROPERTIES.forEach(function(name){var inputElement=inputElements[name];if(inputElement){var value=(apn&&apn[name.toLowerCase()])||APN_PROPERTY_DEFAULTS[name];inputElement.value=this._convertValue(value,VALUE_CONVERTERS.TO_STRING[name]);}},this);},createApn:function ae_createApn(serviceId,apnItem){this._fillInputElements(this._inputElements,apnItem.apn);return ApnEditorSession(serviceId,'new',this._inputElements,apnItem);},editApn:function ae_editApn(serviceId,apnItem){this._fillInputElements(this._inputElements,apnItem.apn);return ApnEditorSession(serviceId,'edit',this._inputElements,apnItem);}};return function ctor_apn_editor(rootElement){return new ApnEditor(rootElement);};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require'],function(require){'use strict';var APN_PROPERTY_DEFAULTS={'apn':'','user':'','password':'','proxy':'','port':'','mmsc':'','mmsproxy':'','mmsport':'','authtype':'notDefined','types':['default'],'protocol':'notDefined','roaming_protocol':'notDefined','mtu':''};var APN_PROPERTIES=Object.keys(APN_PROPERTY_DEFAULTS);var VALUE_CONVERTERS={'TO_STRING':{'types':function(types){if(types&&Array.isArray(types)&&types.length){return types.join(', ');}else{return'default';}}},'TO_DATA':{'types':function(string){return string.split(',').map((str)=>str.trim());}}};return{get APN_PROPERTIES(){return APN_PROPERTIES;},get APN_PROPERTY_DEFAULTS(){return APN_PROPERTY_DEFAULTS;},get VALUE_CONVERTERS(){return VALUE_CONVERTERS;}};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/apn/apn_settings_manager','panels/apn_editor/apn_editor_const','modules/apn/apn_utils'],function(require){'use strict';var ApnSettingsManager=require('modules/apn/apn_settings_manager');var ApnEditorConst=require('panels/apn_editor/apn_editor_const');var ApnUtils=require('modules/apn/apn_utils');var APN_PROPERTIES=ApnEditorConst.APN_PROPERTIES;var VALUE_CONVERTERS=ApnEditorConst.VALUE_CONVERTERS;function ApnEditorSession(serviceId,mode,inputElements,apnItem){this._serviceId=serviceId;this._mode=mode;this._inputElements=inputElements;this._apnItem=apnItem;}
|
||||
ApnEditorSession.prototype={_convertValue:function ae_convertValue(value,converter){if(converter){return converter(value);}else{return value;}},_exportApnSetting:function aes_exportApnSetting(inputElements){var newApnSetting={};APN_PROPERTIES.forEach(function(name){var inputElement=inputElements[name];if(inputElement&&!inputElement.hidden&&inputElement.value){newApnSetting[name.toLowerCase()]=this._convertValue(inputElement.value,VALUE_CONVERTERS.TO_DATA[name]);}},this);return newApnSetting;},_commitNew:function aes_commitNew(){var promises=[];var newApnSetting=this._exportApnSetting(this._inputElements);newApnSetting.types.slice().forEach(function(type){var settingClone=ApnUtils.clone(newApnSetting);settingClone.types=[type];promises.push(ApnSettingsManager.addApn(this._serviceId,settingClone));},this);return Promise.all(promises);},_commitEdit:function aes_commitEdit(){var promises=[];var newApnSetting=this._exportApnSetting(this._inputElements);if(newApnSetting.types.length===1){promises.push(ApnSettingsManager.updateApn(this._serviceId,this._apnItem.id,newApnSetting));}else{newApnSetting.types.forEach(function(type){var settingClone=ApnUtils.clone(newApnSetting);settingClone.types=[type];if(type===this._apnItem.apn.types[0]){promises.push(ApnSettingsManager.updateApn(this._serviceId,this._apnItem.id,settingClone));}else{promises.push(ApnSettingsManager.addApn(this._serviceId,settingClone));}},this);}
|
||||
return Promise.all(promises);},commit:function aes_commit(){switch(this._mode){case'new':return this._commitNew();case'edit':return this._commitEdit();default:console.error('invalid mode');return Promise.resolve();}},cancel:function aes_cancel(){APN_PROPERTIES.forEach(function(name){this._inputElements[name].value='';},this);this._apnItem=null;},get mode(){return this._mode;}};return function ctor_apnESession(serviceId,mode,inputElements,apnItem){return new ApnEditorSession(serviceId,mode,inputElements,apnItem);};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/settings_service','modules/settings_panel','modules/settings_cache','modules/apn/apn_settings_manager','panels/apn_editor/apn_editor'],function(require){'use strict';var SettingsService=require('modules/settings_service');var SettingsPanel=require('modules/settings_panel');var SettingsCache=require('modules/settings_cache');var ApnSettingsManager=require('modules/apn/apn_settings_manager');var ApnEditor=require('panels/apn_editor/apn_editor');var _back=function(){SettingsService.navigate('apn-list');};var _getDialogService=function(){return new Promise(function(resolve){require(['modules/dialog_service'],resolve);});};var _showChangeApnWarning=function(){return _getDialogService().then((DialogService)=>{return DialogService.confirm('change-apn-warning-message1',{title:'apnSettings',submitButton:{id:'yes',style:'recommend'},cancelButton:'cancel'});});};var _showDeleteApnWarning=function(){return _getDialogService().then((DialogService)=>{return DialogService.confirm('delete-apn-confirm',{title:'confirmation',submitButton:{id:'delete-apn',style:'danger'},cancelButton:'cancel'});});};return function ctor_apnEditorPanel(){var _rootElement;var _elements;var _apnEditor;var _editorSession;var _apnItem;var _apnType;var _serviceId;var _leftApp=false;return SettingsPanel({onInit:function ae_onInit(rootElement){_rootElement=rootElement;_apnEditor=new ApnEditor(rootElement);_elements={panel:rootElement.querySelector('.panel'),okBtn:rootElement.querySelector('button.ok'),deteleItem:rootElement.querySelector('.apnSettings-btns li.delete'),deleteBtn:rootElement.querySelector('.apnSettings-btns li.delete button')};_elements.okBtn.onclick=function(){if(!_editorSession){_back();return;}
|
||||
if(_editorSession.mode==='new'){_editorSession.commit().then(_back);_editorSession=null;}else if(_editorSession.mode==='edit'){Promise.all([ApnSettingsManager.getActiveApnId(_serviceId,_apnType),new Promise((resolve)=>{SettingsCache.getSettings(function(results){resolve(results['ril.data.roaming_enabled']);});})]).then(function(results){var activeApnId=results[0];var dataRoamingEnabled=results[1];if(activeApnId===_apnItem.id&&dataRoamingEnabled){return _showChangeApnWarning();}}).then(function(result){if(!result||(result&&result.type==='submit')){_editorSession.commit().then(_back);_editorSession=null;}});}};_elements.deleteBtn.onclick=function(){_showDeleteApnWarning().then((result)=>{if(result.type==='submit'){ApnSettingsManager.removeApn(_serviceId,_apnItem.id).then(_back);}});};},onBeforeShow:function ae_onBeforeShow(rootElement,options){if(_leftApp){_leftApp=false;return;}
|
||||
var mode=options.mode||'new';_apnItem=options.item||{};_apnType=options.type||'default';_serviceId=options.serviceId;switch(mode){case'new':_elements.deteleItem.hidden=true;var defaultApnItem={apn:{types:[_apnType]}};_editorSession=_apnEditor.createApn(_serviceId,defaultApnItem);break;case'edit':_elements.deteleItem.hidden=false;_editorSession=_apnEditor.editApn(_serviceId,_apnItem);break;}
|
||||
_elements.panel.scrollTop=0;},onHide:function ae_onHide(){_leftApp=document.hidden;if(!_leftApp&&_editorSession){_editorSession.cancel();}}});};});
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
define(['require'],function(require){'use strict';function apnTemplate(apnType,onItemclick,onRadioClick,item){var rawApn=item.apn;var radio=document.createElement('gaia-radio');radio.className='split';radio.checked=item.active;radio.name=apnType;var radioLabel=document.createElement('label');radioLabel.classList.add('name');if(!rawApn.carrier||rawApn.carrier==='_custom_'){radioLabel.textContent=rawApn.apn;}else{radioLabel.textContent=rawApn.carrier;}
|
||||
radio.appendChild(radioLabel);var li=document.createElement('li');li.classList.add('apn-item');li.appendChild(radio);var labelClicked=false;if(typeof onRadioClick==='function'){radio.addEventListener('click',event=>{if(!labelClicked&&!radio.checked){onRadioClick(item,radio);}
|
||||
labelClicked=false;event.stopPropagation();event.preventDefault();},true);}
|
||||
if(typeof onItemclick==='function'){radioLabel.addEventListener('mouseup',()=>{labelClicked=true;onItemclick(item);});}
|
||||
return li;}
|
||||
return function ctor_apnTemplate(apnType,onItemclick,onRadioClick){return apnTemplate.bind(null,apnType,onItemclick,onRadioClick);};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_service','modules/settings_panel','modules/settings_cache','modules/mvvm/list_view','modules/apn/apn_settings_manager','panels/apn_list/apn_template_factory'],function(require){'use strict';var SettingsService=require('modules/settings_service');var SettingsPanel=require('modules/settings_panel');var SettingsCache=require('modules/settings_cache');var ListView=require('modules/mvvm/list_view');var ApnSettingsManager=require('modules/apn/apn_settings_manager');var ApnTemplateFactory=require('panels/apn_list/apn_template_factory');var HEADER_L10N_MAP={'default':'dataSettings-header','mms':'messageSettings-header','ims':'imsSettings-header2','supl':'suplSettings-header','dun':'dunSettings-header','fota':'fotaSettings-header'};var _getDialogService=function(){return new Promise(function(resolve){require(['modules/dialog_service'],resolve);});};var _showChangeApnWarning=function(){return _getDialogService().then((DialogService)=>{return DialogService.confirm('change-apn-warning-message1',{title:'apnSettings',submitButton:{id:'yes',style:'recommend'},cancelButton:'cancel'});});};return function ctor_apn_settings_panel(){var _rootElement;var _mainHeader;var _header;var _apnListViewRoot;var _apnListView;var _addApnBtn;var _role;var _apnType='default';var _serviceId=0;var _onApnItemClick=function(serviceId,apnType,apnItem){SettingsService.navigate('apn-editor',{mode:'edit',serviceId:serviceId,type:apnType,item:apnItem});};var _onRadioClick=function(serviceId,apnType,apnItem,radio){var setActive=function(){apnItem.active=true;radio.checked=true;ApnSettingsManager.setActiveApnId(serviceId,apnType,apnItem.id);};SettingsCache.getSettings(function(results){if(results['ril.data.roaming_enabled']===true){_showChangeApnWarning().then((result)=>{if(result.type==='submit'){setActive();}});}else{setTimeout(function(){setActive();});}});};var _onAddApnBtnClick=function(serviceId,apnType){SettingsService.navigate('apn-editor',{mode:'new',serviceId:serviceId,type:apnType});};var _onBackBtnClick=function(){if(_role==='activity'){_role=null;Settings.finishActivityRequest();}else{SettingsService.navigate('apn-settings');}};return SettingsPanel({onInit:function bp_onInit(rootElement){_rootElement=rootElement;_mainHeader=rootElement.querySelector('gaia-header');_header=_mainHeader.querySelector('h1');_apnListViewRoot=rootElement.querySelector('.apn-list');_addApnBtn=rootElement.querySelector('button.add-apn');_mainHeader.addEventListener('action',_onBackBtnClick);},onBeforeShow:function bp_onBeforeShow(rootElement,options){_role=options.role||_role;_apnType=options.type||_apnType;_serviceId=(options.serviceId===undefined)?_serviceId:options.serviceId;_header.setAttribute('data-l10n-id',HEADER_L10N_MAP[_apnType]);var apnTemplate=ApnTemplateFactory(_apnType,_onApnItemClick.bind(null,_serviceId,_apnType),_onRadioClick.bind(null,_serviceId,_apnType));_addApnBtn.onclick=_onAddApnBtnClick.bind(null,_serviceId,_apnType);ApnSettingsManager.queryApns(_serviceId,_apnType).then(function(apnItems){_apnListView=ListView(_apnListViewRoot,apnItems,apnTemplate);});},onHide:function bp_onBeforeHide(){if(_apnListView){_apnListView.destroy();_apnListView=null;}}});};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define(['require','modules/settings_service','modules/settings_panel','modules/apn/apn_settings_manager','shared/toaster','modules/dialog_service'],function(require){'use strict';var SettingsService=require('modules/settings_service');var SettingsPanel=require('modules/settings_panel');var ApnSettingsManager=require('modules/apn/apn_settings_manager');var Toaster=require('shared/toaster');var DialogService=require('modules/dialog_service');return function ctor_apn_settings_panel(){var _serviceId=0;var _rootElement;var _browseApnItems=function(apnType){SettingsService.navigate('apn-list',{type:apnType,serviceId:_serviceId});};var _resetApn=function(){DialogService.confirm('reset-apn-warning-message',{title:'reset-apn-warning-title',submitButton:{id:'reset',style:'danger'},cancelButton:'cancel'}).then((result)=>{if(result.type==='submit'){ApnSettingsManager.restore(_serviceId).then(function(){var toast={messageL10nId:'apnSettings-reset',latency:3000,useTransition:true};Toaster.showToast(toast);});}});};return SettingsPanel({onInit:function asp_onInit(rootElement){_rootElement=rootElement;var apnBtns=rootElement.querySelectorAll('a[data-apn-type]');var resetBtn=rootElement.querySelector('button.reset-apn');var header=rootElement.querySelector('gaia-header');if(DsdsSettings.getNumberOfIccSlots()>1){header.dataset.href='#carrier-detail';}else{header.dataset.href='#carrier';}
|
||||
Array.prototype.forEach.call(apnBtns,function(btn){btn.onclick=_browseApnItems.bind(null,btn.dataset.apnType);});resetBtn.onclick=_resetApn;},onBeforeShow:function asp_onBeforeShow(){_serviceId=DsdsSettings.getIccCardIndexForCellAndDataSettings();}});};});
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
define('modules/navigator/mozPermissionSettings',[],function(){'use strict';return window.navigator.mozPermissionSettings;});define('panels/app_permissions_detail/app_permissions_detail',['require','shared/manifest_helper','modules/settings_service','modules/navigator/mozApps','modules/navigator/mozPermissionSettings'],function(require){'use strict';var ManifestHelper=require('shared/manifest_helper');var SettingsService=require('modules/settings_service');var mozApps=require('modules/navigator/mozApps');var mozPerms=require('modules/navigator/mozPermissionSettings');var PermissionsDetail=function pd(){this._elements=null;this._permissionsTable=null;this._app=null;};PermissionsDetail.prototype={init:function pd_init(elements,permissionsTable){this._elements=elements;this._permissionsTable=permissionsTable;window.addEventListener('applicationuninstall',this.back);},back:function pd_back(){SettingsService.navigate('appPermissions');},showAppDetails:function pd_show_app_details(app,verbose){this._isValidPerm=verbose?this._isValidVerbosePerm:this._isExplicitPerm;this._app=app;var table=this._permissionsTable;var elements=this._elements;var manifest=new ManifestHelper(app.manifest?app.manifest:app.updateManifest);var developer=manifest.developer;elements.detailTitle.textContent=manifest.displayName;elements.uninstallButton.disabled=!app.removable;if(!developer||!('name'in developer)){elements.developerInfos.hidden=true;elements.developerHeader.hidden=true;}else{elements.developerName.textContent=developer.name;elements.developerInfos.hidden=false;elements.developerHeader.hidden=false;if(!developer.url){delete elements.developerLink.href;elements.developerUrl.hidden=true;}else{elements.developerUrl.hidden=false;elements.developerLink.href=developer.url;elements.developerUrl.textContent=developer.url;}}
|
||||
if(!mozPerms){elements.list.hidden=true;return;}else{elements.list.hidden=false;elements.list.innerHTML='';}
|
||||
table.plainPermissions.forEach(function(perm){var value=mozPerms.get(perm,app.manifestURL,app.origin,false);if(this._isValidPerm(app,perm,value)){this._insertPermissionSelect(perm,value);}},this);table.composedPermissions.forEach(function appIterator(perm){var value=null;var display=table.accessModes.some(function modeIterator(mode){var composedPerm=perm+'-'+mode;value=mozPerms.get(composedPerm,app.manifestURL,app.origin,false);if(this._isValidPerm(app,composedPerm,value)){return true;}
|
||||
return false;},this);if(display){this._insertPermissionSelect(perm,value);}},this);elements.header.hidden=!elements.list.children.length;},_isExplicitPerm:function pd_shouldDisplayPerm(app,perm,value){var isExplicit=mozPerms.isExplicit(perm,app.manifestURL,app.origin,false);return(isExplicit&&value!=='unknown');},_isValidVerbosePerm:function pd_displayPermVerbose(app,perm,value){if(app.manifest.type!=='certified'){return(value!=='unknown');}},selectValueChanged:function pd_select_value_changed(evt){var select=evt.target;select.setAttribute('value',select.value);this._changePermission(select.dataset.perm,select.value);},_changePermission:function pd__change_permission(perm,value){if(!mozPerms){return;}
|
||||
var table=this._permissionsTable;if(table.composedPermissions.indexOf(perm)!==-1){table.accessModes.forEach(function modeIterator(mode){var composedPerm=perm+'-'+mode;try{mozPerms.set(composedPerm,value,this._app.manifestURL,this._app.origin,false);}catch(e){console.warn('Failed to set the '+composedPerm+'permission.');}},this);return;}
|
||||
try{mozPerms.set(perm,value,this._app.manifestURL,this._app.origin,false);}catch(e){console.warn('Failed to set the '+perm+'permission.');}},_insertPermissionSelect:function pd__insert_permission_select(perm,value){var item=document.createElement('li');var content=document.createElement('p');var contentL10nId='perm-'+perm.replace(':','-');content.setAttribute('data-l10n-id',contentL10nId);var fakeSelect=document.createElement('span');fakeSelect.classList.add('button','icon','icon-dialog');var select=document.createElement('select');select.dataset.perm=perm;var askOpt=document.createElement('option');askOpt.value='prompt';askOpt.setAttribute('data-l10n-id','ask');select.add(askOpt);var allowOpt=document.createElement('option');allowOpt.value='allow';allowOpt.setAttribute('data-l10n-id','allow2');select.add(allowOpt);var denyOpt=document.createElement('option');denyOpt.value='deny';denyOpt.setAttribute('data-l10n-id','block');select.add(denyOpt);var opt=select.querySelector('[value="'+value+'"]');opt.setAttribute('selected',true);select.value=select.options[select.selectedIndex].textContent;select.setAttribute('value',value);select.onchange=this.selectValueChanged.bind(this);item.onclick=function focusSelect(){select.focus();};fakeSelect.appendChild(select);item.appendChild(content);item.appendChild(fakeSelect);this._elements.list.appendChild(item);},uninstall:function pd_uninstall(){mozApps.mgmt.uninstall(this._app).onsuccess=()=>{this.back();};}};return function ctor_app_permissions_detail(){return new PermissionsDetail();};});define('panels/app_permissions_detail/panel',['require','shared/settings_listener','modules/settings_panel','panels/app_permissions_detail/app_permissions_detail'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var SettingsPanel=require('modules/settings_panel');var PermissionDetail=require('panels/app_permissions_detail/app_permissions_detail');return function ctor_app_permissions_detail_panel(){var elements={};var permissionDetailModule=PermissionDetail();var uninstall=permissionDetailModule.uninstall.bind(permissionDetailModule);var back=permissionDetailModule.back.bind(permissionDetailModule);function bindEvents(doms){doms.uninstallButton.addEventListener('click',uninstall);doms.panelHeader.addEventListener('action',back);}
|
||||
function unbindEvents(doms){doms.uninstallButton.removeEventListener('click',uninstall);doms.panelHeader.removeEventListener('action',back);}
|
||||
return SettingsPanel({onInit:function(panel,options){this._verbose=null;elements={panelHeader:panel.querySelector('gaia-header'),uninstallButton:panel.querySelector('.uninstall-app > button'),list:panel.querySelector('.permissionsListHeader + ul'),header:panel.querySelector('.permissionsListHeader'),developerLink:panel.querySelector('.developer-infos > a'),developerName:panel.querySelector('.developer-infos > a > span'),developerUrl:panel.querySelector('.developer-infos > a > small'),developerInfos:panel.querySelector('.developer-infos'),developerHeader:panel.querySelector('.developer-header'),detailTitle:panel.querySelector('.detail-title')};SettingsListener.observe('debug.verbose_app_permissions',false,function(enabled){this._verbose=enabled;}.bind(this));permissionDetailModule.init(elements,options.permissionsTable);},onBeforeShow:function(panel,options){permissionDetailModule.showAppDetails(options.app,this._verbose);bindEvents(elements);},onBeforeHide:function(){unbindEvents(elements);}});};});
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
define('modules/navigator/mozPermissionSettings',[],function(){'use strict';return window.navigator.mozPermissionSettings;});define('panels/app_permissions_list/app_permissions_list',['require','modules/settings_service','shared/manifest_helper','modules/apps_cache','modules/navigator/mozApps','modules/navigator/mozPermissionSettings'],function(require){'use strict';var SettingsService=require('modules/settings_service');var ManifestHelper=require('shared/manifest_helper');var AppsCache=require('modules/apps_cache');var mozApps=require('modules/navigator/mozApps');var mozPerms=require('modules/navigator/mozPermissionSettings');var PermissionsList=function pl(){this._listRoot=null;this._permissionsTable=null;this._permissionTableHaveProcessed=false;this._apps=null;this._enabled=false;};PermissionsList.prototype={init:function pl_init(listRoot){this._listRoot=listRoot;this._boundOnAppChoose=this._onAppChoose.bind(this);this._boundOnApplicationInstall=this._onApplicationInstall.bind(this);this._boundOnApplicationUninstall=this._onApplicationUninstall.bind(this);},set enabled(value){if(value!==this._enabled){this._enabled=value;if(this._enabled){this._bindEvents();}else{this._unbindEvents();}}},_bindEvents:function pl__bindEvents(){this._listRoot.addEventListener('click',this._boundOnAppChoose);AppsCache.addEventListener('oninstall',this._boundOnApplicationInstall);AppsCache.addEventListener('onuninstall',this._boundOnApplicationUninstall);},_unbindEvents:function pl__unbindEvents(){this._listRoot.removeEventListener('click',this._boundOnAppChoose);AppsCache.removeEventListener('oninstall',this._boundOnApplicationInstall);AppsCache.removeEventListener('onuninstall',this._boundOnApplicationUninstall);},setPermissionsTable:function pl_setPermissionsTable(permissionTable){this._permissionTable=permissionTable;},refresh:function pl_refresh(){var self=this;this._apps=[];if(this._permissionTableHaveProcessed){return this.loadApps();}else{return mozApps.getSelf().then(function(app){return self._initExplicitPermissionsTable(app);}).then(function(){return self.loadApps();});}},_onAppChoose:function pl__onAppChoose(evt){if(evt.target.dataset&&evt.target.dataset.appIndex){SettingsService.navigate('appPermissions-details',{app:this._apps[evt.target.dataset.appIndex],permissionsTable:this._permissionTable});}},_onApplicationInstall:function pl__onApplicationInstall(evt){var app=evt.application;this._apps.push(app);this._sortApps();this.renderList();},_onApplicationUninstall:function pl__onApplicationUninstall(evt){var app;var appIndex;this._apps.some(function findApp(anApp,index){if(anApp.origin===evt.application.origin){app=anApp;appIndex=index;return true;}
|
||||
return false;});if(!app){return;}
|
||||
SettingsService.navigate('appPermissions');this._apps.splice(appIndex,1);this.renderList();},_sortApps:function pl__sortApps(){this._apps.sort(function alphabeticalSort(app,otherApp){var manifest=new ManifestHelper(app.manifest?app.manifest:app.updateManifest);var otherManifest=new ManifestHelper(otherApp.manifest?otherApp.manifest:otherApp.updateManifest);return manifest.name>otherManifest.name;});},_genAppItemTemplate:function pl__genAppItemTemplate(itemData){var icon=document.createElement('img');var item=document.createElement('li');var link=document.createElement('a');var span=document.createElement('span');span.textContent=itemData.name;span.dir='auto';icon.src=itemData.iconSrc;link.dataset.appIndex=itemData.index;link.href='#';link.classList.add('menu-item');link.appendChild(icon);link.appendChild(span);item.appendChild(link);return item;},renderList:function pl_renderList(){this._listRoot.innerHTML='';var listFragment=document.createDocumentFragment();this._apps.forEach(function appIterator(app,index){var manifest=new ManifestHelper(app.manifest?app.manifest:app.updateManifest);var li=this._genAppItemTemplate({name:manifest.displayName,index:index,iconSrc:this._getBestIconURL(app,manifest.icons)});listFragment.appendChild(li);}.bind(this));this._listRoot.appendChild(listFragment);},_initExplicitPermissionsTable:function pl__initExplicitPermissionsTable(app){this._currentApp=app;var table=this._permissionTable;table.explicitCertifiedPermissions=[];table.plainPermissions.forEach(function plainPermIterator(perm){if(this._isExplicitPerm(perm)){table.explicitCertifiedPermissions.push({explicitPermission:perm,permission:perm});}}.bind(this));table.composedPermissions.forEach(function permIterator(perm){table.accessModes.forEach(function modeIterator(mode){var composedPerm=perm+'-'+mode;if(this._isExplicitPerm(composedPerm)){table.explicitCertifiedPermissions.push({explicitPermission:composedPerm,permission:perm});}}.bind(this));}.bind(this));this._permissionTableHaveProcessed=true;},_isExplicitPerm:function pl_isExplicitPerm(perm){return mozPerms.isExplicit(perm,this._currentApp.manifestURL,this._currentApp.origin,false);},loadApps:function pl_loadApps(){var self=this;return AppsCache.apps().then(function(apps){self._loadApps(apps);});},_loadApps:function pl__loadApps(apps){var table=this._permissionTable;apps.forEach(function(app){var manifest=app.manifest?app.manifest:app.updateManifest;if(manifest.type!='certified'){this._apps.push(app);return;}
|
||||
var display=table.explicitCertifiedPermissions.some(function iterator(perm){var permInfo=mozPerms.get(perm.explicitPermission,app.manifestURL,app.origin,false);return permInfo!='unknown';}.bind(this));if(display){this._apps.push(app);}}.bind(this));this._sortApps();this.renderList();},_getBestIconURL:function pl__getBestIconURL(app,icons){if(!icons||!Object.keys(icons).length){return'../style/images/default.png';}
|
||||
var preferredIconSize=30*(window.devicePixelRatio||1);var preferredSize=Number.MAX_VALUE;var max=0;for(var size in icons){size=parseInt(size,10);if(size>max){max=size;}
|
||||
if(size>=preferredIconSize&&size<preferredSize){preferredSize=size;}}
|
||||
if(preferredSize===Number.MAX_VALUE){preferredSize=max;}
|
||||
var url=icons[preferredSize];if(url){return!(/^(http|https|data):/.test(url))?app.origin+url:url;}else{return'../style/images/default.png';}}};return function ctor_permissions_list(){return new PermissionsList();};});define('panels/app_permissions_list/panel',['require','modules/settings_panel','panels/app_permissions_list/app_permissions_list','shared/lazy_loader'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var PermissionList=require('panels/app_permissions_list/app_permissions_list');var LazyLoader=require('shared/lazy_loader');return function ctor_app_permissions_list_panel(){var permissionsTableHasBeenLoaded=false;var elements={};var permissionListModule=PermissionList();return SettingsPanel({onInit:function(panel){elements={list:panel.querySelector('.app-list')};permissionListModule.init(elements.list);},onBeforeShow:function(){if(permissionsTableHasBeenLoaded){permissionListModule.refresh();}else{LazyLoader.getJSON('/resources/permissions_table.json').then(function(data){permissionsTableHasBeenLoaded=true;permissionListModule.setPermissionsTable(data);permissionListModule.refresh();});}
|
||||
permissionListModule.enabled=true;},onBeforeHide:function(){permissionListModule.enabled=false;}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define('panels/app_storage/panel',['require','modules/settings_panel','modules/app_storage','modules/storage_helper'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var AppStorage=require('modules/app_storage');var StorageHelper=require('modules/storage_helper');return function ctor_app_storage_panel(){var _spaceBarElement=null;var _totalSpaceText=null;var _usedSpaceText=null;var _freeSpaceText=null;var _updateUsePercentage=function(){_spaceBarElement.value=AppStorage.usedPercentage;};var _refreshText=function(element,size){StorageHelper.showFormatedSize(element,'storageSize',size);};var _updateTotalSize=function(){_refreshText(_totalSpaceText,AppStorage.totalSize);};var _updateUsedSize=function(){_refreshText(_usedSpaceText,AppStorage.usedSize);};var _updateFreeSize=function(){_refreshText(_freeSpaceText,AppStorage.freeSize);};var _updateElements=function(){_updateUsePercentage();_updateTotalSize();_updateUsedSize();_updateFreeSize();};return SettingsPanel({onInit:function(panel){_spaceBarElement=panel.querySelector('.apps-space-bar');_totalSpaceText=panel.querySelector('.apps-total-space');_usedSpaceText=panel.querySelector('.apps-used-space');_freeSpaceText=panel.querySelector('.apps-free-space');},onBeforeShow:function(){AppStorage.observe('usedPercentage',_updateUsePercentage);AppStorage.observe('totalSize',_updateTotalSize);AppStorage.observe('usedSize',_updateUsedSize);AppStorage.observe('freeSize',_updateFreeSize);_updateElements();AppStorage.updateInfo();},onHide:function(){AppStorage.unobserve('usedPercentage',_updateUsePercentage);AppStorage.unobserve('totalSize',_updateTotalSize);AppStorage.unobserve('usedSize',_updateUsedSize);AppStorage.unobserve('freeSize',_updateFreeSize);}});};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/settings_panel','modules/battery'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var Battery=require('modules/battery');return function ctor_battery_panel(){var _batteryLevelText=null;var _batteryTimeText=null;var _getBatteryTimeL10n=function(type){type=type==='charging'?'charging':'discharging';var time=Battery[type+'Time'];var l10nAttrs={id:'battery-'+type+'-calculating',args:{}};if(time!==Infinity&&time>0){var timeLeft=new Date(0,0,0,0,0,time);l10nAttrs.args.hours=timeLeft.getHours();l10nAttrs.args.minutes=timeLeft.getMinutes();if(l10nAttrs.args.hours>0){l10nAttrs.id='battery-'+type+'-hours';}else{l10nAttrs.id='battery-'+type+'-minutes';}}else if(time!==Infinity&&time===0){l10nAttrs.id='battery-'+type+'-complete';}
|
||||
return l10nAttrs;};var _refreshText=function(){document.l10n.setAttributes(_batteryLevelText,'battery-current-level',{level:Battery.level});if(Battery.state==='unplugged'){var l10nDischarging=_getBatteryTimeL10n('discharging');document.l10n.setAttributes(_batteryTimeText,l10nDischarging.id,l10nDischarging.args);}
|
||||
else{var l10nCharging=_getBatteryTimeL10n('charging');document.l10n.setAttributes(_batteryTimeText,l10nCharging.id,l10nCharging.args);}};return SettingsPanel({onInit:function bp_onInit(rootElement){_batteryLevelText=rootElement.querySelector('#battery-level');_batteryTimeText=rootElement.querySelector('#battery-time');},onBeforeShow:function bp_onBeforeShow(rootElement){Battery.observe('level',_refreshText);Battery.observe('state',_refreshText);Battery.observe('chargingTime',_refreshText);Battery.observe('dischargingTime',_refreshText);_refreshText();},onBeforeHide:function bp_onBeforeHide(){Battery.unobserve(_refreshText);}});};});
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
define('panels/browsing_privacy/browsing_privacy',['require'],function(require){'use strict';function BrowsingPrivacy(){}
|
||||
BrowsingPrivacy.prototype.clearHistory=function(){navigator.mozSettings.createLock().set({'clear.browser.history':true});};BrowsingPrivacy.prototype.clearPrivateData=function(){navigator.mozSettings.createLock().set({'clear.browser.private-data':true});};return function(){return new BrowsingPrivacy();};});define('panels/browsing_privacy/panel',['require','modules/settings_panel','panels/browsing_privacy/browsing_privacy','modules/dialog_service'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var BrowsingPrivacy=require('panels/browsing_privacy/browsing_privacy');var DialogService=require('modules/dialog_service');var browsingPrivacy=BrowsingPrivacy();var clearHistoryButton,clearPrivateDataButton;function onInit(panel){clearHistoryButton=panel.querySelector('.clear-history-button');clearPrivateDataButton=panel.querySelector('.clear-private-data-button');clearHistoryButton.addEventListener('click',handleClearHistoryClick);clearPrivateDataButton.addEventListener('click',handleClearPrivateDataClick);}
|
||||
function handleClearHistoryClick(){DialogService.confirm('confirm-clear-history-desc',{title:'confirm-clear-history-title',submitButton:{id:'clear',style:'danger'},cancelButton:'cancel'}).then((result)=>{if(result.type==='submit'){return browsingPrivacy.clearHistory();}});}
|
||||
function handleClearPrivateDataClick(){DialogService.confirm('confirm-clear-cookies-cache-desc',{title:'confirm-clear-cookies-cache-title',submitButton:{id:'delete',style:'danger'},cancelButton:'cancel'}).then((result)=>{if(result.type==='submit'){return browsingPrivacy.clearPrivateData();}});}
|
||||
function onUninit(){clearHistoryButton.removeEventListener('click',handleClearHistoryClick);clearPrivateDataButton.removeEventListener('click',handleClearPrivateDataClick);}
|
||||
return function(){return SettingsPanel({onInit:onInit,onUninit:onUninit});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define([],function(){'use strict';const NETWORK_TYPE_CATEGORY={'gprs':'gsm','edge':'gsm','umts':'gsm','hsdpa':'gsm','hsupa':'gsm','hspa':'gsm','hspa+':'gsm','lte':'gsm','gsm':'gsm','is95a':'cdma','is95b':'cdma','1xrtt':'cdma','evdo0':'cdma','evdoa':'cdma','evdob':'cdma','ehrpd':'cdma'};const CALL_FORWARD_REASON={'UNCONDITIONAL':0,'MOBILE_BUSY':1,'NO_REPLY':2,'NOT_REACHABLE':3};const CALL_FORWARD_REASON_MAPPING={'unConditional':CALL_FORWARD_REASON.UNCONDITIONAL,'mobileBusy':CALL_FORWARD_REASON.MOBILE_BUSY,'noReply':CALL_FORWARD_REASON.NO_REPLY,'notReachable':CALL_FORWARD_REASON.NOT_REACHABLE};const CALL_FORWARD_ACTION={'DISABLE':0,'ENABLE':1,'QUERY_STATUS':2,'REGISTRATION':3,'ERASURE':4};const CLIR_MAPPING={'CLIR_DEFAULT':0,'CLIR_INVOCATION':1,'CLIR_SUPPRESSION':2};const CallConstant={'NETWORK_TYPE_CATEGORY':NETWORK_TYPE_CATEGORY,'CALL_FORWARD_REASON':CALL_FORWARD_REASON,'CALL_FORWARD_REASON_MAPPING':CALL_FORWARD_REASON_MAPPING,'CALL_FORWARD_ACTION':CALL_FORWARD_ACTION,'CLIR_MAPPING':CLIR_MAPPING};return CallConstant;});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define(['require','panels/call/call_settings_task_scheduler','modules/base/module','modules/mvvm/observable','panels/call/call_utils','panels/call/call_constant'],function(require){'use strict';var CallSettingsTaskScheduler=require('panels/call/call_settings_task_scheduler');var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var CallUtils=require('panels/call/call_utils');var CallConstant=require('panels/call/call_constant');var mozSettings=window.navigator.mozSettings;var CallForwarding=Module.create(function CallForwarding(cardIndex){this.super(Observable).call(this);this._cardIndex=cardIndex;this._cfReasonStates=[0,0,0,0];}).extend(Observable);Observable.defineObservableProperty(CallForwarding.prototype,'state',{readonly:true,value:'normal'});Object.keys(CallConstant.CALL_FORWARD_REASON_MAPPING).forEach((cfOptionName)=>{Observable.defineObservableProperty(CallForwarding.prototype,cfOptionName+'Number',{readonly:true,value:null});Observable.defineObservableProperty(CallForwarding.prototype,cfOptionName+'Enabled',{readonly:true,value:false});});CallForwarding.prototype._getConn=function(){var conn=window.navigator.mozMobileConnections[this._cardIndex];if(!conn){this.throw('We can\'t find the conn object on card '+this._cardIndex);}else{return conn;}};CallForwarding.prototype.setCallForwardingValues=function(options){this._state='requesting';var promise=new Promise((resolve,reject)=>{var conn=this._getConn(this._cardIndex);var key=options.key;var number=options.number;var enabled=!!options.enabled;if(!key){this._state='normal';reject();}else if(this._cfReasonStates[CallConstant.CALL_FORWARD_REASON_MAPPING[key]]===enabled){this._state='normal';reject();}else{var mozMobileCFInfo={};mozMobileCFInfo.action=enabled?CallConstant.CALL_FORWARD_ACTION.REGISTRATION:CallConstant.CALL_FORWARD_ACTION.DISABLE;mozMobileCFInfo.reason=CallConstant.CALL_FORWARD_REASON_MAPPING[key];mozMobileCFInfo.serviceClass=conn.ICC_SERVICE_CLASS_VOICE;if(enabled&&!CallUtils.isPhoneNumberValid(number)){this._state='normal';reject({name:'callForwardingInvalidNumberError'});}else{mozMobileCFInfo.number=number;mozMobileCFInfo.timeSeconds=mozMobileCFInfo.reason!=CallConstant.CALL_FORWARD_REASON.NO_REPLY?0:20;CallSettingsTaskScheduler.enqueue({type:'CALL_FORWARDING',func:()=>{return conn.setCallForwardingOption(mozMobileCFInfo);}}).then(()=>{this._state='normal';resolve({key:key,action:mozMobileCFInfo.action});}).catch(()=>{this._state='normal';reject({name:'callForwardingSetError'});});}}});return promise;};CallForwarding.prototype._getOption=function(optionName){var conn=this._getConn();if(!(optionName in CallConstant.CALL_FORWARD_REASON)){this.debug('Your optionName may be wrong - ',optionName);return Promise.reject();}
|
||||
return conn.getCallForwardingOption(CallConstant.CALL_FORWARD_REASON[optionName]);};CallForwarding.prototype.refresh=function(){this._state='requesting';return CallSettingsTaskScheduler.enqueue({type:'CALL_FORWARDING',func:()=>{return Promise.all([this._getOption('UNCONDITIONAL'),this._getOption('MOBILE_BUSY'),this._getOption('NO_REPLY'),this._getOption('NOT_REACHABLE')]);}}).then((results)=>{var promise=new Promise((resolve,reject)=>{var storedOptions={};var cfOptions={'unConditional':results[0],'mobileBusy':results[1],'noReply':results[2],'notReachable':results[3]};Object.keys(cfOptions).forEach(function(cfOptionName){var rules=cfOptions[cfOptionName];var rule=CallUtils.findActiveVoiceRule(rules);if(rule){this._cfReasonStates[CallConstant.CALL_FORWARD_REASON_MAPPING[cfOptionName]]=1;this['_'+cfOptionName+'Number']=rule.number;this['_'+cfOptionName+'Enabled']=true;if(cfOptionName==='unConditional'){storedOptions['ril.cf.carrier.enabled']={enabled:true,index:this._cardIndex};}}else{this._cfReasonStates[CallConstant.CALL_FORWARD_REASON_MAPPING[cfOptionName]]=0;this['_'+cfOptionName+'Number']='';this['_'+cfOptionName+'Enabled']=false;if(cfOptionName==='unConditional'){storedOptions['ril.cf.carrier.enabled']={enabled:false,index:this._cardIndex};}}},this);mozSettings.createLock().set(storedOptions).then(()=>{this._state='normal';resolve(cfOptions);},()=>{this._state='error';this.error('Something error happened when storing into settings db');reject();});});return promise;},()=>{this._state='error';this.error('Something error happened when refresh');});};CallForwarding.prototype.isUnconditionalCFOn=function(){return this._cfReasonStates[0]===1;};return CallForwarding;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/base/module','modules/base/task_scheduler'],function(require){'use strict';var Module=require('modules/base/module');var TaskScheduler=require('modules/base/task_scheduler');var CallSettingsTaskScheduler=Module.create(function CallSettingsTaskScheduler(){this.super(TaskScheduler).call(this);}).extend(TaskScheduler);const TASK_TYPE={GENERAL:0,CALL_FORWARDING:1,CALL_WAITING:2,CALLER_ID_PREF:3};Object.defineProperty(CallSettingsTaskScheduler,'TASK_TYPE',{enumerable:true,configurable:false,get:function(){return TASK_TYPE;}});CallSettingsTaskScheduler.prototype.enqueue=function(task){var{type,func}=task;if(!CallSettingsTaskScheduler.TASK_TYPE[type]){this.throw('You are enqueuing an unknown type - ',type,'please check again');}else{return TaskScheduler.prototype.enqueue.call(this,{type:type,func:func,cancelable:(type!=='GENERAL')});}};return CallSettingsTaskScheduler();});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define([],function(){'use strict';var conns=window.navigator.mozMobileConnections;var CallUtils={isPhoneNumberValid:function(number){if(number){var re=/^([\+]*[0-9])+$/;if(re.test(number)){return true;}}
|
||||
return false;},findActiveVoiceRule:function(rules){rules=rules||[];return rules.find((rule)=>{return(rule.active&&(rule.serviceClass&conns[0].ICC_SERVICE_CLASS_VOICE)!==0);});}};return CallUtils;});
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
define(['require','panels/call/call_settings_task_scheduler','panels/call/call_constant','shared/settings_helper','modules/settings_panel','modules/settings_cache','modules/settings_service','dsds_settings','modules/dialog_service'],function(require){'use strict';var CallSettingsTaskScheduler=require('panels/call/call_settings_task_scheduler');var CallConstant=require('panels/call/call_constant');var SettingsHelper=require('shared/settings_helper');var SettingsPanel=require('modules/settings_panel');var SettingsCache=require('modules/settings_cache');var SettingsService=require('modules/settings_service');var DsdsSettings=require('dsds_settings');var DialogService=require('modules/dialog_service');return function ctor_call_panel(){return SettingsPanel({onInit:function(panel,options){this._cardIndex=options.cardIndex||0;this._conns=window.navigator.mozMobileConnections;this._conn=this._conns[this._cardIndex];var $=function(selector){return panel.querySelector(selector);};this._elements={panel:panel,header:$('gaia-header'),rilCallerId:$('#ril-callerId'),fdnDesc:$('#fdnSettings-desc'),alertPanel:$('.cw-alert'),alertPanelSetButton:$('.cw-alert .cw-alert-set'),alertPanelConfirmInput:$('.cw-alert .cw-alert-checkbox'),alertPanelCancelButton:$('.cw-alert .cw-alert-cancel'),alertLabel:$('#menuItem-callWaiting .cw-alert-icon'),callFdnItem:$('#menuItem-callFdn'),callFdnAnchor:$('#menuItem-callFdn a'),callWaitingItem:$('#menuItem-callWaiting'),callWaitingInput:$('#menuItem-callWaiting gaia-switch'),callForwardingItem:$('#menuItem-callForwarding'),callForwardingAnchor:$('#menuItem-callForwarding a'),callBarringItem:$('#menuItem-callBarring'),callerIdItem:$('#menuItem-callerId'),voiceMailItem:$('.menuItem-voicemail'),voiceMailDesc:$('#voiceMail-desc'),voicePrivacyItem:$('#menuItem-voicePrivacyMode'),voicePrivacyInput:$('#menuItem-voicePrivacyMode gaia-switch')};if(DsdsSettings.getNumberOfIccSlots()>1){this._elements.header.setAttribute('data-href','#call-iccs');}
|
||||
this._bindPanelReadyEvent();this._bindCallForwardingMenuItemClickEvent();this._bindCallFdnMenuItemClickEvent();this._addVoiceTypeChangeListeners();this._initCallerId();this._initCallWaiting();this._initVoiceMailSettings();this._initVoicePrivacyModeChangeEvent();this._initVoicemailClickEvent();this._initCallWaitingAlertLabelClickEvent();this._initCallWaitingAlertCancelButtonClickEvent();CallSettingsTaskScheduler.observe('isLocked',(isLocked)=>{this._enableTapOn('callerIdItem',!isLocked);this._enableTapOn('callWaitingInput',!isLocked);});this._refreshCallSettingItems();},onBeforeShow:function(panel,options){if(typeof options.cardIndex!=='undefined'){this._cardIndex=options.cardIndex;this._conn=this._conns[options.cardIndex];}
|
||||
this._initFDNItem();this._updateNetworkTypeLimitedItemsVisibility(this._conn.voice&&this._conn.voice.type);this._refreshCallSettingItems();},_bindPanelReadyEvent:function(){window.addEventListener('panelready',(evt)=>{switch(evt.detail.current){case'#call':if(evt.detail.previous==='#call-forwarding'||evt.detail.previous==='#call-cbSettings'){return;}
|
||||
break;}});},_bindCallForwardingMenuItemClickEvent:function(){this._elements.callForwardingAnchor.onclick=()=>{SettingsService.navigate('call-forwarding',{cardIndex:this._cardIndex});};},_bindCallFdnMenuItemClickEvent:function(){this._elements.callFdnAnchor.onclick=()=>{SettingsService.navigate('call-fdnSettings',{cardIndex:this._cardIndex});};},_initCallerId:function(){this._elements.rilCallerId.onblur=()=>{var clirMode=CallConstant.CLIR_MAPPING[this._elements.rilCallerId.value];this._conn.setCallingLineIdRestriction(clirMode).then(()=>{},()=>{this._updateCallerIdPreference().then(()=>{this._updateCallerIdItemState();});});};navigator.mozSettings.addObserver('ril.clirMode',()=>{this._updateCallerIdItemState();});},_initCallWaiting:function(){this._elements.alertPanelSetButton.onclick=()=>{var checked=this._elements.alertPanelConfirmInput.checked;this._conn.setCallWaitingOption(checked).then(()=>{this._elements.alertPanel.hidden=true;this._updateCallWaitingItemState();},()=>{this._elements.alertPanel.hidden=true;this._updateCallWaitingItemState();});};this._elements.callWaitingInput.addEventListener('change',()=>{var checked=this._elements.callWaitingInput.checked;this._conn.setCallWaitingOption(checked).then(()=>{this._updateCallWaitingItemState();},()=>{this._updateCallWaitingItemState();});});},_initVoiceMailSettings:function(){SettingsCache.getSettings((results)=>{var settings=navigator.mozSettings;var voicemail=navigator.mozVoicemail;var updateVMNumber=false;var numbers=results['ril.iccInfo.mbdn']||[];[].forEach.call(this._conns,(conn,index)=>{var number=numbers[index];if(!number&&voicemail){number=voicemail.getNumber(index);if(number){updateVMNumber=true;numbers[index]=number;}}});if(updateVMNumber){settings.createLock().set({'ril.iccInfo.mbdn':numbers}).then(()=>{this._updateVoiceMailItemState();settings.addObserver('ril.iccInfo.mbdn',()=>{this._updateVoiceMailItemState();});});}else{this._updateVoiceMailItemState();settings.addObserver('ril.iccInfo.mbdn',()=>{this._updateVoiceMailItemState();});}});},_initFDNItem:function(){var iccId=navigator.mozMobileConnections[this._cardIndex].iccId;if(iccId){var icc=navigator.mozIccManager.getIccById(iccId);if(icc){icc.getServiceState('fdn').then((hasFdn)=>{this._elements.callFdnItem.hidden=!hasFdn;});}}},_initVoicemailClickEvent:function(){this._elements.voiceMailItem.onclick=()=>{DialogService.show('call-voiceMailSettings');};},_initCallWaitingAlertLabelClickEvent:function(){this._elements.alertLabel.onclick=()=>{this._elements.alertPanelConfirmInput.checked=false;this._elements.alertPanel.hidden=false;};},_initVoicePrivacyModeChangeEvent:function(){var defaultVoicePrivacySettings=[].map.call(this._conns,()=>{return false;});var voicePrivacyHelper=SettingsHelper('ril.voicePrivacy.enabled',defaultVoicePrivacySettings);this._elements.voicePrivacyInput.addEventListener('change',()=>{var checked=this._elements.voicePrivacyInput.checked;voicePrivacyHelper.get((values)=>{var originalValue=!checked;this._conn.setVoicePrivacyMode(checked).then(()=>{values[this._cardIndex]=!originalValue;voicePrivacyHelper.set(values);},()=>{this._elements.voicePrivacyInput.checked=originalValue;});});});},_initCallWaitingAlertCancelButtonClickEvent:function(){this._elements.alertPanelCancelButton.onclick=()=>{this._elements.alertPanel.hidden=true;};},_addVoiceTypeChangeListeners:function(){var voiceTypes=[].map.call(this._conns,()=>{return null;});[].forEach.call(this._conns,(conn,index)=>{voiceTypes[index]=conn.voice.type;conn.addEventListener('voicechange',()=>{var newType=conn.voice.type;if(index!==this._cardIndex||voiceTypes[index]===newType){return;}
|
||||
voiceTypes[index]=newType;this._updateNetworkTypeLimitedItemsVisibility(newType);this._refreshCallSettingItems();});});},_updateNetworkTypeLimitedItemsVisibility:function(voiceType){this._elements.callForwardingItem.hidden=this._elements.callBarringItem.hidden=this._elements.callWaitingItem.hidden=this._elements.callerIdItem.hidden=(CallConstant.NETWORK_TYPE_CATEGORY[voiceType]!=='gsm');this._elements.voicePrivacyItem.hidden=(CallConstant.NETWORK_TYPE_CATEGORY[voiceType]!=='cdma');},_refreshCallSettingItems:function(){this._updateVoiceMailItemState();this._updateFdnStatus();this._updateVoicePrivacyItemState();this._updateCallerIdPreference().then(()=>{this._updateCallerIdItemState();});this._updateCallWaitingItemState();},_enableTapOn:function(elementName,enable){var element=this._elements[elementName];if(!element){return;}
|
||||
if(enable){element.removeAttribute('aria-disabled');}else{element.setAttribute('aria-disabled',true);}},_updateCallerIdPreference:function(){return CallSettingsTaskScheduler.enqueue({type:'CALLER_ID_PREF',func:()=>{return this._conn.getCallingLineIdRestriction();}}).then((result)=>{var promise=new Promise((resolve)=>{var value=0;if(result){switch(result.m){case 1:case 3:case 4:switch(result.n){case 1:case 2:case 0:value=result.n;break;default:value=0;break;}
|
||||
break;case 0:case 2:default:value=0;break;}
|
||||
SettingsCache.getSettings((results)=>{var preferences=results['ril.clirMode']||[0,0];preferences[this._cardIndex]=value;navigator.mozSettings.createLock().set({'ril.clirMode':preferences}).then(resolve,resolve);});}});return promise;});},_updateCallerIdItemState:function(){if(this._elements.callerIdItem.hidden){return Promise.resolve();}else{var promise=new Promise((resolve)=>{SettingsCache.getSettings((results)=>{var preferences=results['ril.clirMode'];var preference=preferences&&preferences[this._cardIndex];var value;switch(preference){case 1:value='CLIR_INVOCATION';break;case 2:value='CLIR_SUPPRESSION';break;case 0:default:value='CLIR_DEFAULT';break;}
|
||||
this._elements.rilCallerId.value=value;});});return promise;}},_updateCallWaitingItemState:function(){if(this._elements.callWaitingItem.hidden){return Promise.resolve();}else{return CallSettingsTaskScheduler.enqueue({type:'CALL_WAITING',func:()=>{return this._conn.getCallWaitingOption();}}).then((enabled)=>{this._elements.callWaitingInput.checked=enabled;if(enabled){this._elements.callWaitingItem.dataset.state='on';}else{this._elements.callWaitingItem.dataset.state='off';}}).catch(()=>{this._elements.callWaitingItem.dataset.state='unknown';});}},_updateVoiceMailItemState:function(){this._elements.voiceMailDesc.textContent='';SettingsCache.getSettings((results)=>{var numbers=results['ril.iccInfo.mbdn'];var number=numbers[this._cardIndex];if(number){this._elements.voiceMailDesc.removeAttribute('data-l10n-id');this._elements.voiceMailDesc.textContent=number;}else{this._elements.voiceMailDesc.setAttribute('data-l10n-id','voiceMail-number-notSet');}});},_updateVoicePrivacyItemState:function(){if(this._elements.voicePrivacyItem.hidden){return;}
|
||||
this._conn.getVoicePrivacyMode().then((enabled)=>{this._elements.voicePrivacyInput.checked=enabled;},(error)=>{console.log('get voice privacy mode error');console.log(error);});},_updateFdnStatus:function(){var iccId=navigator.mozMobileConnections[this._cardIndex].iccId;if(iccId){var icc=navigator.mozIccManager.getIccById(iccId);if(icc){icc.getCardLock('fdn').then((result)=>{var enabled=result.enabled;this._elements.fdnDesc.setAttribute('data-l10n-id',enabled?'enabled':'disabled');this._elements.callForwardingItem.hidden=enabled;});}}}});};});
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
|
||||
define('panels/call_barring/call_barring',['require','modules/mvvm/observable'],function(require){'use strict';var Observable=require('modules/mvvm/observable');var _cbAction={CALL_BARRING_BAOC:0,CALL_BARRING_BOIC:1,CALL_BARRING_BOICexHC:2,CALL_BARRING_BAIC:3,CALL_BARRING_BAICr:4};var _cbServiceMapper={'baoc':_cbAction.CALL_BARRING_BAOC,'boic':_cbAction.CALL_BARRING_BOIC,'boicExhc':_cbAction.CALL_BARRING_BOICexHC,'baic':_cbAction.CALL_BARRING_BAIC,'baicR':_cbAction.CALL_BARRING_BAICr};var call_barring_prototype={baoc:'',boic:'',boicExhc:'',baic:'',baicR:'',baoc_enabled:'',boic_enabled:'',boicExhc_enabled:'',baic_enabled:'',baicR_enabled:'',updating:false,_enable:function(elementArray){elementArray.forEach(function disable(element){this[element+'_enabled']=true;}.bind(this));if(!!this.baoc){this.boic_enabled=false;this.boicExhc_enabled=false;}
|
||||
if(!!this.baic){this.baicR_enabled=false;}},_disable:function(elementArray){elementArray.forEach(function disable(element){this[element+'_enabled']=false;}.bind(this));},_getRequest:function(api,id){var callOptions={'program':id,'serviceClass':api.ICC_SERVICE_CLASS_VOICE};return new Promise(function(resolve,reject){var request=api.getCallBarringOption(callOptions);request.onsuccess=function(){resolve(request.result.enabled);};request.onerror=function(){reject(request.error);};});},_setRequest:function(api,options){return new Promise(function(resolve,reject){var request=api.setCallBarringOption(options);request.onsuccess=function(){resolve();};request.onerror=function(){reject(request.error);};});},set:function(api,setting,password){if(!!this.updating){return;}
|
||||
if(!api){return;}
|
||||
var self=this;return new Promise(function(resolve,reject){self.updating=true;var allElements=['baoc','boic','boicExhc','baic','baicR'];self._disable(allElements);var options={'program':_cbServiceMapper[setting],'enabled':!self[setting],'password':password,'serviceClass':api.ICC_SERVICE_CLASS_VOICE};var error=null;self._setRequest(api,options).then(function success(){self[setting]=!self[setting];}).catch(function errored(err){error=err;}).then(function doAnyways(){self.updating=false;self._enable(allElements);if(!error){resolve();}else{reject(error);}});});},getAll:function(api){if(!!this.updating){return;}
|
||||
if(!api){return;}
|
||||
var allElements=['baoc','boic','boicExhc','baic','baicR'];var self=this;self.updating=true;return new Promise(function(resolve,reject){self._disable(allElements);var setting='baoc';self._getRequest(api,_cbServiceMapper[setting]).then(function received(value){self[setting]=value;setting='boic';return self._getRequest(api,_cbServiceMapper[setting]);}).then(function received(value){self[setting]=value;setting='boicExhc';return self._getRequest(api,_cbServiceMapper[setting]);}).then(function received(value){self[setting]=value;setting='baic';return self._getRequest(api,_cbServiceMapper[setting]);}).then(function received(value){self[setting]=value;setting='baicR';return self._getRequest(api,_cbServiceMapper[setting]);}).then(function received(value){self[setting]=value;}).catch(function errorWhileProcessing(err){console.error('Error receiving Call Barring status: '+
|
||||
err.name+' - '+err.message);}).then(function afterEverythingDone(){self.updating=false;self._enable(allElements);resolve();});});}};var callBarring=Observable(call_barring_prototype);return callBarring;});define('panels/call_barring/passcode_dialog',['require'],function(require){'use strict';var InputPasscodeScreen=function(){const PIN_SIZE=4;var panel,container,input,btnOK,btnCancel;var _passcodeDigits,_passcodeBuffer;function _getInputKey(evt){var code=evt.charCode;if(code!==0&&(code<0x30||code>0x39)){return;}
|
||||
var key=String.fromCharCode(code);if(evt.charCode===0){if(_passcodeBuffer.length>0){_passcodeBuffer=_passcodeBuffer.substring(0,_passcodeBuffer.length-1);}}else if(_passcodeBuffer.length<PIN_SIZE){_passcodeBuffer+=key;}
|
||||
_updateUI();}
|
||||
function _updateUI(){for(var i=0;i<PIN_SIZE;i++){if(i<_passcodeBuffer.length){_passcodeDigits[i].dataset.dot=true;}else{delete _passcodeDigits[i].dataset.dot;}}
|
||||
btnOK.disabled=_passcodeBuffer.length===PIN_SIZE?false:true;}
|
||||
function _init(){panel=document.getElementById('cb-passcode');container=panel.querySelector('.passcode-container');input=panel.querySelector('.passcode-input');_passcodeDigits=panel.querySelectorAll('.passcode-digit');_passcodeBuffer='';btnOK=document.getElementById('cb-passcode-ok-btn');btnCancel=document.getElementById('cb-passcode-cancel-btn');container.addEventListener('click',function(evt){input.focus();evt.preventDefault();});input.addEventListener('keypress',_getInputKey);}
|
||||
function okClicked(){if(_passcodeBuffer.length===4){var password=_passcodeBuffer;_closePanel();this.resolve(password);}}
|
||||
function cancelClicked(){_closePanel();this.reject();}
|
||||
function _showPanel(){return new Promise((resolve,reject)=>{panel.hidden=false;input.focus();this.resolve=resolve;this.reject=reject;btnOK.addEventListener('click',okClicked.bind(this));btnCancel.addEventListener('click',cancelClicked.bind(this));});}
|
||||
function _closePanel(){btnOK.removeEventListener('click',okClicked);btnCancel.removeEventListener('click',cancelClicked);_passcodeBuffer='';_updateUI();panel.hidden=true;}
|
||||
return{init:_init,show:_showPanel};};return InputPasscodeScreen;});define('panels/call_barring/panel',['require','modules/settings_panel','panels/call_barring/call_barring','panels/call_barring/passcode_dialog','shared/toaster'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var CallBarring=require('panels/call_barring/call_barring');var InputPasscodeScreen=require('panels/call_barring/passcode_dialog');var Toaster=require('shared/toaster');return function ctor_call_barring(){var _callBarring=CallBarring;var _passcodeScreen=InputPasscodeScreen();var _mobileConnection;var _cbSettings={};var _refresh;var _updating;function _updateMobileConnection(){_mobileConnection=window.navigator.mozMobileConnections[DsdsSettings.getIccCardIndexForCallSettings()];}
|
||||
function refresh_on_load(e){if(e.detail.current==='#call-cbSettings'&&e.detail.previous==='#call-barring-passcode-change'){_refresh=false;}}
|
||||
function _updateCallBarringItem(item,newStatus){var descText=item.querySelector('details');var input=item.querySelector('gaia-switch');if(typeof newStatus.disabled==='boolean'){newStatus.disabled?item.setAttribute('aria-disabled',true):item.removeAttribute('aria-disabled');if(input){input.disabled=newStatus.disabled;}}
|
||||
if(input&&typeof newStatus.checked==='boolean'){input.checked=newStatus.checked;}
|
||||
function inputValue(){return input&&input.checked?'enabled':'disabled';}
|
||||
if(descText){var text=_updating?'callSettingsQuery':inputValue();document.l10n.setAttributes(descText,text);}}
|
||||
function _callBarringClick(evt){var input=evt.target;evt.preventDefault();_passcodeScreen.show().then(function confirmed(passcode){var inputID=input.parentNode.id;var setting=inputID.substring(6);_updateMobileConnection();_callBarring.set(_mobileConnection,setting,passcode).catch(function error(err){var toast;if(err.name==='GenericFailure'){toast={messageL10nId:'callBarring-update-generic-error',latency:2000,useTransition:true};}else{toast={messageL10nId:'callBarring-update-item-error',messageL10nArgs:{'error':err.name||'unknown'},latency:2000,useTransition:true};}
|
||||
Toaster.showToast(toast);});}).catch(function canceled(){});}
|
||||
return SettingsPanel({onInit:function cb_onInit(panel){_cbSettings={baoc:document.getElementById('li-cb-baoc'),boic:document.getElementById('li-cb-boic'),boicExhc:document.getElementById('li-cb-boicExhc'),baic:document.getElementById('li-cb-baic'),baicR:document.getElementById('li-cb-baicR')};for(var i in _cbSettings){_cbSettings[i].querySelector('gaia-switch').addEventListener('click',_callBarringClick);}
|
||||
_updateMobileConnection();_passcodeScreen.init();},onBeforeShow:function cb_onBeforeShow(){_refresh=true;_updating=false;for(var element in _cbSettings){_callBarring[element]=false;_updateCallBarringItem(_cbSettings[element],{'checked':false});}
|
||||
window.addEventListener('panelready',refresh_on_load);_callBarring.observe('baoc',function(newValue){_updateCallBarringItem(_cbSettings.baoc,{'checked':newValue});});_callBarring.observe('boic',function(newValue){_updateCallBarringItem(_cbSettings.boic,{'checked':newValue});});_callBarring.observe('boicExhc',function(newValue){_updateCallBarringItem(_cbSettings.boicExhc,{'checked':newValue});});_callBarring.observe('baic',function(newValue){_updateCallBarringItem(_cbSettings.baic,{'checked':newValue});});_callBarring.observe('baicR',function(newValue){_updateCallBarringItem(_cbSettings.baicR,{'checked':newValue});});_callBarring.observe('baoc_enabled',function changed(newValue){_updateCallBarringItem(_cbSettings.baoc,{'disabled':!newValue});});_callBarring.observe('boic_enabled',function changed(newValue){_updateCallBarringItem(_cbSettings.boic,{'disabled':!newValue});});_callBarring.observe('boicExhc_enabled',function changed(newValue){_updateCallBarringItem(_cbSettings.boicExhc,{'disabled':!newValue});});_callBarring.observe('baic_enabled',function changed(newValue){_updateCallBarringItem(_cbSettings.baic,{'disabled':!newValue});});_callBarring.observe('baicR_enabled',function changed(newValue){_updateCallBarringItem(_cbSettings.baicR,{'disabled':!newValue});});_callBarring.observe('updating',function changed(newValue){_updating=newValue;});},onShow:function cb_onShow(){if(_refresh){_updateMobileConnection();_callBarring.getAll(_mobileConnection);}},onBeforeHide:function cb_onHide(){window.removeEventListener('panelready',refresh_on_load);_callBarring.unobserve('baoc');_callBarring.unobserve('boic');_callBarring.unobserve('boicExhc');_callBarring.unobserve('baic');_callBarring.unobserve('baicR');_callBarring.unobserve('baoc_enabled');_callBarring.unobserve('boic_enabled');_callBarring.unobserve('boicExhc_enabled');_callBarring.unobserve('baic_enabled');_callBarring.unobserve('baicR_enabled');_callBarring.unobserve('updating');}});};});
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
define('panels/call_barring_passcode_change/call_barring_passcode_change',['require'],function(require){'use strict';var ChangePasscodeScreen=function(){function _changeCallBarringPasscode(api,pinData){return new Promise(function finished(resolve,reject){var request=api.changeCallBarringPassword(pinData);request.onsuccess=function(){resolve();};request.onerror=function(){reject(request.error);};});}
|
||||
return{change:_changeCallBarringPasscode};};return ChangePasscodeScreen;});define('panels/call_barring_passcode_change/panel',['require','modules/settings_service','modules/settings_panel','panels/call_barring_passcode_change/call_barring_passcode_change'],function(require){'use strict';var SettingsService=require('modules/settings_service');var SettingsPanel=require('modules/settings_panel');var ChangePasscodeScreen=require('panels/call_barring_passcode_change/call_barring_passcode_change');return function ctor_call_barring_passcode_change(){var passcodeChange=ChangePasscodeScreen();var _mobileConnection,_voiceServiceClassMask;var _passcodePanel,_passcodeHeader,_passcodeInput,_passcodeError,_passcodeDigits,_passcodeContainer,_changePasscodeButton;var _MODE;var _settings={pin:'',newPin:''};var _passcodeBuffer='';var _checkingLength={'new':8,'edit':4};function _changeMode(mode){_passcodePanel.dataset.mode=_MODE=mode;_hideErrorMessage();}
|
||||
function _getInputKey(evt){if(_passcodeBuffer===''){_hideErrorMessage();}
|
||||
var code=evt.charCode;if(code!==0&&(code<0x30||code>0x39)){return;}
|
||||
var key=String.fromCharCode(code);if(code===0){if(_passcodeBuffer.length>0){_passcodeBuffer=_passcodeBuffer.substring(0,_passcodeBuffer.length-1);if(_passcodePanel.dataset.passcodeStatus==='success'){_resetPasscodeStatus();}}}else if(_passcodeBuffer.length<8){_passcodeBuffer+=key;}
|
||||
_updatePasscodeUI();_enablePasscode();}
|
||||
function _enablePasscode(){if(_passcodeBuffer.length===_checkingLength[_MODE]){switch(_MODE){case'edit':if(_checkPasscode()){_passcodeBuffer='';_updatePasscodeUI();_changeMode('new');}else{_passcodeBuffer='';}
|
||||
break;case'new':var passcode=_passcodeBuffer.substring(0,4);var passcodeToConfirm=_passcodeBuffer.substring(4,8);if(passcode===passcodeToConfirm){_settings.newPin=passcode;_enableButton();}else{_passcodeBuffer='';_showErrorMessage('mismatch');}
|
||||
break;}}}
|
||||
function _showErrorMessage(type){_passcodePanel.dataset.passcodeStatus='error';var tag='callBarring-passcode-error-'+type||'generic';document.l10n.setAttributes(_passcodeError,tag);}
|
||||
function _hideErrorMessage(){_passcodePanel.dataset.passcodeStatus='';}
|
||||
function _resetPasscodeStatus(){_passcodePanel.dataset.passcodeStatus='';}
|
||||
function _enableButton(){_passcodePanel.dataset.passcodeStatus='success';}
|
||||
function _updatePasscodeUI(){for(var i=0;i<8;i++){if(i<_passcodeBuffer.length){_passcodeDigits[i].dataset.dot=true;}else{delete _passcodeDigits[i].dataset.dot;}}}
|
||||
function _resetScreen(){_passcodeBuffer='';_changeMode('edit');_updatePasscodeUI();}
|
||||
function _checkPasscode(){if(_passcodeBuffer.length===4){_settings.pin=_passcodeBuffer;_hideErrorMessage();return true;}
|
||||
return false;}
|
||||
function _changePassword(){passcodeChange.change(_mobileConnection,_settings).then(function success(){SettingsService.back();}).catch(function error(err){_resetScreen();_showErrorMessage('incorrect');});}
|
||||
return SettingsPanel({onInit:function cb_onInit(panel){_mobileConnection=window.navigator.mozMobileConnections[DsdsSettings.getIccCardIndexForCallSettings()];_voiceServiceClassMask=_mobileConnection.ICC_SERVICE_CLASS_VOICE;_passcodePanel=document.getElementById('call-barring-passcode-change');_passcodeHeader=_passcodePanel.querySelector('gaia-header');_passcodeInput=_passcodePanel.querySelector('.passcode-input');_passcodeError=_passcodePanel.querySelector('.passcode-error');_passcodeDigits=_passcodePanel.querySelectorAll('.passcode-digit');_passcodeContainer=_passcodePanel.querySelector('.passcode-container');_changePasscodeButton=_passcodePanel.querySelector('.passcode-change');_passcodeInput.addEventListener('keypress',_getInputKey);_changePasscodeButton.addEventListener('click',_changePassword);_passcodeContainer.addEventListener('click',function inputClick(evt){_passcodeInput.focus();_hideErrorMessage();evt.preventDefault();});},onBeforeShow:function cb_beforeShow(){_changeMode('edit');},onShow:function cb_onShow(){_passcodeInput.focus();},onBeforeHide:function cb_onHide(){_resetScreen();}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','dsds_settings','modules/dialog_service','modules/fdn_context','modules/settings_panel'],function(require){'use strict';var DsdsSettings=require('dsds_settings');var DialogService=require('modules/dialog_service');var FdnContext=require('modules/fdn_context');var SettingsPanel=require('modules/settings_panel');return function ctor_settings_panel(){return SettingsPanel({_currentContact:null,onInit:function(panel){this._elements={};this._elements.fdnContactButton=panel.querySelector('.fdnContact');this._elements.fdnActionMenu=panel.querySelector('.call-fdnList-action');this._elements.fdnActionMenuName=panel.querySelector('.fdnAction-name');this._elements.fdnActionMenuNumber=panel.querySelector('.fdnAction-number');this._elements.fdnActionMenuCall=panel.querySelector('.fdnAction-call');this._elements.fdnActionMenuEdit=panel.querySelector('.fdnAction-edit');this._elements.fdnActionMenuRemove=panel.querySelector('.fdnAction-delete');this._elements.contactsContainer=panel.querySelector('.fdn-contactsContainer');this._bindEvents();},onBeforeShow:function(){this._renderAuthorizedNumbers();},_bindEvents:function(){this._elements.fdnContactButton.onclick=()=>{DialogService.show('call-fdnList-add',{mode:'add'}).then((result)=>{var type=result.type;var value=result.value;if(type==='submit'){this._updateContact('add',{name:value.name,number:value.number});}});};this._elements.fdnActionMenuEdit.onclick=()=>{this._hideActionMenu();DialogService.show('call-fdnList-add',{name:this._currentContact.name,number:this._currentContact.number,mode:'edit'}).then((result)=>{var type=result.type;var value=result.value;if(type==='submit'){this._updateContact('edit',{name:value.name,number:value.number});}});};this._elements.fdnActionMenuRemove.onclick=()=>{this._hideActionMenu();this._updateContact('remove');};this._elements.fdnActionMenuCall.onclick=()=>{var activity=new window.MozActivity({name:'dial',data:{type:'webtelephony/number',number:this._currentContact.number}});activity.onerror=()=>{console.error('we are not able to call mozActivity to dialer with'+' number '+this._currentContact.number);};};},_renderAuthorizedNumbers:function(){this._elements.contactsContainer.innerHTML='';var cardIndex=DsdsSettings.getIccCardIndexForCallSettings();return FdnContext.getContacts(cardIndex).then((contacts)=>{for(var i=0,l=contacts.length;i<l;i++){var li=this._renderFdnContact(contacts[i]);this._elements.contactsContainer.appendChild(li);}});},_renderFdnContact:function(contact){var li=document.createElement('li');var nameContainer=document.createElement('span');var numberContainer=document.createElement('small');nameContainer.dir='auto';nameContainer.textContent=contact.name;numberContainer.dir='auto';numberContainer.textContent=contact.number;li.appendChild(numberContainer);li.appendChild(nameContainer);li.onclick=()=>{this._showActionMenu(contact);};return li;},_showActionMenu:function(contact){this._currentContact=contact;this._elements.fdnActionMenuName.textContent=contact.name;this._elements.fdnActionMenuNumber.textContent=contact.number;this._elements.fdnActionMenu.show();},_hideActionMenu:function(){this._elements.fdnActionMenu.hide();},_updateContact:function(action,options){options=options||{};var cardIndex=DsdsSettings.getIccCardIndexForCallSettings();var name=options.name;var number=options.number;var contact=FdnContext.createAction(action,{cardIndex:cardIndex,contact:{id:this._currentContact&&this._currentContact.id,name:name,number:number}});return DialogService.show('simpin-dialog',{method:'get_pin2',cardIndex:cardIndex,pinOptions:{fdnContact:contact}}).then((result)=>{var type=result.type;if(type==='submit'){this._renderAuthorizedNumbers();}});}});};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/dialog_panel'],function(require){'use strict';var DialogPanel=require('modules/dialog_panel');return function ctor_call_fdn_list_add(){return DialogPanel({onInit:function(panel){this._submitable=false;this._mode='add';this._elements={};this._elements.fdnNameInput=panel.querySelector('.fdnContact-name');this._elements.fdnNumberInput=panel.querySelector('.fdnContact-number');this._elements.fdnContactTitle=panel.querySelector('.fdnContact-title');this._elements.submitButton=panel.querySelector('.fdnContact-submit');this._elements.fdnNameInput.oninput=this._checkContactInputs.bind(this);this._elements.fdnNumberInput.oninput=this._checkContactInputs.bind(this);},onBeforeShow:function(panel,options){this._mode=options.mode||'add';this._elements.fdnNameInput.value=options.name||'';this._elements.fdnNumberInput.value=options.number||'';if(this._mode==='add'){this._elements.fdnContactTitle.setAttribute('data-l10n-id','fdnAction-add');}else{this._elements.fdnContactTitle.setAttribute('data-l10n-id','fdnAction-edit-header');}
|
||||
this._checkContactInputs();},onShow:function(){this._elements.fdnNameInput.focus();},onSubmit:function(){if(this._submitable){return Promise.resolve({name:this._elements.fdnNameInput.value,number:this._elements.fdnNumberInput.value});}else{return Promise.reject();}},_checkContactInputs:function(){if(this._elements.fdnNameInput.value===''||this._elements.fdnNumberInput.value===''){this._submitable=false;}else{this._submitable=true;}
|
||||
this._elements.submitButton.disabled=!this._submitable;}});};});
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
define(['require','modules/settings_panel','modules/dialog_service'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var DialogService=require('modules/dialog_service');return function ctor_call_fdn_settings_panel(){return SettingsPanel({onInit:function(panel,options){this._cardIndex=options.cardIndex||0;this._conns=window.navigator.mozMobileConnections;this._conn=this._conns[this._cardIndex];this._elements={panel:panel,simFdnDesc:panel.querySelector('.fdn-enabled details'),resetPin2Item:panel.querySelector('.fdn-resetPIN2'),simFdnCheckBox:panel.querySelector('.fdn-enabled gaia-switch'),resetPin2Button:panel.querySelector('.fdn-resetPIN2 button')};this._elements.simFdnCheckBox.addEventListener('change',this._showToggleFdnDialog.bind(this));this._elements.resetPin2Button.onclick=this._showChangePin2Dialog.bind(this);},onBeforeShow:function(panel,options){if(typeof options.cardIndex!=='undefined'){this._cardIndex=options.cardIndex;this._conn=this._conns[this._cardIndex];}
|
||||
var iccObj=this._getCurrentIccObj();if(iccObj){iccObj.oncardstatechange=this._updateFdnStatus.bind(this);}
|
||||
this._updateFdnStatus();},_showToggleFdnDialog:function(){var action=this._elements.simFdnCheckBox.checked?'enable_fdn':'disable_fdn';var iccObj=this._getCurrentIccObj();if(iccObj){if(iccObj.cardState==='puk2Required'){action='unlock_puk2';}
|
||||
return DialogService.show('simpin-dialog',{method:action,cardIndex:this._cardIndex}).then(()=>{this._updateFdnStatus();});}},_showChangePin2Dialog:function(){DialogService.show('simpin-dialog',{method:'change_pin2',cardIndex:this._cardIndex});},_updateFdnStatus:function(){var iccObj=this._getCurrentIccObj();if(iccObj){return iccObj.getCardLock('fdn').then((result)=>{var enabled=result.enabled;this._elements.simFdnDesc.setAttribute('data-l10n-id',enabled?'enabled':'disabled');this._elements.simFdnCheckBox.disabled=false;this._elements.simFdnCheckBox.checked=enabled;this._elements.resetPin2Item.hidden=!enabled;});}},_getCurrentIccObj:function(){var iccId;var iccObj;if(this._conn){iccId=this._conn.iccId;if(iccId){iccObj=window.navigator.mozIccManager.getIccById(iccId);}}
|
||||
if(!iccObj){console.log('We can\'t find related iccObj in card - ',this._cardIndex);}
|
||||
return iccObj;}});};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','panels/call/call_constant','panels/call/call_forwarding','panels/call/call_utils','modules/dialog_service','modules/settings_panel'],function(require){'use strict';var CallConstant=require('panels/call/call_constant');var CallForwarding=require('panels/call/call_forwarding');var CallUtils=require('panels/call/call_utils');var DialogService=require('modules/dialog_service');var SettingsPanel=require('modules/settings_panel');return function ctor_call_forwarding(){return SettingsPanel({onInit:function(panel,options){this._elements={};this._elements.panel=panel;this._cardIndex=options.cardIndex||0;this._conns=window.navigator.mozMobileConnections;this._conn=this._conns[this._cardIndex];this._callForwardings=[null,null];var $=function(selector){return panel.querySelector(selector);};this._elements={liCfuDesc:$('#li-cfu-desc'),liCfmbDesc:$('#li-cfmb-desc'),liCfnRepDesc:$('#li-cfnrep-desc'),liCfnReaDesc:$('#li-cfnrea-desc'),cfuDesc:$('#cfu-desc'),cfmbDesc:$('#cfmb-desc'),cfnRepDesc:$('#cfnrep-desc'),cfnReaDesc:$('#cfnrea-desc'),mobileBusyMenuItem:$('.callForwardingMobileBusy'),noReplyMenuItem:$('.callForwardingNoReply'),notReachableMenuItem:$('.callForwardingNotReachable'),unConditionalMenuItem:$('.callForwardingUnconditional')};this._cfOptionNameMapping={'unConditional':'cfuDesc','mobileBusy':'cfmbDesc','noReply':'cfnRepDesc','notReachable':'cfnReaDesc'};this._bindMenuItemsClickEvent();},onBeforeShow:function(panel,options){if(typeof options.cardIndex!=='undefined'){this._cardIndex=options.cardIndex;this._conn=this._conns[this._cardIndex];}
|
||||
if(this._callForwardings[this._cardIndex]===null){this._callForwardings[this._cardIndex]=CallForwarding(this._cardIndex);}
|
||||
this._bindCallForwardingObservers();this._refresh();},onHide:function(){this._unbindCallForwardingObservers();},_bindCallForwardingObservers:function(){var cf=this._getCallForwarding();cf.observe('state',(state)=>{if(state==='normal'){this._lockMenuItems(false);Object.keys(CallConstant.CALL_FORWARD_REASON_MAPPING).forEach((cfOptionName)=>{var selector=this._cfOptionNameMapping[cfOptionName];var element=this._elements[selector];var number=cf[cfOptionName+'Number'];this._updateNumberInfoOnElement(element,number);});}else if(state==='requesting'){this._lockMenuItems(true);this._updateAllDescInfoWithL10nId('callSettingsQuery');}else if(state==='error'){this._lockMenuItems(false);this._updateAllDescInfoWithL10nId('callSettingsQueryError');}});Object.keys(CallConstant.CALL_FORWARD_REASON_MAPPING).forEach((cfOptionName)=>{var selector=this._cfOptionNameMapping[cfOptionName];var element=this._elements[selector];cf.observe(cfOptionName+'Number',(number)=>{this._updateNumberInfoOnElement(element,number);});});},_updateNumberInfoOnElement:function(element,number){if(!element){return;}
|
||||
if(number){document.l10n.setAttributes(element,'callForwardingForwardingVoiceToNumber',{number:number});}else{element.setAttribute('data-l10n-id','callForwardingNotForwarding');}},_unbindCallForwardingObservers:function(){var cf=this._getCallForwarding();cf.unobserve('state');Object.keys(CallConstant.CALL_FORWARD_REASON_MAPPING).forEach((cfOptionName)=>{cf.unobserve(cfOptionName+'Number');});},_getCallForwarding:function(){var cf=this._callForwardings[this._cardIndex];if(!cf){console.log('can\'t find related call forwarding instance '+'at cardIndex - ',this._cardIndex);}else{return cf;}},_updateAllDescInfoWithL10nId:function(l10nId){this._elements.cfuDesc.setAttribute('data-l10n-id',l10nId);this._elements.cfmbDesc.setAttribute('data-l10n-id',l10nId);this._elements.cfnRepDesc.setAttribute('data-l10n-id',l10nId);this._elements.cfnReaDesc.setAttribute('data-l10n-id',l10nId);},_bindMenuItemsClickEvent:function(){var mapping={mobileBusy:{menuItem:this._elements.mobileBusyMenuItem,panelId:'call-cf-mobile-busy-settings'},noReply:{menuItem:this._elements.noReplyMenuItem,panelId:'call-cf-no-reply-settings'},notReachable:{menuItem:this._elements.notReachableMenuItem,panelId:'call-cf-not-reachable-settings'},unConditional:{menuItem:this._elements.unConditionalMenuItem,panelId:'call-cf-unconditional-settings'}};var onclick=(panelId,cfOptionName)=>{var cf=this._getCallForwarding();var number=cf[cfOptionName+'Number'];var enabled=cf[cfOptionName+'Enabled'];DialogService.show(panelId,{number:number,enabled:enabled}).then((result)=>{var type=result.type;var value=result.value||{};var returnNumber=value.number||'';var returnEnabled=value.enabled||false;if(type==='submit'){this._getCallForwarding().setCallForwardingValues({key:cfOptionName,enabled:returnEnabled,number:returnNumber}).then((result)=>{if(result){var{key,action}=result;this._refresh().then((options)=>{var rules=options[key];var messageL10nId=this._getSetCallForwardingOptionResult(rules,action);DialogService.alert(messageL10nId,{title:'callForwardingConfirmTitle',submitButton:'continue'});});}},(error)=>{if(error){DialogService.alert(error.name,{title:'callForwardingConfirmTitle',submitButtonText:'continue'});this._refresh();}});}});};for(var cfOptionName in mapping){var item=mapping[cfOptionName];var panelId=item.panelId;var menuItem=item.menuItem;menuItem.addEventListener('click',onclick.bind(null,panelId,cfOptionName));}},_lockMenuItems:function(isLocked){var elements=['liCfuDesc','liCfmbDesc','liCfnRepDesc','liCfnReaDesc'];elements.forEach(function(id){var element=this._elements[id];if(isLocked){element.setAttribute('aria-disabled',true);}else{element.removeAttribute('aria-disabled');if(this._getCallForwarding().isUnconditionalCFOn()&&id!=='liCfuDesc'){element.setAttribute('aria-disabled',true);}}},this);},_refresh:function(checkCallForwardingOption,reason,action){return this._getCallForwarding().refresh();},_getSetCallForwardingOptionResult:function(rules,action){var rule=CallUtils.findActiveVoiceRule(rules);var l10nId;if(rule){l10nId=(action===CallConstant.CALL_FORWARD_ACTION.DISABLE)?'callForwardingSetForbidden':'callForwardingSetSuccess';return l10nId;}else{l10nId=(action===CallConstant.CALL_FORWARD_ACTION.REGISTRATION)?'callForwardingSetError':'callForwardingSetSuccess';return l10nId;}}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/dialog_panel'],function(require){'use strict';var DialogPanel=require('modules/dialog_panel');return function ctor_call_forwarding_details(){return DialogPanel({onInit:function(panel){this._elements={};this._elements.telInput=panel.querySelector('input[type="tel"]');this._elements.checkboxInput=panel.querySelector('gaia-switch');},onBeforeShow:function(panel,options){this._elements.telInput.value=options.number||'';this._elements.checkboxInput.checked=!!options.enabled;},onShow:function(){this._elements.telInput.focus();},onSubmit:function(){return Promise.resolve({number:this._elements.telInput.value,enabled:this._elements.checkboxInput.checked});}});};});
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
|
||||
define(['require','dsds_settings','modules/settings_service'],function(require){'use strict';var DsdsSettings=require('dsds_settings');var SettingsService=require('modules/settings_service');var CallIccHandler=(function(){var CARDSTATE_MAPPING={'pinRequired':'simCardLockedMsg','pukRequired':'simCardLockedMsg','permanentBlocked':'simCardBlockedMsg','networkLocked':'simLockedPhone','serviceProviderLocked':'simLockedPhone','corporateLocked':'simLockedPhone','network1Locked':'simLockedPhone','network2Locked':'simLockedPhone','hrpdNetworkLocked':'simLockedPhone','ruimCorporateLocked':'simLockedPhone','ruimServiceProviderLocked':'simLockedPhone','unknown':'unknownSimCardState','illegal':'simCardIllegal','absent':'noSimCard','null':'simCardNotReady','ready':''};var _settings=window.navigator.mozSettings;var _iccManager=window.navigator.mozIccManager;var _mobileConnections=null;var _telephony=window.navigator.mozTelephony;var _menuItemIds=['menuItem-call-sim1','menuItem-call-sim2'];var _menuItemDescriptions=[];var _iccIdOnCall=null;function ihfcs_init(){_mobileConnections=window.navigator.mozMobileConnections;if(!_settings||!_mobileConnections||!_iccManager||!_telephony){return;}
|
||||
if(DsdsSettings.getNumberOfIccSlots()===1){return;}
|
||||
function addListeners(iccId){var eventHandler=ihfcs_showICCCardDetails.bind(null,iccId);var iccCard=_iccManager.getIccById(iccId);if(!iccCard){return;}
|
||||
iccCard.addEventListener('cardstatechange',eventHandler);var mobileConnection=ihfcs_getMobileConnectionFromIccId(iccId);if(!mobileConnection){return;}
|
||||
mobileConnection.addEventListener('datachange',eventHandler);mobileConnection.addEventListener('radiostatechange',eventHandler);}
|
||||
_menuItemIds.forEach(function forEachFunction(id){var selector=document.getElementById(id);_menuItemDescriptions[_menuItemIds.indexOf(id)]=selector.querySelector('small');});_menuItemIds.forEach(function forEachFunction(id){var selector=document.getElementById(id);var element=selector.querySelector('a');element.addEventListener('click',function eventListenerHandler(){var cardIndex=_menuItemIds.indexOf(id);DsdsSettings.setIccCardIndexForCallSettings(cardIndex);SettingsService.navigate('call',{cardIndex:cardIndex});});});var numberOfIccCards=_mobileConnections.length;for(var i=0;i<numberOfIccCards;i++){var mobileConnection=_mobileConnections[i];if(!mobileConnection.iccId){ihfcs_disableItems(_menuItemIds[i],true);continue;}
|
||||
ihfcs_showICCCardDetails(mobileConnection.iccId);addListeners(mobileConnection.iccId);}
|
||||
_iccManager.addEventListener('iccdetected',function iccDetectedHandler(evt){var iccId=evt.iccId;ihfcs_showICCCardDetails(iccId);addListeners(iccId);});_iccManager.addEventListener('iccundetected',function iccUndetectedHandler(evt){var iccId=evt.iccId;var eventHandler=ihfcs_showICCCardDetails.bind(null,iccId);var mobileConnection=ihfcs_getMobileConnectionFromIccId(iccId);if(!mobileConnection){return;}
|
||||
mobileConnection.removeEventListener('datachange',eventHandler);mobileConnection.removeEventListener('radiostatechange',eventHandler);});function callsChangedHandler(){if(!_telephony.active&&!_iccIdOnCall){return;}
|
||||
if(_telephony.active){_iccIdOnCall=_mobileConnections[_telephony.active.serviceId].iccId;}else{_iccIdOnCall=null;}
|
||||
var numberOfIccCards=_mobileConnections.length;for(var i=0;i<numberOfIccCards;i++){var mobileConnection=_mobileConnections[i];if(mobileConnection.iccId){ihfcs_showICCCardDetails(mobileConnection.iccId);}}}
|
||||
callsChangedHandler();_telephony.addEventListener('callschanged',callsChangedHandler);}
|
||||
function ihfcs_showICCCardDetails(iccId){var iccCardIndex=ihfcs_getIccCardIndex(iccId);var desc=_menuItemDescriptions[iccCardIndex];desc.style.fontStyle='italic';var mobileConnection=ihfcs_getMobileConnectionFromIccId(iccId);if(!mobileConnection){desc.removeAttribute('data-l10n-id');desc.textContent='';ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
if(mobileConnection.radioState!=='enabled'){desc.setAttribute('data-l10n-id',CARDSTATE_MAPPING['null']);ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
if(mobileConnection.radioState==='enabled'){desc.removeAttribute('data-l10n-id');desc.textContent='';ihfcs_disableItems(_menuItemIds[iccCardIndex],false);}
|
||||
var iccCard=_iccManager.getIccById(iccId);if(!iccCard){desc.removeAttribute('data-l10n-id');desc.textContent='';ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
var cardState=iccCard.cardState;if(cardState!=='ready'){desc.setAttribute('data-l10n-id',CARDSTATE_MAPPING[cardState||'null']);ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
desc.style.fontStyle='normal';var network=mobileConnection.voice.network;var iccInfo=iccCard.iccInfo;var carrier=network?(network.shortName||network.longName):null;if(carrier&&iccInfo&&iccInfo.isDisplaySpnRequired&&iccInfo.spn){if(iccInfo.isDisplayNetworkNameRequired&&carrier!==iccInfo.spn){carrier=carrier+' '+iccInfo.spn;}else{carrier=iccInfo.spn;}}
|
||||
desc.textContent=carrier;ihfcs_disableItems(_menuItemIds[iccCardIndex],_iccIdOnCall&&(_iccIdOnCall!==iccId)?true:false);}
|
||||
function ihfcs_disableItems(id,disable){var element=document.getElementById(id);if(disable){element.setAttribute('aria-disabled',true);}else{element.removeAttribute('aria-disabled');}}
|
||||
function ihfcs_getIccCardIndex(iccId){for(var i=0;i<_mobileConnections.length;i++){if(_mobileConnections[i].iccId===iccId){return i;}}
|
||||
return-1;}
|
||||
function ihfcs_getMobileConnectionFromIccId(iccId){for(var i=0;i<_mobileConnections.length;i++){if(_mobileConnections[i].iccId===iccId){return _mobileConnections[i];}}
|
||||
return null;}
|
||||
return{init:ihfcs_init};})();return CallIccHandler;});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_panel','panels/call_iccs/call_icc_handler'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var CallIccHandler=require('panels/call_iccs/call_icc_handler');return function ctor_call_iccs(){return SettingsPanel({onInit:function(){CallIccHandler.init();}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/dialog_panel','modules/settings_cache'],function(require){'use strict';var DialogPanel=require('modules/dialog_panel');var SettingsCache=require('modules/settings_cache');return function ctor_call_voice_mail_settings(){return DialogPanel({onInit:function(panel){this._currentSimIndex=0;this._elements={vmNumberInput:panel.querySelector('.vm-number')};},onBeforeShow:function(){this._currentSimIndex=window.DsdsSettings.getIccCardIndexForCallSettings();return this._getVoicemailNumber().then((number)=>{this._elements.vmNumberInput.value=number;});},onShow:function(){var cursorPos=this._elements.vmNumberInput.value.length;this._elements.vmNumberInput.focus();this._elements.vmNumberInput.setSelectionRange(0,cursorPos);},onSubmit:function(){SettingsCache.getSettings((results)=>{var numbers=results['ril.iccInfo.mbdn']||[];numbers[this._currentSimIndex]=this._elements.vmNumberInput.value;navigator.mozSettings.createLock().set({'ril.iccInfo.mbdn':numbers});});},_getVoicemailNumber:function(){var self=this;var promise=new Promise(function(resolve){SettingsCache.getSettings(function(results){var numbers=results['ril.iccInfo.mbdn'];var number=numbers&&numbers[self._currentSimIndex];resolve(number||'');});});return promise;}});};});
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
|
||||
define(['require','shared/lazy_loader'],function(require){'use strict';var LazyLoader=require('shared/lazy_loader');var Carrier=(function(){var DATA_KEY='ril.data.enabled';var DATA_ROAMING_KEY='ril.data.roaming_enabled';var _settings;var _mobileConnections;var _iccManager;var _mobileConnection=null;var _restartingDataConnection=false;var _elements={detailHeader:document.querySelector('#carrier-detail gaia-header h1'),carrierInfo:document.querySelector('#carrier .carrier-info'),advancedSettings:document.querySelector('#carrier .carrier-advancedSettings'),advancedSettingsList:document.querySelectorAll('#carrier .carrier-advancedSettings li'),simSettings:document.querySelector('#carrier .carrier-simSettings'),dataToggle:document.querySelector('#menuItem-enableDataCall gaia-switch'),dataRoamingToggle:document.querySelector('#menuItem-enableDataRoaming gaia-switch'),desc:document.getElementById('dataNetwork-desc')};function cs_init(){_settings=window.navigator.mozSettings;_mobileConnections=window.navigator.mozMobileConnections;_iccManager=window.navigator.mozIccManager;if(!_settings||!_mobileConnections||!_iccManager){return;}
|
||||
_mobileConnection=_mobileConnections[DsdsSettings.getIccCardIndexForCellAndDataSettings()];if(!_mobileConnection){return;}
|
||||
cs_showCarrierName();cs_initIccsUI();cs_initDataToggles();window.addEventListener('panelready',function(e){_mobileConnection=_mobileConnections[DsdsSettings.getIccCardIndexForCellAndDataSettings()];if(!_mobileConnection){return;}
|
||||
var currentHash=e.detail.current;if(currentHash==='#carrier'){cs_showCarrierName();return;}else if(currentHash==='#carrier-detail'){document.l10n.setAttributes(_elements.detailHeader,'simSettingsWithIndex',{index:DsdsSettings.getIccCardIndexForCellAndDataSettings()+1});}
|
||||
if(!currentHash.startsWith('#carrier-')){return;}});}
|
||||
function cs_initIccsUI(){var isMultiSim=DsdsSettings.getNumberOfIccSlots()>1;if(isMultiSim){LazyLoader.load(['/js/panels/carrier/carrier_iccs.js'],function(){IccHandlerForCarrierSettings.init();});}
|
||||
_elements.carrierInfo.hidden=isMultiSim;_elements.advancedSettings.hidden=isMultiSim;_elements.simSettings.hidden=!isMultiSim;}
|
||||
function cs_initDataToggles(){function updateDataRoamingToggle(dataEnabled){if(dataEnabled){_elements.dataRoamingToggle.disabled=false;}else{_elements.dataRoamingToggle.disabled=true;_elements.dataRoamingToggle.checked=false;_elements.dataRoamingToggle.dispatchEvent(new Event('change'));}}
|
||||
function getDataEnabled(){return new Promise(function(resolve,reject){var transaction=_settings.createLock();var req=transaction.get(DATA_KEY);req.onsuccess=function(){resolve(req.result[DATA_KEY]);};req.onerror=function(){resolve(false);};});}
|
||||
var isSimCardInserted=Array.prototype.some.call(navigator.mozMobileConnections,function(connection){return connection.iccId;});if(!isSimCardInserted){_elements.dataToggle.disabled=true;_elements.dataRoamingToggle.disabled=true;Array.prototype.forEach.call(_elements.advancedSettingsList,(element)=>{element.setAttribute('aria-disabled',true);});}
|
||||
getDataEnabled().then(function(dataEnabled){dataEnabled=isSimCardInserted&&dataEnabled;updateDataRoamingToggle(dataEnabled);});_settings.addObserver(DATA_KEY,function observerCb(event){_elements.dataToggle.checked=event.settingValue;if(_restartingDataConnection){return;}
|
||||
updateDataRoamingToggle(event.settingValue);});cs_initWarning(DATA_KEY,_elements.dataToggle,isSimCardInserted,'dataConnection-warning-head','dataConnection-warning-message');cs_initWarning(DATA_ROAMING_KEY,_elements.dataRoamingToggle,isSimCardInserted,'dataRoaming-warning-head','dataRoaming-warning-message');}
|
||||
function cs_showCarrierName(){if(DsdsSettings.getNumberOfIccSlots()>1){return;}
|
||||
var iccCard=_iccManager.getIccById(_mobileConnection.iccId);var network=_mobileConnection.voice.network;var iccInfo=iccCard&&iccCard.iccInfo;var carrier=network?(network.shortName||network.longName):null;if(carrier&&iccInfo&&iccInfo.isDisplaySpnRequired&&iccInfo.spn){if(iccInfo.isDisplayNetworkNameRequired&&carrier!==iccInfo.spn){carrier=carrier+' '+iccInfo.spn;}else{carrier=iccInfo.spn;}}
|
||||
if(iccCard){_elements.desc.textContent=carrier;}else{_elements.desc.setAttribute('data-l10n-id','noSimCard');}}
|
||||
function cs_initWarning(settingKey,input,isSimCardInserted,titleL10nId,messageL10nId){var warningDialogEnabledKey=settingKey+'.warningDialog.enabled';function getWarningEnabled(callback){var request=_settings.createLock().get(warningDialogEnabledKey);request.onsuccess=function onSuccessHandler(){var warningEnabled=request.result[warningDialogEnabledKey];if(warningEnabled===null){warningEnabled=true;}
|
||||
if(callback){callback(warningEnabled);}};}
|
||||
function setState(state){var cset={};cset[settingKey]=!!state;_settings.createLock().set(cset);}
|
||||
function getState(callback){var request=_settings.createLock().get(settingKey);request.onsuccess=function onSuccessHandler(){if(callback){callback(request.result[settingKey]);}};}
|
||||
function setWarningDialogState(state){var cset={};cset[warningDialogEnabledKey]=!!state;_settings.createLock().set(cset);}
|
||||
function onSubmit(){setWarningDialogState(false);setState(true);input.checked=true;}
|
||||
function onReset(){setWarningDialogState(true);setState(false);input.checked=false;}
|
||||
getState(function(enabled){input.checked=isSimCardInserted&&enabled;input.addEventListener('change',function(){var enabled=this.checked;getWarningEnabled(function getWarningEnabledCb(warningEnabled){if(warningEnabled){if(enabled){require(['modules/dialog_service'],function(DialogService){DialogService.confirm(messageL10nId,{title:titleL10nId,submitButton:'turnOn',cancelButton:'notNow'}).then(function(result){var type=result.type;if(type==='submit'){onSubmit();}else{onReset();}});});}}else{setState(enabled);}});});});getWarningEnabled(function getWarningEnabledCb(warningEnabled){if(warningEnabled){var request=_settings.createLock().get(settingKey);request.onsuccess=function onSuccessCb(){var enabled=false;if(request.result[settingKey]!==undefined){enabled=request.result[settingKey];}
|
||||
if(enabled){setWarningDialogState(false);}};}});}
|
||||
return{init:cs_init};})();return Carrier;});
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
window.IccHandlerForCarrierSettings=(function(){var CARDSTATE_MAPPING={'pinRequired':'simCardLockedMsg','pukRequired':'simCardLockedMsg','permanentBlocked':'simCardBlockedMsg','networkLocked':'simLockedPhone','serviceProviderLocked':'simLockedPhone','corporateLocked':'simLockedPhone','network1Locked':'simLockedPhone','network2Locked':'simLockedPhone','hrpdNetworkLocked':'simLockedPhone','ruimCorporateLocked':'simLockedPhone','ruimServiceProviderLocked':'simLockedPhone','unknown':'unknownSimCardState','illegal':'simCardIllegal','absent':'noSimCard','null':'simCardNotReady','ready':''};var DATA_TYPE_MAPPING={'lte':'4G LTE','ehrpd':'4G CDMA','hspa+':'3.5G HSPA+','hsdpa':'3.5G HSDPA','hsupa':'3.5G HSDPA','hspa':'3.5G HSDPA','evdo0':'EVDO','evdoa':'EVDO','evdob':'EVDO','1xrtt':'1xRTT','umts':'3G UMTS','edge':'2G EDGE','is95a':'1xRTT','is95b':'1xRTT','gprs':'2G GPRS'};var _settings=window.navigator.mozSettings;var _iccManager=window.navigator.mozIccManager;var _mobileConnections=null;var _menuItemIds=['menuItem-carrier-sim1','menuItem-carrier-sim2'];var _menuItemDescriptions=[];function ihfcs_init(){_mobileConnections=window.navigator.mozMobileConnections;if(!_settings||!_mobileConnections||!_iccManager){return;}
|
||||
if(DsdsSettings.getNumberOfIccSlots()===1){return;}
|
||||
function addListeners(iccId){var eventHandler=ihfcs_showICCCardDetails.bind(null,iccId);var iccCard=_iccManager.getIccById(iccId);if(!iccCard){return;}
|
||||
iccCard.addEventListener('cardstatechange',eventHandler);var mobileConnection=ihfcs_getMobileConnectionFromIccId(iccId);if(!mobileConnection){return;}
|
||||
mobileConnection.addEventListener('datachange',eventHandler);mobileConnection.addEventListener('radiostatechange',eventHandler);}
|
||||
_menuItemIds.forEach(function forEachFunction(id){var selector=document.getElementById(id);_menuItemDescriptions[_menuItemIds.indexOf(id)]=selector.querySelector('small');});_menuItemIds.forEach(function forEachFunction(id){var selector=document.getElementById(id);var element=selector.querySelector('a');element.addEventListener('click',function eventListenerHandler(){DsdsSettings.setIccCardIndexForCellAndDataSettings(_menuItemIds.indexOf(id));});});var numberOfIccCards=_mobileConnections.length;for(var i=0;i<numberOfIccCards;i++){var mobileConnection=_mobileConnections[i];if(!mobileConnection.iccId){ihfcs_disableItems(_menuItemIds[i],true);continue;}
|
||||
ihfcs_showICCCardDetails(mobileConnection.iccId);addListeners(mobileConnection.iccId);}
|
||||
_iccManager.addEventListener('iccdetected',function iccDetectedHandler(evt){var iccId=evt.iccId;ihfcs_showICCCardDetails(iccId);addListeners(iccId);});_iccManager.addEventListener('iccundetected',function iccUndetectedHandler(evt){var iccId=evt.iccId;var eventHandler=ihfcs_showICCCardDetails.bind(null,iccId);var mobileConnection=ihfcs_getMobileConnectionFromIccId(iccId);if(!mobileConnection){return;}
|
||||
mobileConnection.removeEventListener('datachange',eventHandler);mobileConnection.removeEventListener('radiostatechange',eventHandler);});}
|
||||
function ihfcs_showICCCardDetails(iccId){var iccCardIndex=ihfcs_getIccCardIndex(iccId);var desc=_menuItemDescriptions[iccCardIndex];desc.style.fontStyle='italic';var mobileConnection=ihfcs_getMobileConnectionFromIccId(iccId);if(!mobileConnection){desc.textContent='';desc.removeAttribute('data-l10n-id');ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
if(mobileConnection.radioState!=='enabled'){desc.setAttribute('data-l10n-id',CARDSTATE_MAPPING['null']);ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
if(mobileConnection.radioState==='enabled'){desc.textContent='';desc.removeAttribute('data-l10n-id');ihfcs_disableItems(_menuItemIds[iccCardIndex],false);}
|
||||
var iccCard=_iccManager.getIccById(iccId);if(!iccCard){desc.textContent='';desc.removeAttribute('data-l10n-id');ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
var cardState=iccCard.cardState;if(cardState!=='ready'){desc.setAttribute('data-l10n-id',CARDSTATE_MAPPING[cardState||'null']);ihfcs_disableItems(_menuItemIds[iccCardIndex],true);return;}
|
||||
desc.style.fontStyle='normal';var network=mobileConnection.voice.network;var iccInfo=iccCard.iccInfo;var carrier=network?(network.shortName||network.longName):null;if(carrier&&iccInfo&&iccInfo.isDisplaySpnRequired&&iccInfo.spn){if(iccInfo.isDisplayNetworkNameRequired&&carrier!==iccInfo.spn){carrier=carrier+' '+iccInfo.spn;}else{carrier=iccInfo.spn;}}
|
||||
desc.textContent=carrier;var dataType=(mobileConnection.data.connected&&mobileConnection.data.type)?DATA_TYPE_MAPPING[mobileConnection.data.type]:'';if(dataType){desc.textContent+=' - '+dataType;}
|
||||
ihfcs_disableItems(_menuItemIds[iccCardIndex],false);}
|
||||
function ihfcs_disableItems(id,disable){var element=document.getElementById(id);if(disable){element.setAttribute('aria-disabled',true);}else{element.removeAttribute('aria-disabled');}}
|
||||
function ihfcs_getIccCardIndex(iccId){for(var i=0;i<_mobileConnections.length;i++){if(_mobileConnections[i].iccId===iccId){return i;}}
|
||||
return-1;}
|
||||
function ihfcs_getMobileConnectionFromIccId(iccId){for(var i=0;i<_mobileConnections.length;i++){if(_mobileConnections[i].iccId===iccId){return _mobileConnections[i];}}
|
||||
return null;}
|
||||
return{init:ihfcs_init};})();
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_panel','panels/carrier/carrier'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var Carrier=require('panels/carrier/carrier');return function ctor_media_storage_panel(){return SettingsPanel({onInit:function(){Carrier.init();}});};});
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
define('panels/date_time/panel',['require','modules/settings_panel','modules/date_time','shared/tz_select'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var DateTime=require('modules/date_time');var tzSelect=require('shared/tz_select');var _debug=false;var debug=function(){};if(_debug){debug=function btam_debug(msg){console.log('--> [DateTime]: '+msg);};}
|
||||
return function ctor_date_time_panel(){var HOUR_12='ampm';var HOUR_24='24';return SettingsPanel({onInit:function(panel){this._elements={timeAutoSwitch:panel.querySelector('.time-auto'),timezoneRegion:panel.querySelector('.timezone-region'),timezoneCity:panel.querySelector('.timezone-city'),datePicker:panel.querySelector('.date-picker'),timePicker:panel.querySelector('.time-picker'),clockDate:panel.querySelector('.clock-date'),clockTime:panel.querySelector('.clock-time'),timeManual:panel.querySelector('.time-manual'),timezone:panel.querySelector('.timezone'),timezonePickers:[].slice.apply(panel.querySelectorAll('.timezone-picker')),timezoneInfo:panel.querySelector('.timezone-info'),timezoneInfoText:panel.querySelector('.timezone-info-text'),timeFormat:panel.querySelector('.timeformat'),timeFormatAutoSwitch:panel.querySelector('.time-format-auto gaia-switch'),timeFormatSwitch:panel.querySelector('.time-format-time')};this._boundSetDate=()=>{this._elements.clockDate.textContent=DateTime.date;};this._boundSetTime=()=>{this._elements.clockTime.textContent=DateTime.time;};this._boundSetTimezoneInfo=()=>{var info=DateTime.clockAutoEnabled?DateTime.timezone:'';debug('Timezone: '+info);this._elements.timezoneInfoText.textContent=info;};this._boundSetSelectedTimeZone=(selected)=>{DateTime.setUserSelectedTimezone(selected);};this._boundUpdateUI=this._updateUI.bind(this);this._boundRenderTimeFormat=this._renderTimeFormat.bind(this);this._boundDatePickerChange=this._datePickerChange.bind(this);this._boundTimePickerChange=this._timePickerChange.bind(this);this._boundTimeFormatAutoChange=()=>{var checked=this._elements.timeFormatAutoSwitch.checked;if(checked){DateTime.setCurrentHour12(null);}else{var isHour12=DateTime.getHour12ForCurrentLocale();DateTime.setCurrentHour12(isHour12);}};this._boundTimeFormatChange=()=>{var value=(this._elements.timeFormatSwitch.value===HOUR_12);DateTime.setCurrentHour12(value);};},onBeforeShow:function(){DateTime.observe('date',this._boundSetDate);DateTime.observe('time',this._boundSetTime);DateTime.observe('timezone',this._boundSetTimezoneInfo);DateTime.observe('clockAutoEnabled',this._boundUpdateUI);DateTime.observe('clockAutoAvailable',this._boundUpdateUI);DateTime.observe('timezoneAutoAvailable',this._boundUpdateUI);DateTime.observe('currentHour12',this._boundRenderTimeFormat);DateTime.observe('userSelectedTimezone',this._boundSetSelectedTimeZone);this._elements.datePicker.addEventListener('input',this._boundDatePickerChange);this._elements.timePicker.addEventListener('input',this._boundTimePickerChange);this._elements.timeFormatSwitch.addEventListener('change',this._boundTimeFormatChange);this._elements.timeFormatAutoSwitch.addEventListener('change',this._boundTimeFormatAutoChange);this._renderTimeZone();this._boundSetDate();this._boundSetTime();this._boundSetTimezoneInfo();if(DateTime.userSelectedTimezone&&!DateTime.clockAutoEnabled){this._boundSetSelectedTimeZone(DateTime.userSelectedTimezone);}
|
||||
this._renderTimeFormat();this._boundUpdateUI();document.addEventListener('DOMRetranslated',this);},onHide:function(){DateTime.unobserve('date',this._boundSetDate);DateTime.unobserve('time',this._boundSetTime);DateTime.unobserve('timezone',this._boundSetTimezoneInfo);DateTime.unobserve('clockAutoEnabled',this._boundUpdateUI);DateTime.unobserve('clockAutoAvailable',this._boundUpdateUI);DateTime.unobserve('timezoneAutoAvailable',this._boundUpdateUI);DateTime.unobserve('currentHour12',this._boundRenderTimeFormat);DateTime.unobserve('userSelectedTimezone',this._boundSetSelectedTimeZone);this._elements.datePicker.removeEventListener('input',this._boundDatePickerChange);this._elements.timePicker.removeEventListener('input',this._boundTimePickerChange);this._elements.timeFormatSwitch.removeEventListener('change',this._boundTimeFormatChange);this._elements.timeFormatAutoSwitch.removeEventListener('change',this._boundTimeFormatAutoChange);document.removeEventListener('DOMRetranslated',this);},_renderTimeZone:function dt_renderTimeZone(){var noOp=function(){};tzSelect(this._elements.timezoneRegion,this._elements.timezoneCity,noOp,noOp);},_datePickerChange:function dt_datePickerChange(){DateTime.setTime('date',this._elements.datePicker.value);this._elements.datePicker.value='';},_timePickerChange:function dt_timePickerChange(){DateTime.setTime('time',this._elements.timePicker.value);this._elements.timePicker.value='';},handleEvent:function dt_handleEvent(evt){switch(evt.type){case'DOMRetranslated':this._renderTimeZone();break;}},_updateUI:function dt_updateUI(){this._elements.timeAutoSwitch.dataset.state=DateTime.clockAutoEnabled?'auto':'manual';this._elements.timeAutoSwitch.hidden=!DateTime.clockAutoAvailable;var autoTimeMode=DateTime.clockAutoEnabled&&DateTime.clockAutoAvailable;this._elements.datePicker.disabled=autoTimeMode;this._elements.timePicker.disabled=autoTimeMode;this._elements.timezoneRegion.disabled=DateTime.timezoneAutoAvailable&&autoTimeMode;this._elements.timezoneCity.disabled=DateTime.timezoneAutoAvailable&&autoTimeMode;if(!DateTime.clockAutoEnabled){this._elements.timezoneRegion.dispatchEvent(new Event('change'));this._elements.timezoneCity.dispatchEvent(new Event('change'));}
|
||||
if(autoTimeMode){this._elements.timeManual.classList.add('disabled');this._elements.timezonePickers.forEach((picker)=>{picker.hidden=DateTime.timezoneAutoAvailable;});debug('force update timezone string');this._boundSetTimezoneInfo();this._elements.timezoneInfo.hidden=!DateTime.timezoneAutoAvailable;}else{this._elements.timeManual.classList.remove('disabled');this._elements.timezonePickers.forEach((picker)=>{picker.hidden=false;});this._elements.timezoneInfo.hidden=true;}},_renderTimeFormat:function dt_renderTimeFormat(){var hour12Value=DateTime.currentHour12;if(hour12Value===null){hour12Value=undefined;}
|
||||
if(hour12Value===undefined){this._elements.timeFormatAutoSwitch.checked=true;this._elements.timeFormat.classList.add('disabled');}else{this._elements.timeFormatAutoSwitch.checked=false;this._elements.timeFormat.classList.remove('disabled');}
|
||||
if(hour12Value===undefined){hour12Value=DateTime.getHour12ForCurrentLocale();}
|
||||
var selectedItem=0;if(hour12Value===false){selectedItem=1;}
|
||||
var options=[{attr:'hour-12',value:HOUR_12,},{attr:'hour-24',value:HOUR_24}];var obj=this._elements.timeFormatSwitch;while(obj.options.length){obj.remove(0);}
|
||||
for(var i=0;i<options.length;i++){var option=document.createElement('option');option.setAttribute('data-l10n-id',options[i].attr);option.selected=(selectedItem===i);option.value=options[i].value;obj.appendChild(option);}}});};});
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
define('panels/developer/developer',['require','modules/dialog_service','modules/apps_cache','shared/screen_layout','modules/settings_cache','shared/homescreens/homescreen_settings'],function(require){'use strict';var DialogService=require('modules/dialog_service');var AppsCache=require('modules/apps_cache');var ScreenLayout=require('shared/screen_layout');var SettingsCache=require('modules/settings_cache');var HomescreenSettings=require('shared/homescreens/homescreen_settings');const DEVTOOLS_UNRESTRICTED_KEY='devtools.unrestricted';var Developer=function(){this._elements=null;};Developer.prototype={init:function d_init(elements){this._elements=elements;this._elements.ftuLauncher.addEventListener('click',this._launchFTU);if(!ScreenLayout.getCurrentLayout('hardwareHomeButton')){this._elements.softwareHomeButton.style.display='none';if(!ScreenLayout.getCurrentLayout('tiny')){this._elements.homegesture.style.display='none';}}
|
||||
if(navigator.mozPower){this._elements.resetSwitch.disabled=false;this._elements.resetSwitch.addEventListener('click',event=>{this._resetDevice();event.preventDefault();});}else{this._elements.resetSwitch.disabled=true;}
|
||||
HomescreenSettings.addEventListener('updated',e=>{var prop=e.target;if(prop.name==='grid.paging'){this._homescreenPagingEnabled=prop.value;this._elements.homescreenPaging.checked=prop.value;}});this._elements.homescreenPaging.addEventListener('change',()=>{this._setHomescreenPaging(this._elements.homescreenPaging.checked);});HomescreenSettings.get('grid.paging').then(value=>{this._homescreenPagingEnabled=value;this._elements.homescreenPaging.checked=value;});},_launchFTU:function d__launchFTU(){var key='ftu.manifestURL';var req=navigator.mozSettings.createLock().get(key);req.onsuccess=function ftuManifest(){var ftuManifestURL=req.result[key];if(!ftuManifestURL){ftuManifestURL=document.location.protocol+'//ftu.gaiamobile.org'+
|
||||
(location.port?(':'+location.port):'')+'/manifest.webapp';}
|
||||
var ftuApp=null;AppsCache.apps().then(function(apps){for(var i=0;i<apps.length&&ftuApp===null;i++){var app=apps[i];if(app.manifestURL===ftuManifestURL){ftuApp=app;}}
|
||||
if(ftuApp){ftuApp.launch();}else{DialogService.alert('no-ftu',{title:'no-ftu'});}});};},_resetDevice:function d__resetDevice(){SettingsCache.getSettings(results=>{var unrestricted=results[DEVTOOLS_UNRESTRICTED_KEY];if(unrestricted){DialogService.confirm('reset-devtools-warning-body',{title:'reset-devtools-warning-title',submitButton:'factory-reset',cancelButton:'cancel'}).then((result)=>{var type=result.type;if(type==='submit'){this._wipe('normal');}});}else{DialogService.show('full-developer-mode-warning').then((result)=>{if(result.type==='submit'&&result.value==='final_warning'){DialogService.show('full-developer-mode-final-warning');}});}});},_wipe:function about__wipe(reason){var power=navigator.mozPower;if(!power){console.error('Cannot get mozPower');return;}
|
||||
if(!power.factoryReset){console.error('Cannot invoke mozPower.factoryReset()');return;}
|
||||
power.factoryReset(reason);},_setHomescreenPaging:function d__setHomescrenPaging(paging){if(this._homescreenPagingEnabled===paging){return;}
|
||||
HomescreenSettings.put('grid.paging',paging);}};return function ctor_developer_panel(){return new Developer();};});define('panels/developer/panel',['require','modules/settings_panel','panels/developer/developer'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var Developer=require('panels/developer/developer');return function ctor_developer_panel(){var developer=Developer();return SettingsPanel({onInit:function(panel){var elements={resetSwitch:panel.querySelector('.reset-devtools'),ftuLauncher:panel.querySelector('.ftuLauncher'),softwareHomeButton:panel.querySelector('.software-home-button'),homegesture:panel.querySelector('.homegesture'),homescreenPaging:panel.querySelector('.homescreen-paging')};developer.init(elements);}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define('panels/developer_hud/developer_hud',['require','shared/settings_listener'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var DeveloperHud=function(){this._elements={};};DeveloperHud.prototype={init:function about_init(elements){this._elements=elements;SettingsListener.observe('devtools.overlay',false,(enabled)=>{[].forEach.call(this._elements.widgets,function(widget){widget.classList.toggle('disabled',!enabled);});});SettingsListener.observe('hud.appmemory',false,(enabled)=>{[].forEach.call(this._elements.items,function(item){item.parentElement.parentElement.classList.toggle('disabled',!enabled);});});}};return function ctor_developer_hud_panel(){return new DeveloperHud();};});define('panels/developer_hud/panel',['require','modules/settings_panel','panels/developer_hud/developer_hud'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var DeveloperHud=require('panels/developer_hud/developer_hud');return function ctor_developer_hud_panel(){var developerHud=DeveloperHud();return SettingsPanel({onInit:function(panel){var elements={widgets:panel.querySelectorAll('.hud-widgets'),items:panel.querySelectorAll('.memory-item')};developerHud.init(elements);}});};});
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
define(['require','shared/uuid'],function(require){'use strict';var DeveloperServiceWorkers=function(){this._elements={};};DeveloperServiceWorkers.prototype={init:function(elements){this._elements=elements;this.listeners={};this.serviceWorkersCount=0;SettingsListener.observe('dom.serviceWorkers.interception.enabled',true,(enabled)=>{this._elements.serviceWorkersInterceptionEnabled.checked=enabled;});SettingsListener.observe('dom.serviceWorkers.testing.enabled',false,(enabled)=>{this._elements.serviceWorkersTestingEnabled.checked=enabled;});},onInterceptionCheckboxClick:function(){var checkbox=this._elements.serviceWorkersInterceptionEnabled;navigator.mozSettings.createLock().set({'dom.serviceWorkers.interception.enabled':checkbox.checked});},onTestingCheckboxClick:function(){var checkbox=this._elements.serviceWorkersTestingEnabled;navigator.mozSettings.createLock().set({'dom.serviceWorkers.testing.enabled':checkbox.checked});},renderServiceWorkerInfo:function(serviceWorkersInfo){var principal=serviceWorkersInfo.principal;var scope=serviceWorkersInfo.scope;var list=this._elements.serviceWorkersList;var fragment=document.createDocumentFragment();var div=document.createElement('div');div.dataset.scope=scope;var header=document.createElement('header');var headerContent=document.createElement('h2');headerContent.textContent=principal.origin;header.appendChild(headerContent);div.appendChild(header);[{l10nId:'service-worker-scope',textContent:serviceWorkersInfo.scope},{l10nId:'service-worker-script-spec',textContent:serviceWorkersInfo.scriptSpec}].forEach(property=>{var li=document.createElement('li');var span=document.createElement('span');span.dataset.l10nId=property.l10nId;li.appendChild(span);var small=document.createElement('small');small.textContent=property.textContent;li.appendChild(small);div.appendChild(li);});if(!this.listeners[scope]){var self=this;this.listeners[scope]={update:function(){self.update(principal,scope);},unregister:function(){self.unregister(principal,scope);}};}
|
||||
var update=document.createElement('li');var updateButton=document.createElement('button');updateButton.dataset.l10nId='service-worker-update';updateButton.addEventListener('click',this.listeners[scope].update);update.appendChild(updateButton);div.appendChild(update);var unregister=document.createElement('li');var unregisterButton=document.createElement('button');unregisterButton.dataset.l10nId='service-worker-unregister';unregisterButton.addEventListener('click',this.listeners[scope].unregister);unregister.appendChild(unregisterButton);div.appendChild(unregister);fragment.appendChild(div);list.appendChild(fragment);this._elements.serviceWorkersListSection.classList.remove('hidden');this._elements.serviceWorkersEmptySection.classList.add('hidden');},renderNoServiceWorkerInfo:function(){this._elements.serviceWorkersListSection.classList.add('hidden');this._elements.serviceWorkersEmptySection.classList.remove('hidden');},connect:function(){if(this._port){return Promise.resolve(this._port);}
|
||||
return new Promise((resolve,reject)=>{navigator.mozApps.getSelf().onsuccess=event=>{var app=event.target.result;app.connect('about-service-workers').then(ports=>{if(!ports||!ports.length){return reject();}
|
||||
this._port=ports[0];resolve(this._port);}).catch(reject);};});},iacRequest:function(request){return new Promise((resolve,reject)=>{this.connect().then(port=>{var id=require('shared/uuid')();request.id=id;port.postMessage(request);port.onmessage=event=>{var message=event.data;if(!message||(message.id!=id)){return;}
|
||||
resolve(message.result);};});});},refresh:function(){this.iacRequest({name:'init'}).then(result=>{var registrations=result.registrations;if(!result||!result.registrations){this.renderNoServiceWorkerInfo();return;}
|
||||
this.serviceWorkersCount=registrations.length;if(!this.serviceWorkersCount){this.renderNoServiceWorkerInfo();return;}
|
||||
this._elements.serviceWorkersList.innerHTML='';for(var i=0;i<registrations.length;i++){this.renderServiceWorkerInfo(registrations[i]);}});},update:function(principal,scope){this.iacRequest({name:'update',principal:principal,scope:scope}).catch(e=>{console.error('Could not update service worker '+e);});},unregister:function(principal,scope){this.iacRequest({name:'unregister',principal:principal,scope:scope}).then(result=>{if(!result){return;}
|
||||
this.doUnregister(scope);}).catch(e=>{console.error('Could not unregister service worker '+e);});},doUnregister:function(scope){var element=document.querySelector('[data-scope="'+scope+'"]');if(!element){return;}
|
||||
element.parentElement.removeChild(element);var listeners=this.listeners[scope];if(!listeners){return;}
|
||||
if(listeners.update){window.removeEventListener('click',listeners.update);}
|
||||
if(listeners.unregister){window.removeEventListener('click',listeners.unregister);}
|
||||
this.serviceWorkersCount--;if(!this.serviceWorkersCount){this.renderNoServiceWorkerInfo();}}};return function(){return new DeveloperServiceWorkers();};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_panel','panels/developer_service_workers/developer_service_workers'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var DeveloperServiceWorkers=require('panels/developer_service_workers/developer_service_workers');return function ctor_developer_service_workers_panel(){var developerServiceWorkers=DeveloperServiceWorkers();return SettingsPanel({onInit:function(panel){var elements={serviceWorkersListSection:panel.querySelector('#service-workers-list-section'),serviceWorkersList:panel.querySelector('#service-workers-list'),serviceWorkersEmptySection:panel.querySelector('#service-workers-empty-section'),serviceWorkersInterceptionEnabled:panel.querySelector('#service-workers-interception-enabled'),serviceWorkersTestingEnabled:panel.querySelector('#service-workers-testing-enabled')};developerServiceWorkers.init(elements);elements.serviceWorkersInterceptionEnabled.addEventListener('click',developerServiceWorkers.onInterceptionCheckboxClick.bind(developerServiceWorkers));elements.serviceWorkersTestingEnabled.addEventListener('click',developerServiceWorkers.onTestingCheckboxClick.bind(developerServiceWorkers));},onShow:function(){developerServiceWorkers.refresh();}});};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define('panels/display/slider_handler',['require'],function(require){'use strict';const INTERVAL=300;var SliderHandler=function(){this._element=null;this._key='';this._isFirstInput=false;this._intervalID=null;};SliderHandler.prototype={init:function d_init(element,key){this._element=element;this._key=key;this._boundSetSliderValue=function(value){this._setSliderValue(value);}.bind(this);this._element.addEventListener('touchstart',this._touchStartHandler.bind(this));this._element.addEventListener('input',this._inputHandler.bind(this));this._element.addEventListener('touchend',this._touchEndHandler.bind(this));},_setSliderValue:function d_setSliderValue(value){this._element.value=value;},_touchStartHandler:function d_touchStartHandler(event){this._isFirstInput=true;},_updateSetting:function d_updateSetting(){var value=this._element.value;var settingObject={};settingObject[this._key]=value;if(value!==this._previous){navigator.mozSettings.createLock().set(settingObject);this._previous=value;}},_inputHandler:function d_inputHandler(event){if(this._isFirstInput){this._isFirstInput=false;this._updateSetting();this._intervalID=setInterval(this._updateSetting.bind(this),INTERVAL);}},_touchEndHandler:function d_touchEndHandler(event){clearInterval(this._intervalID);this._updateSetting();}};return function ctor_sliderHandler(){return new SliderHandler();};});define('panels/display/display',['require','shared/settings_listener','panels/display/slider_handler'],function(require){'use strict';var SettingsListener=require('shared/settings_listener');var SliderHandler=require('panels/display/slider_handler');const AUTO_BRIGHTNESS_SETTING='screen.automatic-brightness';const SCREEN_BRIGHTNESS='screen.brightness';var Display=function(){this.elements=null;};Display.prototype={init:function d_init(elements,data){this.elements=elements;this.initBrightnessItems(data);SliderHandler().init(elements.brightnessManualInput,SCREEN_BRIGHTNESS);},initBrightnessItems:function d_init_brightness_items(data){var brightnessAuto=this.elements.brightnessAuto;var brightnessAutoCheckbox=this.elements.brightnessAutoCheckbox;var brightnessManual=this.elements.brightnessManual;var brightnessManualInput=this.elements.brightnessManualInput;if(data.ambientLight){brightnessAuto.hidden=false;SettingsListener.observe(AUTO_BRIGHTNESS_SETTING,false,function(value){brightnessAutoCheckbox.checked=value;brightnessManual.hidden=value;}.bind(this));}else{brightnessAuto.hidden=true;brightnessManual.hidden=false;var cset={};cset[AUTO_BRIGHTNESS_SETTING]=false;SettingsListener.getSettingsLock().set(cset);}
|
||||
SettingsListener.observe(SCREEN_BRIGHTNESS,0.5,function(value){brightnessManualInput.value=value;}.bind(this));}};return function ctor_display(){return new Display();};});define('panels/display/panel',['require','modules/settings_panel','panels/display/display','shared/lazy_loader'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var DisplayModule=require('panels/display/display');var LazyLoader=require('shared/lazy_loader');var displayElements={};return function ctor_display_panel(){var display=DisplayModule();return SettingsPanel({onInit:function dp_onInit(panel){displayElements={brightnessManual:panel.querySelector('.brightness-manual'),brightnessManualInput:panel.querySelector('.brightness-manual input'),brightnessAuto:panel.querySelector('.brightness-auto'),brightnessAutoCheckbox:panel.querySelector('.brightness-auto gaia-checkbox')};LazyLoader.getJSON('/resources/device-features.json').then(function(data){display.init(displayElements,data);});}});};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define(['require','modules/settings_cache'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var settings=navigator.mozSettings;var kEnabledKey='privacy.donottrackheader.enabled';var kValueKey='privacy.donottrackheader.value';var enabledMap={'0':true,'1':true,'-1':false};var DoNotTrack=function(){};DoNotTrack.prototype={keyMigration:function dnt_migration(){SettingsCache.getSettings(function(results){if(results[kValueKey]===undefined){var value='-1';if(results[kEnabledKey]!==undefined){value=results[kEnabledKey]?'1':'-1';}
|
||||
settings.createLock().set({kValueKey:value});}});},carryKeyChange:function carryKeyChange(){settings.addObserver(kValueKey,function(result){var enabled=enabledMap[result.settingValue];if(enabled===undefined){console.warn('Invalid '+kValueKey+' value '+
|
||||
result.settingValue);return;}
|
||||
var cset={};cset[kEnabledKey]=enabled;var request=settings.createLock().set(cset);request.onerror=function set_onerror(){console.warn('Set '+kEnabledKey+' failed');};});}};return function ctor_do_not_track(){return new DoNotTrack();};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_panel','panels/do_not_track/do_not_track'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var DoNotTrackModule=require('panels/do_not_track/do_not_track');return function ctor_do_not_track_panel(){var doNotTrack=DoNotTrackModule();return SettingsPanel({onInit:function(panel){doNotTrack.keyMigration();doNotTrack.carryKeyChange();}});};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define('panels/feedback_choose/panel',['require','modules/settings_panel','modules/settings_service'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var SettingsService=require('modules/settings_service');return function ctor_choose_feedback_panel(){var feedbackHappy;var feedbackSad;function navigateToSendfeedbackPanel(evt){SettingsService.navigate('improveBrowserOS-sendFeedback',{feel:evt.currentTarget.id});}
|
||||
return SettingsPanel({onInit:function(panel){feedbackHappy=panel.querySelector('#feedback-happy');feedbackSad=panel.querySelector('#feedback-sad');},onBeforeShow:function(){feedbackHappy.addEventListener('click',navigateToSendfeedbackPanel);feedbackSad.addEventListener('click',navigateToSendfeedbackPanel);},onBeforeHide:function(){feedbackHappy.removeEventListener('click',navigateToSendfeedbackPanel);feedbackSad.removeEventListener('click',navigateToSendfeedbackPanel);}});};});
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
const IAC_API_WAKEUP_REASON_ENABLED_CHANGED=0;const IAC_API_WAKEUP_REASON_STALE_REGISTRATION=1;const IAC_API_WAKEUP_REASON_LOGIN=2;const IAC_API_WAKEUP_REASON_LOGOUT=3;const IAC_API_WAKEUP_REASON_TRY_DISABLE=4;const IAC_API_WAKEUP_REASON_LOCKSCREEN_CLOSED=5;function wakeUpFindMyDevice(reason){navigator.mozApps.getSelf().onsuccess=function(){var app=this.result;app.connect('findmydevice-wakeup').then(function(ports){ports[0].postMessage(reason);});};};define("shared/findmydevice_iac_api",(function(global){return function(){var ret,fn;return ret||global.wakeUpFindMyDevice;};}(this)));define('panels/findmydevice/findmydevice',['require','modules/settings_utils','shared/settings_listener','shared/settings_helper','shared/findmydevice_iac_api','shared/lazy_loader'],function(require){var SettingsUtils=require('modules/settings_utils');var SettingsListener=require('shared/settings_listener');var SettingsHelper=require('shared/settings_helper');var wakeUpFindMyDevice=require('shared/findmydevice_iac_api');var LazyLoader=require('shared/lazy_loader');var FindMyDevice=function(){this._interactiveLogin=false;this._enabledHelper=SettingsHelper('findmydevice.enabled');this._loggedInHelper=SettingsHelper('findmydevice.logged-in');this._registeredHelper=SettingsHelper('findmydevice.registered');this._boundSetTracked=this._boundSetTracked||this._setTracked.bind(this);this._boundSetEnabled=this._boundSetEnabled||this._setEnabled.bind(this);this._boundSetCanDisable=this._boundSetCanDisable||this._setCanDisable.bind(this);this._boundLoginClick=this._boundLoginClick||this._onLoginClick.bind(this);this._boundCheckboxChanged=this._boundCheckboxChanged||this._onCheckboxChanged.bind(this);};FindMyDevice.prototype={onInit:function fmd_init(elements){this._elements=elements;SettingsUtils.runHeaderFontFit(this._elements.header);LazyLoader.getJSON('/resources/findmydevice.json').then((data)=>{SettingsListener.observe('findmydevice.logged-in',false,this._togglePanel.bind(this));navigator.mozId.watch({wantIssuer:'firefox-accounts',audience:data.api_url,onlogin:this._onChangeLoginState.bind(this,true),onlogout:this._onChangeLoginState.bind(this,false),onready:()=>{this._elements.loginButton.removeAttribute('disabled');console.log('Find My Device: onready fired');},onerror:(err)=>{console.error('Find My Device: onerror fired: '+err);this._interactiveLogin=false;this._elements.loginButton.removeAttribute('disabled');var errorName=JSON.parse(err).name;if(errorName!=='OFFLINE'){if(errorName==='UNVERIFIED_ACCOUNT'){this._elements.unverifiedError.hidden=false;this._elements.login.hidden=true;}
|
||||
this._loggedInHelper.set(false);}}});});},onBeforeShow:function fmd_onBeforeShow(){SettingsListener.observe('findmydevice.tracking',false,this._boundSetTracked);SettingsListener.observe('findmydevice.enabled',false,this._boundSetEnabled);SettingsListener.observe('findmydevice.can-disable',true,this._boundSetCanDisable);this._elements.loginButton.addEventListener('click',this._boundLoginClick);this._elements.checkbox.addEventListener('change',this._boundCheckboxChanged);},onBeforeHide:function fmd_onBeforeHide(){SettingsListener.unobserve('findmydevice.tracking',this._boundSetTracked);SettingsListener.unobserve('findmydevice.enabled',this._boundSetEnabled);SettingsListener.unobserve('findmydevice.can-disable',this._boundSetCanDisable);this._elements.loginButton.removeEventListener('click',this._boundLoginClick);this._elements.checkbox.removeEventListener('change',this._boundCheckboxChanged);},_onLoginClick:function fmd_on_login_click(e){e.stopPropagation();e.preventDefault();if(this._elements.loginButton.disabled){return;}
|
||||
if(!window.navigator.onLine){document.l10n.formatValue('findmydevice-enable-network').then((msg)=>window.alert(msg));return;}
|
||||
this._interactiveLogin=true;navigator.mozId.request({oncancel:()=>{this._interactiveLogin=false;console.log('Find My Device: oncancel fired');}});},_setEnabled:function fmd_set_enabled(value){this._elements.checkbox.checked=value;this._elements.status.hidden=!value;},_setTracked:function fmd_set_tracked(value){this._elements.status.setAttribute('data-l10n-id',value?'findmydevice-active-tracking':'findmydevice-not-tracking');},_setCanDisable:function fmd_set_can_disable(value){this._elements.checkbox.disabled=!value;},_togglePanel:function fmd_toggle_panel(loggedIn){this._elements.signin.hidden=loggedIn;this._elements.settings.hidden=!loggedIn;},_onChangeLoginState:function fmd_on_change_login_state(loggedIn){console.log('settings, logged in: '+loggedIn);if(this._interactiveLogin){this._registeredHelper.get(registered=>{if(!registered){this._enabledHelper.set(true);}});}
|
||||
this._interactiveLogin=false;this._loggedInHelper.set(loggedIn);this._elements.unverifiedError.hidden=true;this._elements.login.hidden=false;},_onCheckboxChanged:function fmd_on_checkbox_changed(event){event.preventDefault();if(!window.navigator.onLine){document.l10n.formatValue('findmydevice-enable-network').then(msg=>window.alert(msg));return;}
|
||||
this._elements.checkbox.disabled=true;if(this._elements.checkbox.checked===false){wakeUpFindMyDevice(IAC_API_WAKEUP_REASON_TRY_DISABLE);}else{this._enabledHelper.set(true,()=>{this._elements.checkbox.disabled=false;});}}};return function ctor_findmydevice(){return new FindMyDevice();};});define('panels/findmydevice/panel',['require','modules/settings_panel','panels/findmydevice/findmydevice'],function(require){var SettingsPanel=require('modules/settings_panel');var FindMyDevice=require('panels/findmydevice/findmydevice');return function ctor_findmydevice_panel(){var elements;var findmydevice=FindMyDevice();return SettingsPanel({onInit:function(panel){elements={header:panel.querySelector('gaia-header'),login:panel.querySelector('.findmydevice-login'),loginButton:panel.querySelector('.findmydevice-login > button'),unverifiedError:panel.querySelector('.findmydevice-fxa-unverified-error'),checkbox:panel.querySelector('.findmydevice-enabled gaia-switch'),status:panel.querySelector('.findmydevice-tracking'),signin:panel.querySelector('.findmydevice-signin'),settings:panel.querySelector('.findmydevice-settings')};findmydevice.onInit(elements);},onBeforeShow:function(){findmydevice.onBeforeShow();},onBeforeHide:function(){findmydevice.onBeforeHide();}});};});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define('panels/frame/panel',['require','modules/settings_panel','modules/settings_service'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var SettingsService=require('modules/settings_service');return function ctor_frame_panel(){var framePanel;var iframe;var noReflow;return SettingsPanel({onInit:function(panel){framePanel=panel;},onBeforeShow:function(panel,options){if(noReflow){noReflow=false;return;}
|
||||
var self=this;iframe=document.createElement('iframe');iframe.setAttribute('mozapp',options.mozapp);iframe.setAttribute('mozbrowser',true);iframe.src=options.src;iframe.addEventListener('mozbrowserclose',this._onBrowserClose);iframe.addEventListener('mozbrowsershowmodalprompt',function(e){var message=self._escapeHTML(e.detail.message);var initialValue=e.detail.initialValue;var type=e.detail.promptType;switch(type){case'alert':window.alert(message);break;case'prompt':e.detail.returnValue=window.prompt(message,initialValue);break;case'confirm':e.detail.returnValue=window.confirm(message);break;}});panel.appendChild(iframe);},onHide:function(){if(document.hidden){noReflow=true;return;}
|
||||
framePanel.removeChild(iframe);},_onBrowserClose:function(){SettingsService.back();},_escapeHTML:function(str){var span=document.createElement('span');span.textContent=str;span.innerHTML=span.innerHTML.replace(/\n/g,'<br/>');return span.innerHTML;}});};});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
define(['require','modules/settings_service','modules/settings_cache','modules/dialog_service','modules/panel'],function(require){'use strict';var SettingsService=require('modules/settings_service');var SettingsCache=require('modules/settings_cache');var DialogService=require('modules/dialog_service');var Panel=require('modules/panel');return function ctor_full_dev_panel(){return Panel({onInit:function(panel){this._panel=panel;SettingsCache.getSettings((results)=>{var devMenuEnabled=!!results['developer.menu.enabled'];if(devMenuEnabled){this._showFullDevModeWarning();}else{this._showEnableDevMenuWarning();}});},_close:function(){SettingsService.back();},_showFullDevModeWarning:function(){var warningDialog=this._panel.querySelector('.full-dev-mode-warning');var okBtn=warningDialog.querySelector('button[type="submit"]');var cancelBtn=warningDialog.querySelector('button[type="reset"]');warningDialog.hidden=false;cancelBtn.onclick=this._close;okBtn.onclick=()=>{DialogService.show('full-developer-mode-final-warning').then(()=>{this._close();});};},_showEnableDevMenuWarning:function(){var warningDialog=this._panel.querySelector('.dev-menu-disabled-warning');var closeBtn=warningDialog.querySelector('button[type="submit"]');warningDialog.hidden=false;closeBtn.onclick=this._close;}});};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/dialog_panel'],function(require){'use strict';var DialogPanel=require('modules/dialog_panel');return function ctor_full_dev_warning(){return DialogPanel({onInit:function(panel){this._warningDialog={root:panel.querySelector('.warning-dialog'),okBtn:panel.querySelector('.warning-dialog button[type="submit"]'),cancelBtn:panel.querySelector('.warning-dialog button[type="reset"]'),warningInfo:panel.querySelector('.warning-dialog .warning-info')};},onBeforeShow:function(){this._count=10;this._updateWarningInfo(this._count);},onSubmit:function(){if(this._count===1){this._wipe().catch(()=>{this.close();});return Promise.reject();}else{this._count--;this._updateWarningInfo(this._count);return Promise.reject();}},_updateWarningInfo:function(count){document.l10n.setAttributes(this._warningDialog.warningInfo,'enable-full-dev-mode-final-warning-msg',{count:count});},_wipe:function(){var power=navigator.mozPower;if(!power){console.error('Cannot get mozPower');return Promise.reject();}
|
||||
if(!power.factoryReset){console.error('Cannot invoke mozPower.factoryReset()');return Promise.reject();}
|
||||
power.factoryReset('root');return Promise.resolve();}});};});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
define(['require','modules/settings_cache','modules/dialog_panel'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var DialogPanel=require('modules/dialog_panel');return function ctor_full_dev_panel(){return DialogPanel({onInit:function(panel){this._panel=panel;this._devMenuEnabled=false;this._fullDevModeWarning=panel.querySelector('.full-dev-mode-warning');this._enableDevMenuWarning=panel.querySelector('.dev-menu-disabled-warning');},onBeforeShow:function(panel){return new Promise((resolve)=>{SettingsCache.getSettings((results)=>{this._devMenuEnabled=!!results['developer.menu.enabled'];if(this._devMenuEnabled){this._showFullDevModeWarning();}else{this._showEnableDevMenuWarning();}
|
||||
resolve();});});},onHide:function(){this._fullDevModeWarning.hidden=true;this._enableDevMenuWarning.hidden=true;[].slice.call(this._panel.querySelectorAll('button')).forEach((btn)=>{btn.removeAttribute('type');});},onSubmit:function(){if(this._devMenuEnabled){return Promise.resolve('final_warning');}},_showFullDevModeWarning:function(){var warningDialog=this._fullDevModeWarning;var enableBtn=warningDialog.querySelector('button.enable-btn');var cancelBtn=warningDialog.querySelector('button.cancel-btn');enableBtn.setAttribute('type','submit');cancelBtn.setAttribute('type','reset');warningDialog.hidden=false;},_showEnableDevMenuWarning:function(){var warningDialog=this._enableDevMenuWarning;var closeBtn=warningDialog.querySelector('button.close-btn');closeBtn.setAttribute('type','submit');warningDialog.hidden=false;}});};});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
define('panels/help/support',['require','modules/settings_cache','shared/lazy_loader'],function(require){'use strict';var SettingsCache=require('modules/settings_cache');var LazyLoader=require('shared/lazy_loader');var Support=function(){};Support.prototype={init:function support_init(elements){this._elements=elements;this._callSupportInfo=null;var url='http://support.mozilla.org/products/firefox-os';this._elements.userGuide.addEventListener('click',()=>{this._elements.userGuide.blur();var activity=new window.MozActivity({name:'view',data:{type:'url',url:url}});activity.onsuccess=function(){};});this._getSupportInfo(this._displaySupportInfo.bind(this));},uninit:function(){this._elements=null;this._supportInfo=null;this._callSupportInfo=null;},_getSupportInfo:function support_getSupportInfo(callback){if(this._supportInfo){callback(this._supportInfo);return;}
|
||||
LazyLoader.getJSON('/resources/support.json').then(function loadSupportInfo(data){this._supportInfo=data;callback(this._supportInfo);}.bind(this));},_createLinkNode:function support_createLinkNode(data,type){var link=document.createElement('a');link.setAttribute('href',data.href);link.classList.add('link-text');if(type=='tel'){link.textContent=data.title+' ('+data.href+')';}else{link.textContent=data.title;}
|
||||
return link;},_enableSupportInfo:function support_enableSupportInfo(){this._elements.help.dataset.hasSupportInfo=true;},_setOnlineSupportInfo:function support_setOnlineSupportInfo(onlineSupportInfo){this._enableSupportInfo();var nodes=this._createLinkNode(onlineSupportInfo);this._elements.supportText.appendChild(nodes);},_setCallSupportInfo:function support_setCallSupportInfo(supportInfo){this._enableSupportInfo();for(var id in supportInfo){this._elements.supportNumber.appendChild(this._createLinkNode(supportInfo[id],'tel'));}},_renderSupportInfo:function support_renderSupportInfo(result){var onlineSupportInfo=null;var onlineSupportTitle=result['support.onlinesupport.title'];if(onlineSupportTitle!==''){onlineSupportInfo={title:onlineSupportTitle};onlineSupportInfo.href=result['support.onlinesupport.href'];this._setOnlineSupportInfo(onlineSupportInfo);}else if(this._supportInfo){this._setOnlineSupportInfo(this._supportInfo.onlinesupport);}
|
||||
var callSupport1Title=result['support.callsupport1.title'];if(callSupport1Title!==''){this._callSupportInfo=[{'title':callSupport1Title,'href':result['support.callsupport1.href']}];var callSupport2Title=result['support.callsupport2.title'];if(callSupport2Title!==''){this._callSupportInfo.push({'title':callSupport2Title,'href':result['support.callsupport2.href']});this._setCallSupportInfo(this._callSupportInfo);}}else if(this._supportInfo){this._setCallSupportInfo(this._supportInfo.callsupport);}},_displaySupportInfo:function support_displaySupportInfo(supportInfo){SettingsCache.getSettings(this._renderSupportInfo.bind(this));}};return function ctor_support(){return new Support();};});define('panels/help/panel',['require','modules/settings_panel','panels/help/support'],function(require){'use strict';var SettingsPanel=require('modules/settings_panel');var Support=require('panels/help/support');return function ctor_support_panel(){var help=Support();return SettingsPanel({onInit:function(panel){var elements={userGuide:panel.querySelector('#user-guide'),help:panel,supportText:panel.querySelector('#help-online-support-text'),supportNumber:panel.querySelector('#help-call-support-numbers')};help.init(elements);}});};});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
define(['require','modules/settings_service','modules/navigator/mozApps','shared/manifest_helper'],function(require){'use strict';const MANIFEST_URL_PREF='homescreen.manifestURL';const DEFAULT_MANIFEST='app://homescreen.gaiamobile.org/manifest.webapp';var SettingsService=require('modules/settings_service');var mozApps=require('modules/navigator/mozApps');var ManifestHelper=require('shared/manifest_helper');var HomescreenDetails=function ctor_homescreen_details(){this._elements={};this._app=null;};HomescreenDetails.prototype={init:function hd_init(elements){this._elements=elements;this._elements.uninstallButton.addEventListener('click',this.uninstall.bind(this));},onBeforeShow:function hd_onBeforeShow(options){options.author=options.author||{url:'',name:''};options.version=options.version||'0.0.0';options.description=options.description||'';this._app=options.app;var iconSrc='../style/images/default.png';var manifest=new ManifestHelper(this._app.manifest||this._app.updateManifest);if(manifest.icons&&Object.keys(manifest.icons).length){var key=Object.keys(manifest.icons)[0];var iconUrl=manifest.icons[key];if(!(/^(http|https|data):/.test(iconUrl))){iconUrl=this._app.origin+'/'+iconUrl;}
|
||||
iconSrc=iconUrl;}
|
||||
this._elements.icon.src=iconSrc;this._elements.headerTitle.textContent=options.name;this._elements.detailTitle.textContent=options.name;this._elements.detailName.textContent=options.author.name;this._elements.detailVersion.textContent=`v.${options.version}`;this._elements.detailDescription.textContent=options.description;this._elements.detailURLLink.href=options.author.url;this._elements.detailURLLink.textContent=options.author.url;this._elements.uninstallButton.disabled=!options.removable;},uninstall:function hd_uninstall(){const settings=window.navigator.mozSettings;var uninstallApp=()=>{mozApps.mgmt.uninstall(this._app).onsuccess=()=>{this.back();};};var manifestURL=this._app.manifestURL;var homescreenSetting=settings.createLock().get(MANIFEST_URL_PREF);homescreenSetting.onsuccess=()=>{var homeManifestURL=homescreenSetting.result[MANIFEST_URL_PREF];if(homeManifestURL===manifestURL){var settingObject={};settingObject[MANIFEST_URL_PREF]=DEFAULT_MANIFEST;homescreenSetting=settings.createLock().set(settingObject);homescreenSetting.onsuccess=()=>{uninstallApp();};}else{uninstallApp();}};},back:function hd_back(){SettingsService.navigate('homescreens-list');}};return()=>new HomescreenDetails();});
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue