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
130
assets/webapps/system.gaiamobile.org/js/cell_broadcast_system.js
Normal file
130
assets/webapps/system.gaiamobile.org/js/cell_broadcast_system.js
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
'use strict';
|
||||
/* global CarrierInfoNotifier */
|
||||
/* global MobileOperator */
|
||||
/* global Service */
|
||||
|
||||
(function(exports) {
|
||||
|
||||
/**
|
||||
* CellBroadcastSystem
|
||||
* @class CellBroadcastSystem
|
||||
* @requires CarrierInfoNotifier
|
||||
* @requires MobileOperator
|
||||
*/
|
||||
function CellBroadcastSystem() {}
|
||||
|
||||
CellBroadcastSystem.prototype = {
|
||||
name: 'CellBroadcastSystem',
|
||||
|
||||
/**
|
||||
* Whether or not the cellbroadcast setting is enabled or disabled.
|
||||
* @memberof CellBroadcastSystem.prototype
|
||||
* @type {Array}
|
||||
*/
|
||||
_settingsDisabled: [],
|
||||
|
||||
/**
|
||||
* The cell broadcast settings key.
|
||||
* @memberof CellBroadcastSystem.prototype
|
||||
* @type {String}
|
||||
*/
|
||||
_settingsKey: 'ril.cellbroadcast.disabled',
|
||||
|
||||
/**
|
||||
* Starts listening for events and settings changes.
|
||||
* @memberof CellBroadcastSystem.prototype
|
||||
*/
|
||||
start: function cbs_start() {
|
||||
var self = this;
|
||||
if (navigator && navigator.mozCellBroadcast) {
|
||||
navigator.mozCellBroadcast.onreceived = this.show.bind(this);
|
||||
}
|
||||
|
||||
var settings = window.navigator.mozSettings;
|
||||
var req = settings.createLock().get(this._settingsKey);
|
||||
req.onsuccess = function() {
|
||||
self._settingsDisabled = req.result[self._settingsKey];
|
||||
};
|
||||
|
||||
settings.addObserver(
|
||||
this._settingsKey, this.settingsChangedHandler.bind(this));
|
||||
Service.register('show', this);
|
||||
},
|
||||
|
||||
/**
|
||||
* Called when the cellbroadcast setting is changed.
|
||||
* @memberof CellBroadcastSystem.prototype
|
||||
*/
|
||||
settingsChangedHandler: function cbs_settingsChangedHandler(event) {
|
||||
this._settingsDisabled = event.settingValue;
|
||||
|
||||
if (this._hasCBSDisabled()) {
|
||||
var evt = new CustomEvent('cellbroadcastmsgchanged', { detail: null });
|
||||
window.dispatchEvent(evt);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows the cell broadcast notification.
|
||||
* @memberof CellBroadcastSystem.prototype
|
||||
*/
|
||||
show: function cbs_show(event) {
|
||||
var msg = event.message;
|
||||
var serviceId = msg.serviceId || 0;
|
||||
var conn = window.navigator.mozMobileConnections[serviceId];
|
||||
var id = msg.messageId;
|
||||
var cdmaCategory = msg.cdmaServiceCategory;
|
||||
|
||||
// Early return CMAS messsage and let network alert app handle it. Please
|
||||
// ref http://www.etsi.org/deliver/etsi_ts/123000_123099/123041/
|
||||
// 11.06.00_60/ts_123041v110600p.pdf, chapter 9.4.1.2.2 Message identifier
|
||||
// for GSM and http://www.3gpp2.org/public_html/specs/
|
||||
// C.R1001-G_v1.0_Param_Administration.pdf for CDMA.
|
||||
// GSM Message id from range 4370 to 4399(1112 hex to 112f hex) and
|
||||
// CDMA service category from range 4096 to 4351(1000 hex to 10ff hex)
|
||||
// should be CMAS and network alert will display detail information.
|
||||
|
||||
var isGSM = cdmaCategory === null;
|
||||
var isGSMCmas = isGSM && (id >= 4370 && id < 4400);
|
||||
var isCDMACmas = !isGSM &&
|
||||
(cdmaCategory >= 0x1000 && cdmaCategory <= 0x10FF);
|
||||
|
||||
if (isGSMCmas || isCDMACmas) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (conn && conn.voice && conn.voice.network &&
|
||||
conn.voice.network.mcc === MobileOperator.BRAZIL_MCC &&
|
||||
id === MobileOperator.BRAZIL_CELLBROADCAST_CHANNEL) {
|
||||
var evt = new CustomEvent('cellbroadcastmsgchanged',
|
||||
{ detail: msg.body });
|
||||
window.dispatchEvent(evt);
|
||||
return;
|
||||
}
|
||||
|
||||
var body = msg.body;
|
||||
|
||||
// XXX: 'undefined' test until bug-1021177 lands
|
||||
if (msg.etws && (!body || (body == 'undefined'))) {
|
||||
body = navigator.mozL10n.get('cb-etws-warningType-' +
|
||||
(msg.etws.warningType ? msg.etws.warningType : 'other'));
|
||||
}
|
||||
|
||||
CarrierInfoNotifier.show(body,
|
||||
navigator.mozL10n.get('cb-channel', { channel: id }));
|
||||
},
|
||||
|
||||
/**
|
||||
* To make sure there is any CBS pref is disabled
|
||||
* @memberof CellBroadcastSystem.prototype
|
||||
*/
|
||||
_hasCBSDisabled: function cbs__getDisabledCBSIndex() {
|
||||
var index =
|
||||
this._settingsDisabled.findIndex(disabled => (disabled === true));
|
||||
return (index >= 0);
|
||||
}
|
||||
};
|
||||
|
||||
exports.CellBroadcastSystem = CellBroadcastSystem;
|
||||
|
||||
}(window));
|
||||
Loading…
Reference in a new issue