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
108
gaia/apps/system/js/operator_variant_manager.js
Executable file
108
gaia/apps/system/js/operator_variant_manager.js
Executable file
|
|
@ -0,0 +1,108 @@
|
|||
/* global BaseModule, OperatorVariantHandler, SIMSlotManager */
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Singleton object that helps to set some carrier-specific settings on boot.
|
||||
* Detects the ICC cards on boot and creates objects in charge of setting
|
||||
* some operator-specific settings relying on the ICC card.
|
||||
*/
|
||||
(function() {
|
||||
var OperatorVariantManager = function(core) {
|
||||
/** Array of OperatorVariantHandler objects. */
|
||||
if (core) {
|
||||
this.mobileConnections = core.mobileConnections;
|
||||
}
|
||||
this.operatorVariantHandlers = [];
|
||||
};
|
||||
OperatorVariantManager.IMPORTS = [
|
||||
'js/operator_variant_handler.js',
|
||||
'shared/js/operator_variant_helper.js'
|
||||
];
|
||||
OperatorVariantManager.EVENTS = [
|
||||
'simslot-updated',
|
||||
'simslot-iccinfochange'
|
||||
];
|
||||
BaseModule.create(OperatorVariantManager, {
|
||||
name: 'OperatorVariantManager',
|
||||
_start: function() {
|
||||
Promise.all([
|
||||
this.ensureValueUnderKeyIsArray('ril.iccInfo.mbdn'),
|
||||
this.ensureValueUnderKeyIsArray('ril.cellbroadcast.disabled'),
|
||||
this.ensureValueUnderKeyIsArray('ril.cellbroadcast.searchlist'),
|
||||
this.readSetting('deviceinfo.os')
|
||||
]).then(function(result) {
|
||||
this.deviceInfoOs = result[3];
|
||||
this.init();
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
_stop: function() {
|
||||
this._operatorVariantHandlers = [];
|
||||
},
|
||||
|
||||
'_handle_simslot-updated': function(evt) {
|
||||
var simslot = evt.detail;
|
||||
this._updateOperatorVariantHandler(simslot);
|
||||
},
|
||||
|
||||
'_handle_simslot-iccinfochange': function(evt) {
|
||||
var simslot = evt.detail;
|
||||
this._updateOperatorVariantHandler(simslot);
|
||||
},
|
||||
|
||||
_updateOperatorVariantHandler: function(simslot) {
|
||||
if (!simslot.simCard ||
|
||||
!simslot.simCard.iccInfo ||
|
||||
!simslot.simCard.iccInfo.iccid) {
|
||||
this.operatorVariantHandlers[simslot.index] = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.operatorVariantHandlers[simslot.index]) {
|
||||
this.operatorVariantHandlers[simslot.index] =
|
||||
new OperatorVariantHandler(simslot.simCard.iccInfo.iccid,
|
||||
simslot.index, this);
|
||||
this.operatorVariantHandlers[simslot.index].start();
|
||||
}
|
||||
},
|
||||
|
||||
init: function() {
|
||||
SIMSlotManager.getSlots().forEach(function(slot) {
|
||||
this._updateOperatorVariantHandler(slot);
|
||||
}, this);
|
||||
},
|
||||
|
||||
/**
|
||||
* Helper function. Ensure the value stored under the specified key is an
|
||||
* array.
|
||||
*/
|
||||
ensureValueUnderKeyIsArray: function(key) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
this.readSetting(key).then(function(value) {
|
||||
var originalSetting = value;
|
||||
var newSetting = null;
|
||||
if (!originalSetting) {
|
||||
newSetting = ['', ''];
|
||||
} else if (!Array.isArray(originalSetting)) {
|
||||
// Migrate settings field if needed
|
||||
newSetting = [originalSetting, ''];
|
||||
}
|
||||
|
||||
if (newSetting) {
|
||||
var obj = {};
|
||||
obj[key] = newSetting;
|
||||
this.writeSetting(obj).then(function() {
|
||||
resolve();
|
||||
}, function() {
|
||||
resolve();
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
}.bind(this), function() {
|
||||
resolve();
|
||||
}.bind(this));
|
||||
}.bind(this));
|
||||
}
|
||||
});
|
||||
})();
|
||||
Loading…
Reference in a new issue