Moving carrier checking privilege logic into UiccCarrierPrivilegeRules.

This helps to reuse the logic in other places in frameworks/opt/telephony.

BUG=15993876

Change-Id: I8309a1de23426dcc66a10383335cff9242920410
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 8e03568..721f7e2 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