зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central into mozilla-inbound on a CLOSED TREE
This commit is contained in:
Коммит
0c4b3513cd
|
@ -435,7 +435,7 @@ pref("dom.sms.enabled", true);
|
||||||
pref("dom.sms.whitelist", "file://,http://homescreen.gaiamobile.org,http://sms.gaiamobile.org");
|
pref("dom.sms.whitelist", "file://,http://homescreen.gaiamobile.org,http://sms.gaiamobile.org");
|
||||||
|
|
||||||
// Temporary permission hack for WebMobileConnection
|
// Temporary permission hack for WebMobileConnection
|
||||||
pref("dom.mobileconnection.whitelist", "http://homescreen.gaiamobile.org");
|
pref("dom.mobileconnection.whitelist", "http://system.gaiamobile.org,http://homescreen.gaiamobile.org,http://dialer.gaiamobile.org");
|
||||||
|
|
||||||
// Temporary permission hack for WebContacts
|
// Temporary permission hack for WebContacts
|
||||||
pref("dom.mozContacts.enabled", true);
|
pref("dom.mozContacts.enabled", true);
|
||||||
|
|
|
@ -305,7 +305,7 @@ RadioInterfaceLayer.prototype = {
|
||||||
break;
|
break;
|
||||||
case "cardstatechange":
|
case "cardstatechange":
|
||||||
this.radioState.cardState = message.cardState;
|
this.radioState.cardState = message.cardState;
|
||||||
ppmm.sendAsyncMessage("RIL:CardStateChange", message);
|
ppmm.sendAsyncMessage("RIL:CardStateChanged", message);
|
||||||
break;
|
break;
|
||||||
case "sms-received":
|
case "sms-received":
|
||||||
this.handleSmsReceived(message);
|
this.handleSmsReceived(message);
|
||||||
|
@ -361,7 +361,7 @@ RadioInterfaceLayer.prototype = {
|
||||||
voiceInfo);
|
voiceInfo);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//TODO emergency calls
|
voiceInfo.emergencyCallsOnly = state.emergencyCallsOnly;
|
||||||
voiceInfo.connected =
|
voiceInfo.connected =
|
||||||
(state.regState == RIL.NETWORK_CREG_STATE_REGISTERED_HOME) ||
|
(state.regState == RIL.NETWORK_CREG_STATE_REGISTERED_HOME) ||
|
||||||
(state.regState == RIL.NETWORK_CREG_STATE_REGISTERED_ROAMING);
|
(state.regState == RIL.NETWORK_CREG_STATE_REGISTERED_ROAMING);
|
||||||
|
|
|
@ -145,6 +145,7 @@ const REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE = 104;
|
||||||
const REQUEST_ISIM_AUTHENTICATION = 105;
|
const REQUEST_ISIM_AUTHENTICATION = 105;
|
||||||
const REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU = 106;
|
const REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU = 106;
|
||||||
const REQUEST_STK_SEND_ENVELOPE_WITH_STATUS = 107;
|
const REQUEST_STK_SEND_ENVELOPE_WITH_STATUS = 107;
|
||||||
|
const REQUEST_DIAL_EMERGENCY_CALL = 10016;
|
||||||
|
|
||||||
// Akami/Maguro specific parcel types.
|
// Akami/Maguro specific parcel types.
|
||||||
const REQUEST_VOICE_RADIO_TECH = 105;
|
const REQUEST_VOICE_RADIO_TECH = 105;
|
||||||
|
@ -339,6 +340,10 @@ const NETWORK_CREG_STATE_SEARCHING = 2;
|
||||||
const NETWORK_CREG_STATE_DENIED = 3;
|
const NETWORK_CREG_STATE_DENIED = 3;
|
||||||
const NETWORK_CREG_STATE_UNKNOWN = 4;
|
const NETWORK_CREG_STATE_UNKNOWN = 4;
|
||||||
const NETWORK_CREG_STATE_REGISTERED_ROAMING = 5;
|
const NETWORK_CREG_STATE_REGISTERED_ROAMING = 5;
|
||||||
|
const NETWORK_CREG_STATE_NOT_SEARCHING_EMERGENCY_CALLS = 10;
|
||||||
|
const NETWORK_CREG_STATE_SEARCHING_EMERGENCY_CALLS = 12;
|
||||||
|
const NETWORK_CREG_STATE_DENIED_EMERGENCY_CALLS = 13;
|
||||||
|
const NETWORK_CREG_STATE_UNKNOWN_EMERGENCY_CALLS = 14;
|
||||||
|
|
||||||
const NETWORK_CREG_TECH_UNKNOWN = 0;
|
const NETWORK_CREG_TECH_UNKNOWN = 0;
|
||||||
const NETWORK_CREG_TECH_GPRS = 1;
|
const NETWORK_CREG_TECH_GPRS = 1;
|
||||||
|
|
|
@ -77,11 +77,15 @@ const PARCEL_SIZE_SIZE = UINT32_SIZE;
|
||||||
|
|
||||||
const PDU_HEX_OCTET_SIZE = 4;
|
const PDU_HEX_OCTET_SIZE = 4;
|
||||||
|
|
||||||
|
const DEFAULT_EMERGENCY_NUMBERS = ["112", "911"];
|
||||||
|
|
||||||
let RILQUIRKS_CALLSTATE_EXTRA_UINT32 = false;
|
let RILQUIRKS_CALLSTATE_EXTRA_UINT32 = false;
|
||||||
let RILQUIRKS_DATACALLSTATE_DOWN_IS_UP = false;
|
let RILQUIRKS_DATACALLSTATE_DOWN_IS_UP = false;
|
||||||
// This flag defaults to true since on RIL v6 and later, we get the
|
// This flag defaults to true since on RIL v6 and later, we get the
|
||||||
// version number via the UNSOLICITED_RIL_CONNECTED parcel.
|
// version number via the UNSOLICITED_RIL_CONNECTED parcel.
|
||||||
let RILQUIRKS_V5_LEGACY = true;
|
let RILQUIRKS_V5_LEGACY = true;
|
||||||
|
let RILQUIRKS_REQUEST_USE_DIAL_EMERGENCY_CALL = false;
|
||||||
|
let RILQUIRKS_MODEM_DEFAULTS_TO_EMERGENCY_MODE = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This object contains helpers buffering incoming data & deconstructing it
|
* This object contains helpers buffering incoming data & deconstructing it
|
||||||
|
@ -688,34 +692,46 @@ let RIL = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The Samsung Galaxy S2 I-9100 radio sends an extra Uint32 in the
|
|
||||||
// call state.
|
|
||||||
let model_id = libcutils.property_get("ril.model_id");
|
|
||||||
if (DEBUG) debug("Detected RIL model " + model_id);
|
|
||||||
if (model_id == "I9100") {
|
|
||||||
if (DEBUG) {
|
|
||||||
debug("Detected I9100, enabling " +
|
|
||||||
"RILQUIRKS_CALLSTATE_EXTRA_UINT32, " +
|
|
||||||
"RILQUIRKS_DATACALLSTATE_DOWN_IS_UP.");
|
|
||||||
}
|
|
||||||
RILQUIRKS_CALLSTATE_EXTRA_UINT32 = true;
|
|
||||||
RILQUIRKS_DATACALLSTATE_DOWN_IS_UP = true;
|
|
||||||
}
|
|
||||||
if (model_id == "I9023" || model_id == "I9020") {
|
|
||||||
if (DEBUG) {
|
|
||||||
debug("Detected I9020/I9023, enabling " +
|
|
||||||
"RILQUIRKS_DATACALLSTATE_DOWN_IS_UP");
|
|
||||||
}
|
|
||||||
RILQUIRKS_DATACALLSTATE_DOWN_IS_UP = true;
|
|
||||||
}
|
|
||||||
let ril_impl = libcutils.property_get("gsm.version.ril-impl");
|
let ril_impl = libcutils.property_get("gsm.version.ril-impl");
|
||||||
if (ril_impl == "Qualcomm RIL 1.0") {
|
if (DEBUG) debug("Detected RIL implementation " + ril_impl);
|
||||||
if (DEBUG) {
|
switch (ril_impl) {
|
||||||
debug("Detected Qualcomm RIL 1.0, " +
|
case "Samsung RIL(IPC) v2.0":
|
||||||
"disabling RILQUIRKS_V5_LEGACY to false");
|
// The Samsung Galaxy S2 I-9100 radio sends an extra Uint32 in the
|
||||||
}
|
// call state.
|
||||||
RILQUIRKS_V5_LEGACY = false;
|
let model_id = libcutils.property_get("ril.model_id");
|
||||||
|
if (DEBUG) debug("Detected RIL model " + model_id);
|
||||||
|
if (model_id == "I9100") {
|
||||||
|
if (DEBUG) {
|
||||||
|
debug("Detected I9100, enabling " +
|
||||||
|
"RILQUIRKS_DATACALLSTATE_DOWN_IS_UP, " +
|
||||||
|
"RILQUIRKS_REQUEST_USE_DIAL_EMERGENCY_CALL.");
|
||||||
|
}
|
||||||
|
RILQUIRKS_DATACALLSTATE_DOWN_IS_UP = true;
|
||||||
|
RILQUIRKS_REQUEST_USE_DIAL_EMERGENCY_CALL = true;
|
||||||
|
if (RILQUIRKS_V5_LEGACY) {
|
||||||
|
if (DEBUG) debug("...and RILQUIRKS_CALLSTATE_EXTRA_UINT32");
|
||||||
|
RILQUIRKS_CALLSTATE_EXTRA_UINT32 = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (model_id == "I9023" || model_id == "I9020") {
|
||||||
|
if (DEBUG) {
|
||||||
|
debug("Detected I9020/I9023, enabling " +
|
||||||
|
"RILQUIRKS_DATACALLSTATE_DOWN_IS_UP");
|
||||||
|
}
|
||||||
|
RILQUIRKS_DATACALLSTATE_DOWN_IS_UP = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "Qualcomm RIL 1.0":
|
||||||
|
if (DEBUG) {
|
||||||
|
debug("Detected Qualcomm RIL 1.0, " +
|
||||||
|
"disabling RILQUIRKS_V5_LEGACY and " +
|
||||||
|
"enabling RILQUIRKS_MODEM_DEFAULTS_TO_EMERGENCY_MODE.");
|
||||||
|
}
|
||||||
|
RILQUIRKS_V5_LEGACY = false;
|
||||||
|
RILQUIRKS_MODEM_DEFAULTS_TO_EMERGENCY_MODE = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.rilQuirksInitialized = true;
|
this.rilQuirksInitialized = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1132,7 +1148,26 @@ let RIL = {
|
||||||
* Integer doing something XXX TODO
|
* Integer doing something XXX TODO
|
||||||
*/
|
*/
|
||||||
dial: function dial(options) {
|
dial: function dial(options) {
|
||||||
let token = Buf.newParcel(REQUEST_DIAL);
|
let dial_request_type = REQUEST_DIAL;
|
||||||
|
if (this.voiceRegistrationState.emergencyCallsOnly) {
|
||||||
|
if (!this._isEmergencyNumber(options.number)) {
|
||||||
|
if (DEBUG) {
|
||||||
|
// TODO: Notify an error here so that the DOM will see an error event.
|
||||||
|
debug(options.number + " is not a valid emergency number.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (RILQUIRKS_REQUEST_USE_DIAL_EMERGENCY_CALL) {
|
||||||
|
dial_request_type = REQUEST_DIAL_EMERGENCY_CALL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this._isEmergencyNumber(options.number) &&
|
||||||
|
RILQUIRKS_REQUEST_USE_DIAL_EMERGENCY_CALL) {
|
||||||
|
dial_request_type = REQUEST_DIAL_EMERGENCY_CALL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let token = Buf.newParcel(dial_request_type);
|
||||||
Buf.writeString(options.number);
|
Buf.writeString(options.number);
|
||||||
Buf.writeUint32(options.clirMode || 0);
|
Buf.writeUint32(options.clirMode || 0);
|
||||||
Buf.writeUint32(options.uusInfo || 0);
|
Buf.writeUint32(options.uusInfo || 0);
|
||||||
|
@ -1429,6 +1464,29 @@ let RIL = {
|
||||||
Buf.simpleRequest(REQUEST_LAST_CALL_FAIL_CAUSE);
|
Buf.simpleRequest(REQUEST_LAST_CALL_FAIL_CAUSE);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check a given number against the list of emergency numbers provided by the RIL.
|
||||||
|
*
|
||||||
|
* @param number
|
||||||
|
* The number to look up.
|
||||||
|
*/
|
||||||
|
_isEmergencyNumber: function _isEmergencyNumber(number) {
|
||||||
|
// Check read-write ecclist property first.
|
||||||
|
let numbers = libcutils.property_get("ril.ecclist");
|
||||||
|
if (!numbers) {
|
||||||
|
// Then read-only ecclist property since others RIL only uses this.
|
||||||
|
numbers = libcutils.property_get("ro.ril.ecclist");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numbers) {
|
||||||
|
numbers = numbers.split(",");
|
||||||
|
} else {
|
||||||
|
// No ecclist system property, so use our own list.
|
||||||
|
numbers = DEFAULT_EMERGENCY_NUMBERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return numbers.indexOf(number) != -1;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process ICC status.
|
* Process ICC status.
|
||||||
|
@ -1613,12 +1671,23 @@ let RIL = {
|
||||||
},
|
},
|
||||||
|
|
||||||
_processVoiceRegistrationState: function _processVoiceRegistrationState(state) {
|
_processVoiceRegistrationState: function _processVoiceRegistrationState(state) {
|
||||||
|
this.initRILQuirks();
|
||||||
|
|
||||||
let rs = this.voiceRegistrationState;
|
let rs = this.voiceRegistrationState;
|
||||||
let stateChanged = false;
|
let stateChanged = false;
|
||||||
|
|
||||||
let regState = RIL.parseInt(state[0], NETWORK_CREG_STATE_UNKNOWN);
|
let regState = RIL.parseInt(state[0], NETWORK_CREG_STATE_UNKNOWN);
|
||||||
if (rs.regState != regState) {
|
if (rs.regState != regState) {
|
||||||
rs.regState = regState;
|
rs.regState = regState;
|
||||||
|
if (RILQUIRKS_MODEM_DEFAULTS_TO_EMERGENCY_MODE) {
|
||||||
|
rs.emergencyCallsOnly =
|
||||||
|
(regState != NETWORK_CREG_STATE_REGISTERED_HOME) &&
|
||||||
|
(regState != NETWORK_CREG_STATE_REGISTERED_ROAMING);
|
||||||
|
} else {
|
||||||
|
rs.emergencyCallsOnly =
|
||||||
|
(regState >= NETWORK_CREG_STATE_NOT_SEARCHING_EMERGENCY_CALLS) &&
|
||||||
|
(regState <= NETWORK_CREG_STATE_UNKNOWN_EMERGENCY_CALLS);
|
||||||
|
}
|
||||||
stateChanged = true;
|
stateChanged = true;
|
||||||
if (regState == NETWORK_CREG_STATE_REGISTERED_HOME ||
|
if (regState == NETWORK_CREG_STATE_REGISTERED_HOME ||
|
||||||
regState == NETWORK_CREG_STATE_REGISTERED_ROAMING) {
|
regState == NETWORK_CREG_STATE_REGISTERED_ROAMING) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче