Bug 843452 - Part 4-5: MobileConnectionGonkService for gonk backend. r=hsinyi,khuey

This commit is contained in:
Edgar Chen 2014-02-10 19:55:22 +08:00
parent b0f72f229d
commit d8bfd6768c
9 changed files with 1715 additions and 1906 deletions

View File

@ -441,6 +441,8 @@
@BINPATH@/components/RILContentHelper.js
@BINPATH@/components/TelephonyService.js
@BINPATH@/components/TelephonyService.manifest
@BINPATH@/components/MobileConnectionGonkService.js
@BINPATH@/components/MobileConnectionGonkService.manifest
#endif // MOZ_WIDGET_GONK && MOZ_B2G_RIL
#ifndef MOZ_WIDGET_GONK

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
component {05e20430-fe65-4984-8df9-a6a504b24a91} MobileConnectionGonkService.js
contract @mozilla.org/mobileconnection/mobileconnectiongonkservice;1 {05e20430-fe65-4984-8df9-a6a504b24a91}

View File

@ -44,6 +44,12 @@ IPDL_SOURCES += [
'ipc/PMobileConnectionTypes.ipdlh',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
EXTRA_COMPONENTS += [
'gonk/MobileConnectionGonkService.js',
'gonk/MobileConnectionGonkService.manifest',
]
FAIL_ON_WARNINGS = True
include('/ipc/chromium/chromium-config.mozbuild')

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2478,15 +2478,11 @@ this.CALL_FAIL_IMEI_NOT_ACCEPTED = 243;
this.CALL_FAIL_ERROR_UNSPECIFIED = 0xffff;
// Other Gecko-specific constants
this.GECKO_RADIOSTATE_UNAVAILABLE = null;
this.GECKO_RADIOSTATE_OFF = "off";
this.GECKO_RADIOSTATE_READY = "ready";
this.GECKO_DETAILED_RADIOSTATE_UNKNOWN = null;
this.GECKO_DETAILED_RADIOSTATE_ENABLING = "enabling";
this.GECKO_DETAILED_RADIOSTATE_ENABLED = "enabled";
this.GECKO_DETAILED_RADIOSTATE_DISABLING = "disabling";
this.GECKO_DETAILED_RADIOSTATE_DISABLED = "disabled";
this.GECKO_RADIOSTATE_UNKNOWN = null;
this.GECKO_RADIOSTATE_ENABLING = "enabling";
this.GECKO_RADIOSTATE_ENABLED = "enabled";
this.GECKO_RADIOSTATE_DISABLING = "disabling";
this.GECKO_RADIOSTATE_DISABLED = "disabled";
this.GECKO_CARDSTATE_UNINITIALIZED = "uninitialized";
this.GECKO_CARDSTATE_UNDETECTED = null;
@ -2723,14 +2719,14 @@ this.GECKO_RADIO_TECH = [
this.GECKO_VOICEMAIL_MESSAGE_COUNT_UNKNOWN = -1;
// Call forwarding action. Must be in sync with nsIMobileConnectionProvider interface
// Call forwarding action. Must be in sync with nsIMobileConnectionService interface
this.CALL_FORWARD_ACTION_DISABLE = 0;
this.CALL_FORWARD_ACTION_ENABLE = 1;
this.CALL_FORWARD_ACTION_QUERY_STATUS = 2;
this.CALL_FORWARD_ACTION_REGISTRATION = 3;
this.CALL_FORWARD_ACTION_ERASURE = 4;
// Call forwarding reason. Must be in sync with nsIMobileConnectionProvider interface
// Call forwarding reason. Must be in sync with nsIMobileConnectionService interface
this.CALL_FORWARD_REASON_UNCONDITIONAL = 0;
this.CALL_FORWARD_REASON_MOBILE_BUSY = 1;
this.CALL_FORWARD_REASON_NO_REPLY = 2;
@ -2738,7 +2734,7 @@ this.CALL_FORWARD_REASON_NOT_REACHABLE = 3;
this.CALL_FORWARD_REASON_ALL_CALL_FORWARDING = 4;
this.CALL_FORWARD_REASON_ALL_CONDITIONAL_CALL_FORWARDING = 5;
// Call barring program. Must be in sync with nsIMobileConnectionProvider interface
// Call barring program. Must be in sync with nsIMobileConnectionService interface
this.CALL_BARRING_PROGRAM_ALL_OUTGOING = 0;
this.CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL = 1;
this.CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXCEPT_HOME = 2;
@ -2752,7 +2748,7 @@ CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXC
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_ALL_INCOMING] = ICC_CB_FACILITY_BAIC;
CALL_BARRING_PROGRAM_TO_FACILITY[CALL_BARRING_PROGRAM_INCOMING_ROAMING] = ICC_CB_FACILITY_BAICr;
// CLIR constants. Must be in sync with nsIMobileConnectionProvider interface
// CLIR constants. Must be in sync with nsIMobileConnectionService interface
this.CLIR_DEFAULT = 0;
this.CLIR_INVOCATION = 1;
this.CLIR_SUPPRESSION = 2;

View File

@ -426,7 +426,7 @@ RilObject.prototype = {
/**
* One of the RADIO_STATE_* constants.
*/
this.radioState = GECKO_RADIOSTATE_UNAVAILABLE;
this.radioState = GECKO_RADIOSTATE_UNKNOWN;
/**
* True if we are on a CDMA phone.
@ -1649,7 +1649,7 @@ RilObject.prototype = {
this.sendChromeMessage(options);
}).bind(this, options);
let isRadioOff = (this.radioState === GECKO_RADIOSTATE_OFF);
let isRadioOff = (this.radioState === GECKO_RADIOSTATE_DISABLED);
if (options.isEmergency) {
if (isRadioOff) {
@ -2648,7 +2648,7 @@ RilObject.prototype = {
}
let _isRadioAvailable = (function() {
if (this.radioState !== GECKO_RADIOSTATE_READY) {
if (this.radioState !== GECKO_RADIOSTATE_ENABLED) {
_sendMMIError(GECKO_ERROR_RADIO_NOT_AVAILABLE);
return false;
}
@ -3488,7 +3488,7 @@ RilObject.prototype = {
// Note: setUiccSubscription works abnormally when RADIO is OFF,
// which causes SMS function broken in Flame.
// See bug 1008557 for detailed info.
this.radioState === GECKO_RADIOSTATE_READY) {
this.radioState === GECKO_RADIOSTATE_ENABLED) {
for (let i = 0; i < iccStatus.apps.length; i++) {
this.setUiccSubscription({appIndex: i, enabled: true});
}
@ -6808,11 +6808,11 @@ RilObject.prototype[UNSOLICITED_RESPONSE_RADIO_STATE_CHANGED] = function UNSOLIC
let radioState = this.context.Buf.readInt32();
let newState;
if (radioState == RADIO_STATE_UNAVAILABLE) {
newState = GECKO_RADIOSTATE_UNAVAILABLE;
newState = GECKO_RADIOSTATE_UNKNOWN;
} else if (radioState == RADIO_STATE_OFF) {
newState = GECKO_RADIOSTATE_OFF;
newState = GECKO_RADIOSTATE_DISABLED;
} else {
newState = GECKO_RADIOSTATE_READY;
newState = GECKO_RADIOSTATE_ENABLED;
}
if (DEBUG) {
@ -6847,9 +6847,9 @@ RilObject.prototype[UNSOLICITED_RESPONSE_RADIO_STATE_CHANGED] = function UNSOLIC
break;
}
if ((this.radioState == GECKO_RADIOSTATE_UNAVAILABLE ||
this.radioState == GECKO_RADIOSTATE_OFF) &&
newState == GECKO_RADIOSTATE_READY) {
if ((this.radioState == GECKO_RADIOSTATE_UNKNOWN ||
this.radioState == GECKO_RADIOSTATE_DISABLED) &&
newState == GECKO_RADIOSTATE_ENABLED) {
// The radio became available, let's get its info.
if (!this._waitingRadioTech) {
if (this._isCdma) {
@ -7094,7 +7094,11 @@ RilObject.prototype[UNSOLICITED_CDMA_CALL_WAITING] = function UNSOLICITED_CDMA_C
waitingCall: call});
};
RilObject.prototype[UNSOLICITED_CDMA_OTA_PROVISION_STATUS] = function UNSOLICITED_CDMA_OTA_PROVISION_STATUS() {
let status = this.context.Buf.readInt32List()[0];
let status =
CDMA_OTA_PROVISION_STATUS_TO_GECKO[this.context.Buf.readInt32List()[0]];
if (!status) {
return;
}
this.sendChromeMessage({rilMessageType: "otastatuschange",
status: status});
};
@ -14700,7 +14704,7 @@ ICCUtilsHelperObject.prototype = {
return null;
}
if (!iccInfoPriv.OPL) {
if (!this.isICCServiceAvailable("OPL")) {
// When OPL is not present:
// According to 3GPP TS 31.102 Sec. 4.2.58 and 3GPP TS 51.011 Sec. 10.3.41,
// If EF_OPL is not present, the first record in this EF is used for the

View File

@ -129,6 +129,9 @@ using mozilla::system::nsVolumeService;
#include "nsIMobileConnectionService.h"
#include "mozilla/dom/mobileconnection/MobileConnectionIPCService.h"
using mozilla::dom::mobileconnection::MobileConnectionIPCService;
#ifdef MOZ_WIDGET_GONK
#include "nsIMobileConnectionGonkService.h"
#endif
#endif
#include "AudioChannelAgent.h"
@ -945,6 +948,10 @@ nsIMobileConnectionServiceConstructor(nsISupports *aOuter, REFNSIID aIID,
if (XRE_GetProcessType() == GeckoProcessType_Content) {
service = MobileConnectionIPCService::GetSingleton();
} else {
#ifdef MOZ_WIDGET_GONK
service = do_CreateInstance(NS_MOBILECONNECTION_GONK_SERVICE_CONTRACTID);
#endif
}
if (!service) {