Revert "Grant default permissons to the default SMS, Phone, Browser app."
The Android Automerger [Wed, 1 Jul 2015 02:04:10 +0000 (19:04 -0700)]
This reverts commit 2b1ecf00c47086c91248dd24b4f6379153ad8aff.

src/java/com/android/internal/telephony/CarrierAppUtils.java
src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java

index bf306dd..b7e02b6 100644 (file)
@@ -79,10 +79,8 @@ public final class CarrierAppUtils {
         if (candidates == null || candidates.isEmpty()) {
             return;
         }
-
-        List<String> enabledCarrierPackages = new ArrayList<>();
-
         try {
+            boolean anyAppsEnabled = false;
             for (ApplicationInfo ai : candidates) {
                 String packageName = ai.packageName;
                 boolean hasPrivileges =
@@ -94,7 +92,7 @@ public final class CarrierAppUtils {
                                     PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) {
                         Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user "
                                 + userId);
-                        enabledCarrierPackages.add(ai.packageName);
+                        anyAppsEnabled = true;
                         packageManager.setApplicationEnabledSetting(packageName,
                                 PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, userId,
                                 callingPackage);
@@ -102,7 +100,7 @@ public final class CarrierAppUtils {
                             PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
                         // If we're already enabled, don't bother re-enabling, but treat the app as
                         // enabled so that we re-grant default permissions in case they were lost.
-                        enabledCarrierPackages.add(ai.packageName);
+                        anyAppsEnabled = true;
                     }
                 } else if (!hasPrivileges
                         && ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
@@ -114,12 +112,10 @@ public final class CarrierAppUtils {
                 }
             }
 
-            if (!enabledCarrierPackages.isEmpty()) {
+            if (anyAppsEnabled) {
                 // Since we enabled at least one app, ensure we grant default permissions to those
                 // apps.
-                String[] packageNames = new String[enabledCarrierPackages.size()];
-                enabledCarrierPackages.toArray(packageNames);
-                packageManager.grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId);
+                packageManager.grantDefaultPermissions(userId);
             }
         } catch (RemoteException e) {
             Slog.w(TAG, "Could not reach PackageManager", e);
index 64eaf15..30ca552 100644 (file)
@@ -27,13 +27,16 @@ import android.content.ContentValues;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
+import android.content.pm.IPackagesProvider;
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.IRemoteCallback;
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.preference.PreferenceManager;
 import android.provider.Settings;
@@ -123,6 +126,31 @@ public class SubscriptionInfoUpdater extends Handler {
     }
 
     private void initializeCarrierApps() {
+        // Let the PackageManager query carrier apps as they get certain permissions granted by
+        // default.
+        try {
+            mPackageManager.setCarrierAppPackagesProvider(
+                    new IPackagesProvider.Stub() {
+                        @Override
+                        public String[] getPackages(int userId) {
+                            List<ApplicationInfo> defaultApps =
+                                    CarrierAppUtils.getDefaultCarrierApps(mPackageManager,
+                                            TelephonyManager.getDefault(), userId);
+                            if (defaultApps == null) {
+                                return null;
+                            }
+                            int count = defaultApps.size();
+                            String[] packages = new String[count];
+                            for (int i = 0; i < count; i++) {
+                                packages[i] = defaultApps.get(i).packageName;
+                            }
+                            return packages;
+                        }
+                    });
+        } catch (RemoteException e) {
+            logd("Couldn't contact PackageManager: " + e.getMessage());
+        }
+
         // Initialize carrier apps:
         // -Now (on system startup)
         // -Whenever new carrier privilege rules might change (new SIM is loaded)
index d14a987..f91fee4 100644 (file)
@@ -60,9 +60,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(Mockito.any(String[].class),
-                        Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
         Mockito.verifyNoMoreInteractions(mTelephonyManager);
     }
 
@@ -76,9 +74,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
         Mockito.verifyNoMoreInteractions(mTelephonyManager);
     }
 
@@ -98,9 +94,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 
     /** Configured app has privileges, but was disabled - should do nothing. */
@@ -118,9 +112,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 
     /** Configured app has privileges, and is already enabled - should only grant permissions. */
@@ -138,8 +130,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
-                new String[] {appInfo.packageName}, USER_ID);
+        Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID);
     }
 
     /** Configured app has privileges, and is in the default state - should enable. */
@@ -157,8 +148,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager).setApplicationEnabledSetting(
                 CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, USER_ID,
                 CALLING_PACKAGE);
-        Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
-                new String[] {appInfo.packageName}, USER_ID);
+        Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID);
     }
 
     /** Configured app has privileges, and is disabled until used - should enable. */
@@ -177,8 +167,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager).setApplicationEnabledSetting(
                 CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, USER_ID,
                 CALLING_PACKAGE);
-        Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
-                new String[] {appInfo.packageName}, USER_ID);
+        Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID);
     }
 
     /** Configured app has no privileges, and was disabled by the user - should do nothing. */
@@ -196,9 +185,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 
     /** Configured app has no privileges, and was disabled - should do nothing. */
@@ -216,9 +203,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 
     /** Configured app has no privileges, and is explicitly enabled - should do nothing. */
@@ -236,9 +221,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 
     /** Configured app has no privileges, and is in the default state - should disable until use. */
@@ -256,9 +239,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager).setApplicationEnabledSetting(
                 CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID,
                 CALLING_PACKAGE);
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 
     /** Configured app has no privileges, and is disabled until used - should do nothing. */
@@ -277,9 +258,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
         Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
                 Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
                 Mockito.anyString());
-        Mockito.verify(mPackageManager, Mockito.never())
-                .grantDefaultPermissionsToEnabledCarrierApps(
-                        Mockito.any(String[].class), Mockito.anyInt());
+        Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt());
     }
 }