Merge "TTY: Telephony changes" into lmp-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c5d1c23..2825a7e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -371,8 +371,8 @@
</string-array>
<!-- Mobile network settings screen, data enabling checkbox name -->
<string name="data_enabled">Data enabled</string>
- <!-- Mobile network settings screen, setting summary text when check box is not selected (explains what selecting it would do) -->
- <string name="data_enable_summary">Enable data access over Cellular network</string>
+ <!-- Mobile network settings screen, setting summary text when check box is not selected (explains what selecting it would do) [CHAR LIMITS=40] -->
+ <string name="data_enable_summary">Allow data usage</string>
<!-- Mobile network settings screen, setting check box name -->
<string name="roaming">Data roaming</string>
<!-- Mobile network settings screen, setting summary text when check box is selected -->
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 2590aa4..5e8c9f5 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -1177,14 +1177,16 @@
* @throws SecurityException if the caller does not have the required permission/privilege
*/
private void enforceModifyPermissionOrCarrierPrivilege() {
- try {
- mApp.enforceCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE, null);
- } catch (SecurityException e) {
- log("No modify permission, check carrier privilege next.");
- if (hasCarrierPrivileges() != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
- loge("No Carrier Privilege.");
- throw new SecurityException("No modify permission or carrier privilege.");
- }
+ int permission = mApp.checkCallingOrSelfPermission(
+ android.Manifest.permission.MODIFY_PHONE_STATE);
+ if (permission == PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+
+ log("No modify permission, check carrier privilege next.");
+ if (hasCarrierPrivileges() != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
+ loge("No Carrier Privilege.");
+ throw new SecurityException("No modify permission or carrier privilege.");
}
}
@@ -1195,8 +1197,8 @@
*/
private void enforceCarrierPrivilege() {
if (hasCarrierPrivileges() != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
- loge("No Carrier Privilege.");
- throw new SecurityException("No Carrier Privilege.");
+ loge("No Carrier Privilege.");
+ throw new SecurityException("No Carrier Privilege.");
}
}
@@ -1679,47 +1681,14 @@
@Override
public int hasCarrierPrivileges() {
- PackageManager packageManager = mPhone.getContext().getPackageManager();
- String[] packages = packageManager.getPackagesForUid(Binder.getCallingUid());
-
- for (String pkg : packages) {
- try {
- PackageInfo pInfo = packageManager.getPackageInfo(pkg,
- PackageManager.GET_SIGNATURES);
- Signature[] signatures = pInfo.signatures;
- for (Signature sig : signatures) {
- int hasAccess = UiccController.getInstance().getUiccCard().hasCarrierPrivileges(
- sig, pInfo.packageName);
- if (hasAccess != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
- return hasAccess;
- }
- }
- } catch (PackageManager.NameNotFoundException ex) {
- loge("NameNotFoundException: " + ex);
- continue;
- }
- }
- return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
+ return UiccController.getInstance().getUiccCard().getCarrierPrivilegeStatusForCurrentTransaction(
+ mPhone.getContext().getPackageManager());
}
@Override
public int checkCarrierPrivilegesForPackage(String pkgname) {
- PackageManager packageManager = mPhone.getContext().getPackageManager();
- try {
- PackageInfo pInfo = packageManager.getPackageInfo(pkgname,
- PackageManager.GET_SIGNATURES);
- Signature[] signatures = pInfo.signatures;
- for (Signature sig : signatures) {
- int hasAccess = UiccController.getInstance().getUiccCard().hasCarrierPrivileges(
- sig, pInfo.packageName);
- if (hasAccess != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
- return hasAccess;
- }
- }
- } catch (PackageManager.NameNotFoundException ex) {
- loge("NameNotFoundException: " + ex);
- }
- return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
+ return UiccController.getInstance().getUiccCard().getCarrierPrivilegeStatus(
+ mPhone.getContext().getPackageManager(), pkgname);
}
@Override
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 626244e..2d55165 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -19,6 +19,7 @@
import android.content.ComponentName;
import android.content.Context;
import android.net.Uri;
+import android.os.Debug;
import android.telephony.DisconnectCause;
import android.telephony.ServiceState;
import android.text.TextUtils;
@@ -184,7 +185,7 @@
if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
response.onSuccess(telephonyRequest, new GsmConnection(originalConnection));
- } else if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
+ } else if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
response.onSuccess(telephonyRequest, new CdmaConnection(originalConnection));
} else {
response.onCancel(request);
@@ -239,9 +240,11 @@
if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
response.onSuccess(telephonyRequest, new GsmConnection(originalConnection));
- } else if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
+ } else if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
response.onSuccess(telephonyRequest, new CdmaConnection(originalConnection));
} else {
+ // TODO(ihab): Tear down 'originalConnection' here, or move recognition of
+ // getPhoneType() earlier in this method before we've already asked phone to dial()
response.onFailure(request, DisconnectCause.ERROR_UNSPECIFIED, "Invalid phone type");
}
}