mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 06:11:37 +00:00
Bug 1063304 - 3.b/3: implementation. r=echen
This commit is contained in:
parent
0189fd0ee7
commit
ae941ea4bf
@ -78,8 +78,9 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(MobileConnection)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(MobileConnection,
|
||||
DOMEventTargetHelper)
|
||||
// Don't traverse mListener because it doesn't keep any reference to
|
||||
// MobileConnection but a raw pointer instead. Neither does mService because
|
||||
// it's an xpcom service and is only released at shutting down.
|
||||
// MobileConnection but a raw pointer instead. Neither does mMobileConnection
|
||||
// because it's an xpcom service owned object and is only released at shutting
|
||||
// down.
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mVoice)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mData)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
@ -102,25 +103,32 @@ NS_IMPL_RELEASE_INHERITED(MobileConnection, DOMEventTargetHelper)
|
||||
|
||||
MobileConnection::MobileConnection(nsPIDOMWindow* aWindow, uint32_t aClientId)
|
||||
: DOMEventTargetHelper(aWindow)
|
||||
, mClientId(aClientId)
|
||||
{
|
||||
SetIsDOMBinding();
|
||||
|
||||
mService = do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
|
||||
nsCOMPtr<nsIMobileConnectionService> service =
|
||||
do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
|
||||
|
||||
// Not being able to acquire the service isn't fatal since we check
|
||||
// for it explicitly below.
|
||||
if (!mService) {
|
||||
if (!service) {
|
||||
NS_WARNING("Could not acquire nsIMobileConnectionService!");
|
||||
return;
|
||||
}
|
||||
|
||||
nsresult rv = service->GetItemByServiceId(aClientId,
|
||||
getter_AddRefs(mMobileConnection));
|
||||
if (NS_FAILED(rv) || !mMobileConnection) {
|
||||
NS_WARNING("Could not acquire nsIMobileConnection!");
|
||||
return;
|
||||
}
|
||||
|
||||
mListener = new Listener(this);
|
||||
mVoice = new MobileConnectionInfo(GetOwner());
|
||||
mData = new MobileConnectionInfo(GetOwner());
|
||||
|
||||
if (CheckPermission("mobileconnection")) {
|
||||
DebugOnly<nsresult> rv = mService->RegisterListener(mClientId, mListener);
|
||||
DebugOnly<nsresult> rv = mMobileConnection->RegisterListener(mListener);
|
||||
NS_WARN_IF_FALSE(NS_SUCCEEDED(rv),
|
||||
"Failed registering mobile connection messages with service");
|
||||
UpdateVoice();
|
||||
@ -132,8 +140,8 @@ void
|
||||
MobileConnection::Shutdown()
|
||||
{
|
||||
if (mListener) {
|
||||
if (mService) {
|
||||
mService->UnregisterListener(mClientId, mListener);
|
||||
if (mMobileConnection) {
|
||||
mMobileConnection->UnregisterListener(mListener);
|
||||
}
|
||||
|
||||
mListener->Disconnect();
|
||||
@ -176,24 +184,24 @@ MobileConnection::CheckPermission(const char* aType) const
|
||||
void
|
||||
MobileConnection::UpdateVoice()
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMobileConnectionInfo> info;
|
||||
mService->GetVoiceConnectionInfo(mClientId, getter_AddRefs(info));
|
||||
mMobileConnection->GetVoice(getter_AddRefs(info));
|
||||
mVoice->Update(info);
|
||||
}
|
||||
|
||||
void
|
||||
MobileConnection::UpdateData()
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMobileConnectionInfo> info;
|
||||
mService->GetDataConnectionInfo(mClientId, getter_AddRefs(info));
|
||||
mMobileConnection->GetData(getter_AddRefs(info));
|
||||
mData->Update(info);
|
||||
}
|
||||
|
||||
@ -204,11 +212,11 @@ MobileConnection::GetLastKnownNetwork(nsString& aRetVal) const
|
||||
{
|
||||
aRetVal.SetIsVoid(true);
|
||||
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return;
|
||||
}
|
||||
|
||||
mService->GetLastKnownNetwork(mClientId, aRetVal);
|
||||
mMobileConnection->GetLastKnownNetwork(aRetVal);
|
||||
}
|
||||
|
||||
void
|
||||
@ -216,11 +224,11 @@ MobileConnection::GetLastKnownHomeNetwork(nsString& aRetVal) const
|
||||
{
|
||||
aRetVal.SetIsVoid(true);
|
||||
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return;
|
||||
}
|
||||
|
||||
mService->GetLastKnownHomeNetwork(mClientId, aRetVal);
|
||||
mMobileConnection->GetLastKnownHomeNetwork(aRetVal);
|
||||
}
|
||||
|
||||
// All fields below require the "mobileconnection" permission.
|
||||
@ -242,11 +250,11 @@ MobileConnection::GetIccId(nsString& aRetVal) const
|
||||
{
|
||||
aRetVal.SetIsVoid(true);
|
||||
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return;
|
||||
}
|
||||
|
||||
mService->GetIccId(mClientId, aRetVal);
|
||||
mMobileConnection->GetIccId(aRetVal);
|
||||
}
|
||||
|
||||
Nullable<MobileNetworkSelectionMode>
|
||||
@ -255,12 +263,12 @@ MobileConnection::GetNetworkSelectionMode() const
|
||||
Nullable<MobileNetworkSelectionMode> retVal =
|
||||
Nullable<MobileNetworkSelectionMode>();
|
||||
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
nsAutoString mode;
|
||||
mService->GetNetworkSelectionMode(mClientId, mode);
|
||||
mMobileConnection->GetNetworkSelectionMode(mode);
|
||||
CONVERT_STRING_TO_NULLABLE_ENUM(mode, MobileNetworkSelectionMode, retVal);
|
||||
|
||||
return retVal;
|
||||
@ -271,12 +279,12 @@ MobileConnection::GetRadioState() const
|
||||
{
|
||||
Nullable<MobileRadioState> retVal = Nullable<MobileRadioState>();
|
||||
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
nsAutoString state;
|
||||
mService->GetRadioState(mClientId, state);
|
||||
mMobileConnection->GetRadioState(state);
|
||||
CONVERT_STRING_TO_NULLABLE_ENUM(state, MobileRadioState, retVal);
|
||||
|
||||
return retVal;
|
||||
@ -285,45 +293,33 @@ MobileConnection::GetRadioState() const
|
||||
void
|
||||
MobileConnection::GetSupportedNetworkTypes(nsTArray<MobileNetworkType>& aTypes) const
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIVariant> variant;
|
||||
mService->GetSupportedNetworkTypes(mClientId,
|
||||
getter_AddRefs(variant));
|
||||
char16_t** types = nullptr;
|
||||
uint32_t length = 0;
|
||||
|
||||
uint16_t type;
|
||||
nsIID iid;
|
||||
uint32_t count;
|
||||
void* data;
|
||||
nsresult rv = mMobileConnection->GetSupportedNetworkTypes(&types, &length);
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
|
||||
// Convert the nsIVariant to an array. We own the resulting buffer and its
|
||||
// elements.
|
||||
if (NS_FAILED(variant->GetAsArray(&type, &iid, &count, &data))) {
|
||||
return;
|
||||
}
|
||||
for (uint32_t i = 0; i < length; ++i) {
|
||||
nsDependentString rawType(types[i]);
|
||||
Nullable<MobileNetworkType> type = Nullable<MobileNetworkType>();
|
||||
CONVERT_STRING_TO_NULLABLE_ENUM(rawType, MobileNetworkType, type);
|
||||
|
||||
// We expect the element type is wstring.
|
||||
if (type == nsIDataType::VTYPE_WCHAR_STR) {
|
||||
char16_t** rawArray = reinterpret_cast<char16_t**>(data);
|
||||
for (uint32_t i = 0; i < count; ++i) {
|
||||
nsDependentString rawType(rawArray[i]);
|
||||
Nullable<MobileNetworkType> type = Nullable<MobileNetworkType>();
|
||||
CONVERT_STRING_TO_NULLABLE_ENUM(rawType, MobileNetworkType, type);
|
||||
|
||||
if (!type.IsNull()) {
|
||||
aTypes.AppendElement(type.Value());
|
||||
}
|
||||
if (!type.IsNull()) {
|
||||
aTypes.AppendElement(type.Value());
|
||||
}
|
||||
}
|
||||
NS_Free(data);
|
||||
|
||||
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(length, types);
|
||||
}
|
||||
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetNetworks(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -332,7 +328,7 @@ MobileConnection::GetNetworks(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetNetworks(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetNetworks(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -344,7 +340,7 @@ MobileConnection::GetNetworks(ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::SelectNetwork(MobileNetworkInfo& aNetwork, ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -353,7 +349,7 @@ MobileConnection::SelectNetwork(MobileNetworkInfo& aNetwork, ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SelectNetwork(mClientId, &aNetwork, requestCallback);
|
||||
nsresult rv = mMobileConnection->SelectNetwork(&aNetwork, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -365,7 +361,7 @@ MobileConnection::SelectNetwork(MobileNetworkInfo& aNetwork, ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::SelectNetworkAutomatically(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -374,8 +370,8 @@ MobileConnection::SelectNetworkAutomatically(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SelectNetworkAutomatically(mClientId,
|
||||
requestCallback);
|
||||
nsresult rv =
|
||||
mMobileConnection->SelectNetworkAutomatically(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -388,7 +384,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetPreferredNetworkType(MobilePreferredNetworkType& aType,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -400,8 +396,8 @@ MobileConnection::SetPreferredNetworkType(MobilePreferredNetworkType& aType,
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetPreferredNetworkType(mClientId, type,
|
||||
requestCallback);
|
||||
nsresult rv =
|
||||
mMobileConnection->SetPreferredNetworkType(type, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -413,7 +409,7 @@ MobileConnection::SetPreferredNetworkType(MobilePreferredNetworkType& aType,
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetPreferredNetworkType(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -422,7 +418,7 @@ MobileConnection::GetPreferredNetworkType(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetPreferredNetworkType(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetPreferredNetworkType(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -435,7 +431,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetRoamingPreference(MobileRoamingMode& aMode,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -447,7 +443,7 @@ MobileConnection::SetRoamingPreference(MobileRoamingMode& aMode,
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetRoamingPreference(mClientId, mode, requestCallback);
|
||||
nsresult rv = mMobileConnection->SetRoamingPreference(mode, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -459,7 +455,7 @@ MobileConnection::SetRoamingPreference(MobileRoamingMode& aMode,
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetRoamingPreference(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -468,7 +464,7 @@ MobileConnection::GetRoamingPreference(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetRoamingPreference(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetRoamingPreference(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -480,7 +476,7 @@ MobileConnection::GetRoamingPreference(ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetVoicePrivacyMode(bool aEnabled, ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -489,8 +485,8 @@ MobileConnection::SetVoicePrivacyMode(bool aEnabled, ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetVoicePrivacyMode(mClientId, aEnabled,
|
||||
requestCallback);
|
||||
nsresult rv =
|
||||
mMobileConnection->SetVoicePrivacyMode(aEnabled, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -502,7 +498,7 @@ MobileConnection::SetVoicePrivacyMode(bool aEnabled, ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetVoicePrivacyMode(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -511,7 +507,7 @@ MobileConnection::GetVoicePrivacyMode(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetVoicePrivacyMode(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetVoicePrivacyMode(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -523,7 +519,7 @@ MobileConnection::GetVoicePrivacyMode(ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::SendMMI(const nsAString& aMMIString, ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -532,7 +528,7 @@ MobileConnection::SendMMI(const nsAString& aMMIString, ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SendMMI(mClientId, aMMIString, requestCallback);
|
||||
nsresult rv = mMobileConnection->SendMMI(aMMIString, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -544,7 +540,7 @@ MobileConnection::SendMMI(const nsAString& aMMIString, ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::CancelMMI(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -553,7 +549,7 @@ MobileConnection::CancelMMI(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->CancelMMI(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->CancelMMI(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -565,7 +561,7 @@ MobileConnection::CancelMMI(ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetCallForwardingOption(uint16_t aReason, ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -574,7 +570,7 @@ MobileConnection::GetCallForwardingOption(uint16_t aReason, ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetCallForwarding(mClientId, aReason, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetCallForwarding(aReason, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -587,7 +583,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetCallForwardingOption(const MozCallForwardingOptions& aOptions,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -609,7 +605,7 @@ MobileConnection::SetCallForwardingOption(const MozCallForwardingOptions& aOptio
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetCallForwarding(mClientId, options, requestCallback);
|
||||
nsresult rv = mMobileConnection->SetCallForwarding(options, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -622,7 +618,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetCallBarringOption(const MozCallBarringOptions& aOptions,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -644,7 +640,7 @@ MobileConnection::GetCallBarringOption(const MozCallBarringOptions& aOptions,
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetCallBarring(mClientId, options, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetCallBarring(options, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -657,7 +653,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetCallBarringOption(const MozCallBarringOptions& aOptions,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -679,7 +675,7 @@ MobileConnection::SetCallBarringOption(const MozCallBarringOptions& aOptions,
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetCallBarring(mClientId, options, requestCallback);
|
||||
nsresult rv = mMobileConnection->SetCallBarring(options, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -692,7 +688,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::ChangeCallBarringPassword(const MozCallBarringOptions& aOptions,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -714,8 +710,8 @@ MobileConnection::ChangeCallBarringPassword(const MozCallBarringOptions& aOption
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->ChangeCallBarringPassword(mClientId, options,
|
||||
requestCallback);
|
||||
nsresult rv =
|
||||
mMobileConnection->ChangeCallBarringPassword(options, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -727,7 +723,7 @@ MobileConnection::ChangeCallBarringPassword(const MozCallBarringOptions& aOption
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetCallWaitingOption(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -736,7 +732,7 @@ MobileConnection::GetCallWaitingOption(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetCallWaiting(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->GetCallWaiting(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -748,7 +744,7 @@ MobileConnection::GetCallWaitingOption(ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetCallWaitingOption(bool aEnabled, ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -757,7 +753,7 @@ MobileConnection::SetCallWaitingOption(bool aEnabled, ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetCallWaiting(mClientId, aEnabled, requestCallback);
|
||||
nsresult rv = mMobileConnection->SetCallWaiting(aEnabled, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -769,7 +765,7 @@ MobileConnection::SetCallWaitingOption(bool aEnabled, ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::GetCallingLineIdRestriction(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -778,8 +774,8 @@ MobileConnection::GetCallingLineIdRestriction(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->GetCallingLineIdRestriction(mClientId,
|
||||
requestCallback);
|
||||
nsresult rv =
|
||||
mMobileConnection->GetCallingLineIdRestriction(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -792,7 +788,7 @@ already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetCallingLineIdRestriction(uint16_t aMode,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -801,8 +797,8 @@ MobileConnection::SetCallingLineIdRestriction(uint16_t aMode,
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetCallingLineIdRestriction(mClientId, aMode,
|
||||
requestCallback);
|
||||
nsresult rv =
|
||||
mMobileConnection->SetCallingLineIdRestriction(aMode, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -814,7 +810,7 @@ MobileConnection::SetCallingLineIdRestriction(uint16_t aMode,
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::ExitEmergencyCbMode(ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -823,7 +819,7 @@ MobileConnection::ExitEmergencyCbMode(ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->ExitEmergencyCbMode(mClientId, requestCallback);
|
||||
nsresult rv = mMobileConnection->ExitEmergencyCbMode(requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
@ -835,7 +831,7 @@ MobileConnection::ExitEmergencyCbMode(ErrorResult& aRv)
|
||||
already_AddRefed<DOMRequest>
|
||||
MobileConnection::SetRadioEnabled(bool aEnabled, ErrorResult& aRv)
|
||||
{
|
||||
if (!mService) {
|
||||
if (!mMobileConnection) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
@ -844,7 +840,7 @@ MobileConnection::SetRadioEnabled(bool aEnabled, ErrorResult& aRv)
|
||||
nsRefPtr<MobileConnectionCallback> requestCallback =
|
||||
new MobileConnectionCallback(GetOwner(), request);
|
||||
|
||||
nsresult rv = mService->SetRadioEnabled(mClientId, aEnabled, requestCallback);
|
||||
nsresult rv = mMobileConnection->SetRadioEnabled(aEnabled, requestCallback);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return nullptr;
|
||||
|
@ -163,8 +163,7 @@ private:
|
||||
~MobileConnection();
|
||||
|
||||
private:
|
||||
uint32_t mClientId;
|
||||
nsCOMPtr<nsIMobileConnectionService> mService;
|
||||
nsCOMPtr<nsIMobileConnection> mMobileConnection;
|
||||
nsRefPtr<Listener> mListener;
|
||||
nsRefPtr<MobileConnectionInfo> mVoice;
|
||||
nsRefPtr<MobileConnectionInfo> mData;
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "mozilla/dom/MobileConnectionArray.h"
|
||||
#include "mozilla/dom/MozMobileConnectionArrayBinding.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
|
||||
using namespace mozilla::dom;
|
||||
|
||||
@ -23,14 +24,9 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MobileConnectionArray)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
MobileConnectionArray::MobileConnectionArray(nsPIDOMWindow* aWindow)
|
||||
: mInitialized(false)
|
||||
: mLengthInitialized(false)
|
||||
, mWindow(aWindow)
|
||||
{
|
||||
uint32_t numRil = mozilla::Preferences::GetUint("ril.numRadioInterfaces", 1);
|
||||
MOZ_ASSERT(numRil > 0);
|
||||
|
||||
mMobileConnections.SetLength(numRil);
|
||||
|
||||
SetIsDOMBinding();
|
||||
}
|
||||
|
||||
@ -38,17 +34,6 @@ MobileConnectionArray::~MobileConnectionArray()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
MobileConnectionArray::Init()
|
||||
{
|
||||
mInitialized = true;
|
||||
|
||||
for (uint32_t id = 0; id < mMobileConnections.Length(); id++) {
|
||||
nsRefPtr<MobileConnection> mobileConnection = new MobileConnection(mWindow, id);
|
||||
mMobileConnections[id] = mobileConnection;
|
||||
}
|
||||
}
|
||||
|
||||
nsPIDOMWindow*
|
||||
MobileConnectionArray::GetParentObject() const
|
||||
{
|
||||
@ -70,20 +55,37 @@ MobileConnectionArray::Item(uint32_t aIndex)
|
||||
}
|
||||
|
||||
uint32_t
|
||||
MobileConnectionArray::Length() const
|
||||
MobileConnectionArray::Length()
|
||||
{
|
||||
if (!mLengthInitialized) {
|
||||
mLengthInitialized = true;
|
||||
|
||||
nsCOMPtr<nsIMobileConnectionService> service =
|
||||
do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
|
||||
NS_ENSURE_TRUE(service, 0);
|
||||
|
||||
uint32_t length = 0;
|
||||
nsresult rv = service->GetNumItems(&length);
|
||||
NS_ENSURE_SUCCESS(rv, 0);
|
||||
|
||||
mMobileConnections.SetLength(length);
|
||||
}
|
||||
|
||||
return mMobileConnections.Length();
|
||||
}
|
||||
|
||||
MobileConnection*
|
||||
MobileConnectionArray::IndexedGetter(uint32_t aIndex, bool& aFound)
|
||||
{
|
||||
if (!mInitialized) {
|
||||
Init();
|
||||
|
||||
aFound = aIndex < Length();
|
||||
if (!aFound) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
aFound = false;
|
||||
aFound = aIndex < mMobileConnections.Length();
|
||||
if (!mMobileConnections[aIndex]) {
|
||||
mMobileConnections[aIndex] = new MobileConnection(mWindow, aIndex);
|
||||
}
|
||||
|
||||
return aFound ? mMobileConnections[aIndex] : nullptr;
|
||||
return mMobileConnections[aIndex];
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
Item(uint32_t aIndex);
|
||||
|
||||
uint32_t
|
||||
Length() const;
|
||||
Length();
|
||||
|
||||
MobileConnection*
|
||||
IndexedGetter(uint32_t aIndex, bool& aFound);
|
||||
@ -42,10 +42,7 @@ public:
|
||||
private:
|
||||
~MobileConnectionArray();
|
||||
|
||||
void
|
||||
Init();
|
||||
|
||||
bool mInitialized;
|
||||
bool mLengthInitialized;
|
||||
|
||||
nsCOMPtr<nsPIDOMWindow> mWindow;
|
||||
nsTArray<nsRefPtr<MobileConnection>> mMobileConnections;
|
||||
|
@ -11,15 +11,23 @@
|
||||
using namespace mozilla::dom;
|
||||
using namespace mozilla::dom::mobileconnection;
|
||||
|
||||
NS_IMPL_ISUPPORTS(MobileConnectionChild, nsIMobileConnection)
|
||||
|
||||
MobileConnectionChild::MobileConnectionChild(uint32_t aServiceId)
|
||||
: mServiceId(aServiceId)
|
||||
, mLive(true)
|
||||
{
|
||||
MOZ_COUNT_CTOR(MobileConnectionChild);
|
||||
}
|
||||
|
||||
void
|
||||
MobileConnectionChild::Init()
|
||||
{
|
||||
nsIMobileConnectionInfo* rawVoice;
|
||||
nsIMobileConnectionInfo* rawData;
|
||||
nsTArray<nsString> types;
|
||||
|
||||
SendInit(&rawVoice, &rawData, &mLastNetwork, &mLastHomeNetwork, &mIccId,
|
||||
&mNetworkSelectionMode, &mRadioState, &types);
|
||||
&mNetworkSelectionMode, &mRadioState, &mSupportedNetworkTypes);
|
||||
|
||||
// Use dont_AddRef here because this instances is already AddRef-ed in
|
||||
// MobileConnectionIPCSerializer.h
|
||||
@ -32,35 +40,6 @@ MobileConnectionChild::Init()
|
||||
nsCOMPtr<nsIMobileConnectionInfo> data = dont_AddRef(rawData);
|
||||
mData = new MobileConnectionInfo(nullptr);
|
||||
mData->Update(data);
|
||||
|
||||
|
||||
// Initial SupportedNetworkTypes
|
||||
nsresult rv;
|
||||
mSupportedNetworkTypes = do_CreateInstance(NS_VARIANT_CONTRACTID, &rv);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t arrayLen = types.Length();
|
||||
if (arrayLen == 0) {
|
||||
mSupportedNetworkTypes->SetAsEmptyArray();
|
||||
} else {
|
||||
// Note: The resulting nsIVariant dupes both the array and its elements.
|
||||
const char16_t** array = reinterpret_cast<const char16_t**>
|
||||
(NS_Alloc(arrayLen * sizeof(const char16_t***)));
|
||||
if (array) {
|
||||
for (uint32_t i = 0; i < arrayLen; ++i) {
|
||||
array[i] = types[i].get();
|
||||
}
|
||||
|
||||
mSupportedNetworkTypes->SetAsArray(nsIDataType::VTYPE_WCHAR_STR,
|
||||
nullptr,
|
||||
arrayLen,
|
||||
reinterpret_cast<void*>(array));
|
||||
NS_Free(array);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -74,79 +53,309 @@ MobileConnectionChild::Shutdown()
|
||||
mListeners.Clear();
|
||||
mVoice = nullptr;
|
||||
mData = nullptr;
|
||||
mSupportedNetworkTypes = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
// nsIMobileConnection
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetServiceId(uint32_t* aServiceId)
|
||||
{
|
||||
*aServiceId = mServiceId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::RegisterListener(nsIMobileConnectionListener* aListener)
|
||||
{
|
||||
if (!mListeners.Contains(aListener)) {
|
||||
mListeners.AppendObject(aListener);
|
||||
}
|
||||
NS_ENSURE_TRUE(!mListeners.Contains(aListener), NS_ERROR_UNEXPECTED);
|
||||
|
||||
mListeners.AppendObject(aListener);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::UnregisterListener(nsIMobileConnectionListener* aListener)
|
||||
{
|
||||
NS_ENSURE_TRUE(mListeners.Contains(aListener), NS_ERROR_UNEXPECTED);
|
||||
|
||||
mListeners.RemoveObject(aListener);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MobileConnectionInfo*
|
||||
MobileConnectionChild::GetVoiceInfo()
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetVoice(nsIMobileConnectionInfo** aVoice)
|
||||
{
|
||||
return mVoice;
|
||||
nsRefPtr<nsIMobileConnectionInfo> voice(mVoice);
|
||||
voice.forget(aVoice);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MobileConnectionInfo*
|
||||
MobileConnectionChild::GetDataInfo()
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetData(nsIMobileConnectionInfo** aData)
|
||||
{
|
||||
return mData;
|
||||
nsRefPtr<nsIMobileConnectionInfo> data(mData);
|
||||
data.forget(aData);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetIccId(nsAString& aIccId)
|
||||
{
|
||||
aIccId = mIccId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetRadioState(nsAString& aRadioState)
|
||||
{
|
||||
aRadioState = mRadioState;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIVariant*
|
||||
MobileConnectionChild::GetSupportedNetworkTypes()
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetSupportedNetworkTypes(char16_t*** aTypes,
|
||||
uint32_t* aLength)
|
||||
{
|
||||
return mSupportedNetworkTypes;
|
||||
NS_ENSURE_ARG(aTypes);
|
||||
NS_ENSURE_ARG(aLength);
|
||||
|
||||
*aLength = mSupportedNetworkTypes.Length();
|
||||
*aTypes =
|
||||
static_cast<char16_t**>(nsMemory::Alloc((*aLength) * sizeof(char16_t*)));
|
||||
NS_ENSURE_TRUE(*aTypes, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
for (uint32_t i = 0; i < *aLength; i++) {
|
||||
(*aTypes)[i] = ToNewUnicode(mSupportedNetworkTypes[i]);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
MobileConnectionChild::GetLastNetwork(nsAString& aNetwork)
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetLastKnownNetwork(nsAString& aNetwork)
|
||||
{
|
||||
aNetwork = mLastNetwork;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
MobileConnectionChild::GetLastHomeNetwork(nsAString& aNetwork)
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetLastKnownHomeNetwork(nsAString& aNetwork)
|
||||
{
|
||||
aNetwork = mLastHomeNetwork;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetNetworkSelectionMode(nsAString& aMode)
|
||||
{
|
||||
aMode = mNetworkSelectionMode;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetNetworks(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetNetworksRequest(), aCallback) ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SelectNetwork(nsIMobileNetworkInfo* aNetwork,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
nsCOMPtr<nsIMobileNetworkInfo> network = aNetwork;
|
||||
// We release the ref after serializing process is finished in
|
||||
// MobileConnectionIPCSerializer.
|
||||
return SendRequest(SelectNetworkRequest(network.forget().take()), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SelectNetworkAutomatically(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SelectNetworkAutoRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetPreferredNetworkType(const nsAString& aType,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SetPreferredNetworkTypeRequest(nsAutoString(aType)),
|
||||
aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetPreferredNetworkType(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetPreferredNetworkTypeRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetRoamingPreference(const nsAString& aMode,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SetRoamingPreferenceRequest(nsAutoString(aMode)),
|
||||
aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetRoamingPreference(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetRoamingPreferenceRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetVoicePrivacyMode(bool aEnabled,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SetVoicePrivacyModeRequest(aEnabled), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetVoicePrivacyMode(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetVoicePrivacyModeRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SendMMI(const nsAString& aMmi,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SendMmiRequest(nsAutoString(aMmi)), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::CancelMMI(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(CancelMmiRequest(), aCallback) ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetCallForwarding(JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallForwardingOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(SetCallForwardingRequest(options), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetCallForwarding(uint16_t aReason,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetCallForwardingRequest(aReason), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetCallBarring(JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallBarringOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(SetCallBarringRequest(options), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetCallBarring(JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallBarringOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(GetCallBarringRequest(options), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::ChangeCallBarringPassword(JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallBarringOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(ChangeCallBarringPasswordRequest(options), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetCallWaiting(bool aEnabled,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SetCallWaitingRequest(aEnabled), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetCallWaiting(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetCallWaitingRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetCallingLineIdRestriction(uint16_t aMode,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SetCallingLineIdRestrictionRequest(aMode), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::GetCallingLineIdRestriction(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(GetCallingLineIdRestrictionRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::ExitEmergencyCbMode(nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(ExitEmergencyCbModeRequest(), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionChild::SetRadioEnabled(bool aEnabled,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
return SendRequest(SetRadioEnabledRequest(aEnabled), aCallback)
|
||||
? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionChild::SendRequest(MobileConnectionRequest aRequest,
|
||||
nsIMobileConnectionCallback* aRequestCallback)
|
||||
MobileConnectionChild::SendRequest(const MobileConnectionRequest& aRequest,
|
||||
nsIMobileConnectionCallback* aCallback)
|
||||
{
|
||||
NS_ENSURE_TRUE(mLive, false);
|
||||
|
||||
// Deallocated in MobileConnectionChild::DeallocPMobileConnectionRequestChild().
|
||||
MobileConnectionRequestChild* actor = new MobileConnectionRequestChild(aRequestCallback);
|
||||
MobileConnectionRequestChild* actor =
|
||||
new MobileConnectionRequestChild(aCallback);
|
||||
SendPMobileConnectionRequestConstructor(actor, aRequest);
|
||||
|
||||
return true;
|
||||
|
@ -25,16 +25,14 @@ namespace mobileconnection {
|
||||
* shutdown. For multi-sim device, more than one instance will
|
||||
* be created and each instance represents a sim slot.
|
||||
*/
|
||||
class MobileConnectionChild : public PMobileConnectionChild
|
||||
class MobileConnectionChild MOZ_FINAL : public PMobileConnectionChild
|
||||
, public nsIMobileConnection
|
||||
{
|
||||
NS_INLINE_DECL_REFCOUNTING(MobileConnectionChild)
|
||||
|
||||
public:
|
||||
MobileConnectionChild()
|
||||
: mLive(true)
|
||||
{
|
||||
MOZ_COUNT_CTOR(MobileConnectionChild);
|
||||
}
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIMOBILECONNECTION
|
||||
|
||||
MobileConnectionChild(uint32_t aServiceId);
|
||||
|
||||
void
|
||||
Init();
|
||||
@ -42,48 +40,20 @@ public:
|
||||
void
|
||||
Shutdown();
|
||||
|
||||
void
|
||||
RegisterListener(nsIMobileConnectionListener* aListener);
|
||||
private:
|
||||
MobileConnectionChild() MOZ_DELETE;
|
||||
|
||||
void
|
||||
UnregisterListener(nsIMobileConnectionListener* aListener);
|
||||
|
||||
MobileConnectionInfo*
|
||||
GetVoiceInfo();
|
||||
|
||||
MobileConnectionInfo*
|
||||
GetDataInfo();
|
||||
|
||||
void
|
||||
GetIccId(nsAString& aIccId);
|
||||
|
||||
void
|
||||
GetRadioState(nsAString& aRadioState);
|
||||
|
||||
nsIVariant*
|
||||
GetSupportedNetworkTypes();
|
||||
|
||||
void
|
||||
GetLastNetwork(nsAString& aNetwork);
|
||||
|
||||
void
|
||||
GetLastHomeNetwork(nsAString& aNetwork);
|
||||
|
||||
void
|
||||
GetNetworkSelectionMode(nsAString& aMode);
|
||||
|
||||
bool
|
||||
SendRequest(MobileConnectionRequest aRequest,
|
||||
nsIMobileConnectionCallback* aRequestCallback);
|
||||
|
||||
protected:
|
||||
virtual
|
||||
// MOZ_FINAL suppresses -Werror,-Wdelete-non-virtual-dtor
|
||||
~MobileConnectionChild()
|
||||
{
|
||||
MOZ_COUNT_DTOR(MobileConnectionChild);
|
||||
Shutdown();
|
||||
}
|
||||
|
||||
protected:
|
||||
bool
|
||||
SendRequest(const MobileConnectionRequest& aRequest,
|
||||
nsIMobileConnectionCallback* aCallback);
|
||||
|
||||
virtual void
|
||||
ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE;
|
||||
|
||||
@ -137,9 +107,9 @@ protected:
|
||||
RecvNotifyNetworkSelectionModeChanged(const nsString& aMode) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
uint32_t mServiceId;
|
||||
bool mLive;
|
||||
nsCOMArray<nsIMobileConnectionListener> mListeners;
|
||||
nsCOMPtr<nsIWritableVariant> mSupportedNetworkTypes;
|
||||
nsRefPtr<MobileConnectionInfo> mVoice;
|
||||
nsRefPtr<MobileConnectionInfo> mData;
|
||||
nsString mIccId;
|
||||
@ -147,6 +117,7 @@ private:
|
||||
nsString mLastNetwork;
|
||||
nsString mLastHomeNetwork;
|
||||
nsString mNetworkSelectionMode;
|
||||
nsTArray<nsString> mSupportedNetworkTypes;
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -32,363 +32,48 @@ MobileConnectionIPCService::GetSingleton()
|
||||
MobileConnectionIPCService::MobileConnectionIPCService()
|
||||
{
|
||||
int32_t numRil = Preferences::GetInt("ril.numRadioInterfaces", 1);
|
||||
for (int32_t i = 0; i < numRil; i++) {
|
||||
// Deallocated in ContentChild::DeallocPMobileConnectionChild().
|
||||
nsRefPtr<MobileConnectionChild> client = new MobileConnectionChild();
|
||||
NS_ASSERTION(client, "This shouldn't fail!");
|
||||
|
||||
ContentChild::GetSingleton()->SendPMobileConnectionConstructor(client, i);
|
||||
client->Init();
|
||||
|
||||
mClients.AppendElement(client);
|
||||
}
|
||||
mItems.SetLength(numRil);
|
||||
}
|
||||
|
||||
MobileConnectionIPCService::~MobileConnectionIPCService()
|
||||
{
|
||||
uint32_t count = mClients.Length();
|
||||
uint32_t count = mItems.Length();
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
mClients[i]->Shutdown();
|
||||
if (mItems[i]) {
|
||||
mItems[i]->Shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
mClients.Clear();
|
||||
}
|
||||
|
||||
nsresult
|
||||
MobileConnectionIPCService::SendRequest(uint32_t aClientId,
|
||||
MobileConnectionRequest aRequest,
|
||||
nsIMobileConnectionCallback* aRequestCallback)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->SendRequest(aRequest, aRequestCallback);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// nsIMobileConnectionService
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::RegisterListener(uint32_t aClientId,
|
||||
nsIMobileConnectionListener* aListener)
|
||||
MobileConnectionIPCService::GetNumItems(uint32_t* aNumItems)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->RegisterListener(aListener);
|
||||
*aNumItems = mItems.Length();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::UnregisterListener(uint32_t aClientId,
|
||||
nsIMobileConnectionListener* aListener)
|
||||
MobileConnectionIPCService::GetItemByServiceId(uint32_t aServiceId,
|
||||
nsIMobileConnection** aItem)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
NS_ENSURE_TRUE(aServiceId < mItems.Length(), NS_ERROR_INVALID_ARG);
|
||||
|
||||
if (!mItems[aServiceId]) {
|
||||
nsRefPtr<MobileConnectionChild> child = new MobileConnectionChild(aServiceId);
|
||||
|
||||
// |SendPMobileConnectionConstructor| adds another reference to the child
|
||||
// actor and removes in |DeallocPMobileConnectionChild|.
|
||||
ContentChild::GetSingleton()->SendPMobileConnectionConstructor(child,
|
||||
aServiceId);
|
||||
child->Init();
|
||||
|
||||
mItems[aServiceId] = child;
|
||||
}
|
||||
|
||||
mClients[aClientId]->UnregisterListener(aListener);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetLastKnownNetwork(uint32_t aClientId,
|
||||
nsAString& aLastNetwork)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->GetLastNetwork(aLastNetwork);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetLastKnownHomeNetwork(uint32_t aClientId,
|
||||
nsAString& aLastNetwork)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->GetLastHomeNetwork(aLastNetwork);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetVoiceConnectionInfo(uint32_t aClientId,
|
||||
nsIMobileConnectionInfo** aInfo)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMobileConnectionInfo> info = mClients[aClientId]->GetVoiceInfo();
|
||||
info.forget(aInfo);
|
||||
nsRefPtr<nsIMobileConnection> item(mItems[aServiceId]);
|
||||
item.forget(aItem);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetDataConnectionInfo(uint32_t aClientId,
|
||||
nsIMobileConnectionInfo** aInfo)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMobileConnectionInfo> info = mClients[aClientId]->GetDataInfo();
|
||||
info.forget(aInfo);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetIccId(uint32_t aClientId, nsAString& aIccId)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->GetIccId(aIccId);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetNetworkSelectionMode(uint32_t aClientId,
|
||||
nsAString& aNetworkSelectionMode)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->GetNetworkSelectionMode(aNetworkSelectionMode);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetRadioState(uint32_t aClientId,
|
||||
nsAString& aRadioState)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
mClients[aClientId]->GetRadioState(aRadioState);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetSupportedNetworkTypes(uint32_t aClientId,
|
||||
nsIVariant** aSupportedTypes)
|
||||
{
|
||||
if (aClientId >= mClients.Length()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIVariant> supportedTypes = mClients[aClientId]->GetSupportedNetworkTypes();
|
||||
supportedTypes.forget(aSupportedTypes);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetNetworks(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetNetworksRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SelectNetwork(uint32_t aClientId,
|
||||
nsIMobileNetworkInfo* aNetwork,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
nsCOMPtr<nsIMobileNetworkInfo> network = aNetwork;
|
||||
// We release the ref after serializing process is finished in
|
||||
// MobileConnectionIPCSerializer.
|
||||
return SendRequest(aClientId, SelectNetworkRequest(network.forget().take()), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SelectNetworkAutomatically(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, SelectNetworkAutoRequest(), aRequest);
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetPreferredNetworkType(uint32_t aClientId,
|
||||
const nsAString& aType,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId,
|
||||
SetPreferredNetworkTypeRequest(nsAutoString(aType)),
|
||||
aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetPreferredNetworkType(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetPreferredNetworkTypeRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetRoamingPreference(uint32_t aClientId,
|
||||
const nsAString& aMode,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId,
|
||||
SetRoamingPreferenceRequest(nsAutoString(aMode)),
|
||||
aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetRoamingPreference(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetRoamingPreferenceRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetVoicePrivacyMode(uint32_t aClientId,
|
||||
bool aEnabled,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, SetVoicePrivacyModeRequest(aEnabled), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetVoicePrivacyMode(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetVoicePrivacyModeRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SendMMI(uint32_t aClientId,
|
||||
const nsAString& aMmi,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, SendMmiRequest(nsAutoString(aMmi)), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::CancelMMI(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, CancelMmiRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetCallForwarding(uint32_t aClientId,
|
||||
JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallForwardingOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(aClientId, SetCallForwardingRequest(options), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetCallForwarding(uint32_t aClientId,
|
||||
uint16_t aReason,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetCallForwardingRequest(aReason), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetCallBarring(uint32_t aClientId,
|
||||
JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallBarringOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(aClientId, SetCallBarringRequest(options), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetCallBarring(uint32_t aClientId,
|
||||
JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallBarringOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(aClientId, GetCallBarringRequest(options), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::ChangeCallBarringPassword(uint32_t aClientId,
|
||||
JS::Handle<JS::Value> aOptions,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
AutoSafeJSContext cx;
|
||||
IPC::MozCallBarringOptions options;
|
||||
if(!options.Init(cx, aOptions)) {
|
||||
return NS_ERROR_TYPE_ERR;
|
||||
}
|
||||
|
||||
return SendRequest(aClientId, ChangeCallBarringPasswordRequest(options), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetCallWaiting(uint32_t aClientId,
|
||||
bool aEnabled,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, SetCallWaitingRequest(aEnabled), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetCallWaiting(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetCallWaitingRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetCallingLineIdRestriction(uint32_t aClientId,
|
||||
uint16_t aMode,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, SetCallingLineIdRestrictionRequest(aMode), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::GetCallingLineIdRestriction(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, GetCallingLineIdRestrictionRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::ExitEmergencyCbMode(uint32_t aClientId,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, ExitEmergencyCbModeRequest(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
MobileConnectionIPCService::SetRadioEnabled(uint32_t aClientId,
|
||||
bool aEnabled,
|
||||
nsIMobileConnectionCallback* aRequest)
|
||||
{
|
||||
return SendRequest(aClientId, SetRadioEnabledRequest(aEnabled), aRequest);
|
||||
}
|
||||
|
@ -25,14 +25,10 @@ public:
|
||||
private:
|
||||
MobileConnectionIPCService();
|
||||
|
||||
// MOZ_FINAL suppresses -Werror,-Wdelete-non-virtual-dtor
|
||||
~MobileConnectionIPCService();
|
||||
|
||||
/** Send request */
|
||||
nsresult
|
||||
SendRequest(uint32_t aClientId, MobileConnectionRequest aRequest,
|
||||
nsIMobileConnectionCallback* aRequestCallback);
|
||||
|
||||
nsTArray<nsRefPtr<MobileConnectionChild>> mClients;
|
||||
nsTArray<nsRefPtr<MobileConnectionChild>> mItems;
|
||||
};
|
||||
|
||||
} // namespace mobileconnection
|
||||
|
@ -17,16 +17,18 @@ using namespace mozilla::dom;
|
||||
using namespace mozilla::dom::mobileconnection;
|
||||
|
||||
MobileConnectionParent::MobileConnectionParent(uint32_t aClientId)
|
||||
: mClientId(aClientId)
|
||||
, mLive(true)
|
||||
: mLive(true)
|
||||
{
|
||||
MOZ_COUNT_CTOR(MobileConnectionParent);
|
||||
|
||||
mService = do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
|
||||
NS_ASSERTION(mService, "This shouldn't fail!");
|
||||
nsCOMPtr<nsIMobileConnectionService> service =
|
||||
do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
|
||||
NS_ASSERTION(service, "This shouldn't fail!");
|
||||
|
||||
if (mService) {
|
||||
mService->RegisterListener(mClientId, this);
|
||||
nsresult rv = service->GetItemByServiceId(aClientId,
|
||||
getter_AddRefs(mMobileConnection));
|
||||
if (NS_SUCCEEDED(rv) && mMobileConnection) {
|
||||
mMobileConnection->RegisterListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,9 +36,9 @@ void
|
||||
MobileConnectionParent::ActorDestroy(ActorDestroyReason why)
|
||||
{
|
||||
mLive = false;
|
||||
if (mService) {
|
||||
mService->UnregisterListener(mClientId, this);
|
||||
mService = nullptr;
|
||||
if (mMobileConnection) {
|
||||
mMobileConnection->UnregisterListener(this);
|
||||
mMobileConnection = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +107,8 @@ MobileConnectionParent::AllocPMobileConnectionRequestParent(const MobileConnecti
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MobileConnectionRequestParent* actor = new MobileConnectionRequestParent(mClientId);
|
||||
MobileConnectionRequestParent* actor =
|
||||
new MobileConnectionRequestParent(mMobileConnection);
|
||||
// Add an extra ref for IPDL. Will be released in
|
||||
// MobileConnectionParent::DeallocPMobileConnectionRequestParent().
|
||||
actor->AddRef();
|
||||
@ -130,36 +133,28 @@ MobileConnectionParent::RecvInit(nsMobileConnectionInfo* aVoice,
|
||||
nsString* aRadioState,
|
||||
nsTArray<nsString>* aSupportedNetworkTypes)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
NS_ENSURE_SUCCESS(mService->GetVoiceConnectionInfo(mClientId, aVoice), false);
|
||||
NS_ENSURE_SUCCESS(mService->GetDataConnectionInfo(mClientId, aData), false);
|
||||
NS_ENSURE_SUCCESS(mService->GetLastKnownNetwork(mClientId, *aLastKnownNetwork), false);
|
||||
NS_ENSURE_SUCCESS(mService->GetLastKnownHomeNetwork(mClientId, *aLastKnownHomeNetwork), false);
|
||||
NS_ENSURE_SUCCESS(mService->GetIccId(mClientId, *aIccId), false);
|
||||
NS_ENSURE_SUCCESS(mService->GetNetworkSelectionMode(mClientId, *aNetworkSelectionMode), false);
|
||||
NS_ENSURE_SUCCESS(mService->GetRadioState(mClientId, *aRadioState), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetVoice(aVoice), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetData(aData), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetLastKnownNetwork(*aLastKnownNetwork), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetLastKnownHomeNetwork(*aLastKnownHomeNetwork), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetIccId(*aIccId), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetNetworkSelectionMode(*aNetworkSelectionMode), false);
|
||||
NS_ENSURE_SUCCESS(mMobileConnection->GetRadioState(*aRadioState), false);
|
||||
|
||||
nsCOMPtr<nsIVariant> variant;
|
||||
mService->GetSupportedNetworkTypes(mClientId, getter_AddRefs(variant));
|
||||
char16_t** types = nullptr;
|
||||
uint32_t length = 0;
|
||||
|
||||
uint16_t type;
|
||||
nsIID iid;
|
||||
uint32_t count;
|
||||
void* data;
|
||||
if (NS_FAILED(variant->GetAsArray(&type, &iid, &count, &data))) {
|
||||
return false;
|
||||
nsresult rv = mMobileConnection->GetSupportedNetworkTypes(&types, &length);
|
||||
NS_ENSURE_SUCCESS(rv, false);
|
||||
|
||||
for (uint32_t i = 0; i < length; ++i) {
|
||||
nsDependentString type(types[i]);
|
||||
aSupportedNetworkTypes->AppendElement(type);
|
||||
}
|
||||
|
||||
// We expect the element type is wstring.
|
||||
if (type == nsIDataType::VTYPE_WCHAR_STR) {
|
||||
char16_t** rawArray = reinterpret_cast<char16_t**>(data);
|
||||
for (uint32_t i = 0; i < count; ++i) {
|
||||
nsDependentString networkType(rawArray[i]);
|
||||
aSupportedNetworkTypes->AppendElement(networkType);
|
||||
}
|
||||
}
|
||||
NS_Free(data);
|
||||
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(length, types);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -175,7 +170,7 @@ MobileConnectionParent::NotifyVoiceChanged()
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMobileConnectionInfo> info;
|
||||
rv = mService->GetVoiceConnectionInfo(mClientId, getter_AddRefs(info));
|
||||
rv = mMobileConnection->GetVoice(getter_AddRefs(info));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// We release the ref after serializing process is finished in
|
||||
@ -190,7 +185,7 @@ MobileConnectionParent::NotifyDataChanged()
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMobileConnectionInfo> info;
|
||||
rv = mService->GetDataConnectionInfo(mClientId, getter_AddRefs(info));
|
||||
rv = mMobileConnection->GetData(getter_AddRefs(info));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// We release the ref after serializing process is finished in
|
||||
@ -256,7 +251,7 @@ MobileConnectionParent::NotifyIccChanged()
|
||||
NS_ENSURE_TRUE(mLive, NS_ERROR_FAILURE);
|
||||
|
||||
nsAutoString iccId;
|
||||
mService->GetIccId(mClientId, iccId);
|
||||
mMobileConnection->GetIccId(iccId);
|
||||
|
||||
return SendNotifyIccChanged(iccId) ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
@ -268,7 +263,7 @@ MobileConnectionParent::NotifyRadioStateChanged()
|
||||
|
||||
nsresult rv;
|
||||
nsAutoString radioState;
|
||||
rv = mService->GetRadioState(mClientId, radioState);
|
||||
rv = mMobileConnection->GetRadioState(radioState);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return SendNotifyRadioStateChanged(radioState) ? NS_OK : NS_ERROR_FAILURE;
|
||||
@ -289,7 +284,7 @@ MobileConnectionParent::NotifyLastKnownNetworkChanged()
|
||||
|
||||
nsresult rv;
|
||||
nsAutoString network;
|
||||
rv = mService->GetLastKnownNetwork(mClientId, network);
|
||||
rv = mMobileConnection->GetLastKnownNetwork(network);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return SendNotifyLastNetworkChanged(network) ? NS_OK : NS_ERROR_FAILURE;
|
||||
@ -302,7 +297,7 @@ MobileConnectionParent::NotifyLastKnownHomeNetworkChanged()
|
||||
|
||||
nsresult rv;
|
||||
nsAutoString network;
|
||||
rv = mService->GetLastKnownHomeNetwork(mClientId, network);
|
||||
rv = mMobileConnection->GetLastKnownHomeNetwork(network);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return SendNotifyLastHomeNetworkChanged(network) ? NS_OK : NS_ERROR_FAILURE;
|
||||
@ -315,7 +310,7 @@ MobileConnectionParent::NotifyNetworkSelectionModeChanged()
|
||||
|
||||
nsresult rv;
|
||||
nsAutoString mode;
|
||||
rv = mService->GetNetworkSelectionMode(mClientId, mode);
|
||||
rv = mMobileConnection->GetNetworkSelectionMode(mode);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return SendNotifyNetworkSelectionModeChanged(mode) ? NS_OK : NS_ERROR_FAILURE;
|
||||
@ -329,104 +324,104 @@ void
|
||||
MobileConnectionRequestParent::ActorDestroy(ActorDestroyReason why)
|
||||
{
|
||||
mLive = false;
|
||||
mService = nullptr;
|
||||
mMobileConnection = nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetNetworksRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetNetworks(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetNetworks(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SelectNetworkRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
// Use dont_AddRef here because this instances is already AddRef-ed in
|
||||
// MobileConnectionIPCSerializer.h
|
||||
nsCOMPtr<nsIMobileNetworkInfo> network = dont_AddRef(aRequest.network());
|
||||
return NS_SUCCEEDED(mService->SelectNetwork(mClientId, network, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SelectNetwork(network, this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SelectNetworkAutoRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SelectNetworkAutomatically(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SelectNetworkAutomatically(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetPreferredNetworkTypeRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SetPreferredNetworkType(mClientId, aRequest.type(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetPreferredNetworkType(aRequest.type(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetPreferredNetworkTypeRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetPreferredNetworkType(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetPreferredNetworkType(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetRoamingPreferenceRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SetRoamingPreference(mClientId, aRequest.mode(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetRoamingPreference(aRequest.mode(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetRoamingPreferenceRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetRoamingPreference(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetRoamingPreference(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetVoicePrivacyModeRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SetVoicePrivacyMode(mClientId, aRequest.enabled(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetVoicePrivacyMode(aRequest.enabled(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetVoicePrivacyModeRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetVoicePrivacyMode(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetVoicePrivacyMode(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SendMmiRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SendMMI(mClientId, aRequest.mmi(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SendMMI(aRequest.mmi(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const CancelMmiRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->CancelMMI(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->CancelMMI(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetCallForwardingRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
AutoSafeJSContext cx;
|
||||
JS::Rooted<JS::Value> options(cx);
|
||||
@ -435,21 +430,21 @@ MobileConnectionRequestParent::DoRequest(const SetCallForwardingRequest& aReques
|
||||
return false;
|
||||
}
|
||||
|
||||
return NS_SUCCEEDED(mService->SetCallForwarding(mClientId, options, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetCallForwarding(options, this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetCallForwardingRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetCallForwarding(mClientId, aRequest.reason(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetCallForwarding(aRequest.reason(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetCallBarringRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
AutoSafeJSContext cx;
|
||||
JS::Rooted<JS::Value> options(cx);
|
||||
@ -458,13 +453,13 @@ MobileConnectionRequestParent::DoRequest(const SetCallBarringRequest& aRequest)
|
||||
return false;
|
||||
}
|
||||
|
||||
return NS_SUCCEEDED(mService->SetCallBarring(mClientId, options, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetCallBarring(options, this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetCallBarringRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
AutoSafeJSContext cx;
|
||||
JS::Rooted<JS::Value> options(cx);
|
||||
@ -473,13 +468,13 @@ MobileConnectionRequestParent::DoRequest(const GetCallBarringRequest& aRequest)
|
||||
return false;
|
||||
}
|
||||
|
||||
return NS_SUCCEEDED(mService->GetCallBarring(mClientId, options, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetCallBarring(options, this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const ChangeCallBarringPasswordRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
AutoSafeJSContext cx;
|
||||
JS::Rooted<JS::Value> options(cx);
|
||||
@ -488,55 +483,55 @@ MobileConnectionRequestParent::DoRequest(const ChangeCallBarringPasswordRequest&
|
||||
return false;
|
||||
}
|
||||
|
||||
return NS_SUCCEEDED(mService->ChangeCallBarringPassword(mClientId, options, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->ChangeCallBarringPassword(options, this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetCallWaitingRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SetCallWaiting(mClientId, aRequest.enabled(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetCallWaiting(aRequest.enabled(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetCallWaitingRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetCallWaiting(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetCallWaiting(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetCallingLineIdRestrictionRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SetCallingLineIdRestriction(mClientId, aRequest.mode(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetCallingLineIdRestriction(aRequest.mode(), this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const GetCallingLineIdRestrictionRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->GetCallingLineIdRestriction(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->GetCallingLineIdRestriction(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const ExitEmergencyCbModeRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->ExitEmergencyCbMode(mClientId, this));
|
||||
return NS_SUCCEEDED(mMobileConnection->ExitEmergencyCbMode(this));
|
||||
}
|
||||
|
||||
bool
|
||||
MobileConnectionRequestParent::DoRequest(const SetRadioEnabledRequest& aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(mService, false);
|
||||
NS_ENSURE_TRUE(mMobileConnection, false);
|
||||
|
||||
return NS_SUCCEEDED(mService->SetRadioEnabled(mClientId, aRequest.enabled(), this));
|
||||
return NS_SUCCEEDED(mMobileConnection->SetRadioEnabled(aRequest.enabled(), this));
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -55,9 +55,8 @@ protected:
|
||||
nsString* aRadioState, nsTArray<nsString>* aSupportedNetworkTypes) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
uint32_t mClientId;
|
||||
nsCOMPtr<nsIMobileConnection> mMobileConnection;
|
||||
bool mLive;
|
||||
nsCOMPtr<nsIMobileConnectionService> mService;
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
@ -78,14 +77,11 @@ public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIMOBILECONNECTIONCALLBACK
|
||||
|
||||
explicit MobileConnectionRequestParent(uint32_t aClientId)
|
||||
: mClientId(aClientId)
|
||||
explicit MobileConnectionRequestParent(nsIMobileConnection* aMobileConnection)
|
||||
: mMobileConnection(aMobileConnection)
|
||||
, mLive(true)
|
||||
{
|
||||
MOZ_COUNT_CTOR(MobileConnectionRequestParent);
|
||||
|
||||
mService = do_GetService(NS_MOBILE_CONNECTION_SERVICE_CONTRACTID);
|
||||
NS_ASSERTION(mService, "This shouldn't fail!");
|
||||
}
|
||||
|
||||
bool
|
||||
@ -168,9 +164,8 @@ protected:
|
||||
SendReply(const MobileConnectionReply& aReply);
|
||||
|
||||
private:
|
||||
uint32_t mClientId;
|
||||
nsCOMPtr<nsIMobileConnection> mMobileConnection;
|
||||
bool mLive;
|
||||
nsCOMPtr<nsIMobileConnectionService> mService;
|
||||
};
|
||||
|
||||
} // namespace mobileconnection
|
||||
|
Loading…
Reference in New Issue
Block a user