Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7322b9f0 authored by Suchi Amalapurapu's avatar Suchi Amalapurapu Committed by Android Git Automerger
Browse files

am 2ef6e442: am 28b2fdc5: Merge "Dont fall back to installing on sdcard when...

am 2ef6e442: am 28b2fdc5: Merge "Dont fall back to installing on sdcard when internal storage is filled up when the install location is set to internal only. Similary if install location is set to external only(via adb), dont fall back to installing on internal storag

Merge commit '2ef6e442' into kraken

* commit '2ef6e442':
  Dont fall back to installing on sdcard when internal storage is filled up
parents 24af70e8 2ef6e442
Loading
Loading
Loading
Loading
+99 −104
Original line number Original line Diff line number Diff line
@@ -165,12 +165,18 @@ public class PackageManagerTests extends AndroidTestCase {
        }
        }
    }
    }


    PackageManager getPm() {
    private PackageManager getPm() {
        return mContext.getPackageManager();
        return mContext.getPackageManager();
    }
    }


    private IPackageManager getIPm() {
        IPackageManager ipm  = IPackageManager.Stub.asInterface(
                ServiceManager.getService("package"));
        return ipm;
    }

    public boolean invokeInstallPackage(Uri packageURI, int flags,
    public boolean invokeInstallPackage(Uri packageURI, int flags,
            final String pkgName, GenericReceiver receiver) throws Exception {
            GenericReceiver receiver) throws Exception {
        PackageInstallObserver observer = new PackageInstallObserver();
        PackageInstallObserver observer = new PackageInstallObserver();
        final boolean received = false;
        final boolean received = false;
        mContext.registerReceiver(receiver, receiver.filter);
        mContext.registerReceiver(receiver, receiver.filter);
@@ -209,8 +215,7 @@ public class PackageManagerTests extends AndroidTestCase {
        }
        }
    }
    }


    public boolean invokeInstallPackageFail(Uri packageURI, int flags,
    public void invokeInstallPackageFail(Uri packageURI, int flags, int result) throws Exception {
            final String pkgName, int result) throws Exception {
        PackageInstallObserver observer = new PackageInstallObserver();
        PackageInstallObserver observer = new PackageInstallObserver();
        try {
        try {
            // Wait on observer
            // Wait on observer
@@ -224,7 +229,7 @@ public class PackageManagerTests extends AndroidTestCase {
                if(!observer.isDone()) {
                if(!observer.isDone()) {
                    throw new Exception("Timed out waiting for packageInstalled callback");
                    throw new Exception("Timed out waiting for packageInstalled callback");
                }
                }
                return (observer.returnCode == result);
                assertEquals(observer.returnCode, result);
            }
            }
        } finally {
        } finally {
        }
        }
@@ -284,17 +289,6 @@ public class PackageManagerTests extends AndroidTestCase {
    private static final int INSTALL_LOC_INT = 1;
    private static final int INSTALL_LOC_INT = 1;
    private static final int INSTALL_LOC_SD = 2;
    private static final int INSTALL_LOC_SD = 2;
    private static final int INSTALL_LOC_ERR = -1;
    private static final int INSTALL_LOC_ERR = -1;
    private int checkDefaultPolicy(long pkgLen) {
        // Check for free memory internally
        if (checkInt(pkgLen)) {
            return INSTALL_LOC_INT;
        }
        // Check for free memory externally
        if (checkSd(pkgLen)) {
            return INSTALL_LOC_SD;
        }
        return INSTALL_LOC_ERR;
    }
    private int getInstallLoc(int flags, int expInstallLocation, long pkgLen) {
    private int getInstallLoc(int flags, int expInstallLocation, long pkgLen) {
        // Flags explicitly over ride everything else.
        // Flags explicitly over ride everything else.
        if ((flags & PackageManager.INSTALL_FORWARD_LOCK) != 0 ) {
        if ((flags & PackageManager.INSTALL_FORWARD_LOCK) != 0 ) {
@@ -306,7 +300,6 @@ public class PackageManagerTests extends AndroidTestCase {
        }
        }
        // Manifest option takes precedence next
        // Manifest option takes precedence next
        if (expInstallLocation == PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL) {
        if (expInstallLocation == PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL) {
            // TODO fitsonSd check
            if (checkSd(pkgLen)) {
            if (checkSd(pkgLen)) {
               return INSTALL_LOC_SD;
               return INSTALL_LOC_SD;
            }
            }
@@ -322,23 +315,19 @@ public class PackageManagerTests extends AndroidTestCase {
            return INSTALL_LOC_ERR;
            return INSTALL_LOC_ERR;
        }
        }
        if (expInstallLocation == PackageInfo.INSTALL_LOCATION_AUTO) {
        if (expInstallLocation == PackageInfo.INSTALL_LOCATION_AUTO) {
            return checkDefaultPolicy(pkgLen);
            // Check for free memory internally
            if (checkInt(pkgLen)) {
                return INSTALL_LOC_INT;
            }
            }
        // Check for settings preference.
            // Check for free memory externally
        boolean checkSd = false;
            if (checkSd(pkgLen)) {
        int setLoc = 0;
                return INSTALL_LOC_SD;
        try {
            setLoc = Settings.System.getInt(mContext.getContentResolver(), Settings.Secure.SET_INSTALL_LOCATION);
        } catch (SettingNotFoundException e) {
            failStr(e);
            }
            }
        if (setLoc == 1) {
            return INSTALL_LOC_ERR;
            int userPref = APP_INSTALL_AUTO;
            try {
                userPref = Settings.System.getInt(mContext.getContentResolver(), Settings.Secure.DEFAULT_INSTALL_LOCATION);
            } catch (SettingNotFoundException e) {
                failStr(e);
        }
        }
        // Check for settings preference.
        boolean checkSd = false;
        int userPref = getDefaultInstallLoc();
        if (userPref == APP_INSTALL_DEVICE) {
        if (userPref == APP_INSTALL_DEVICE) {
            if (checkInt(pkgLen)) {
            if (checkInt(pkgLen)) {
                return INSTALL_LOC_INT;
                return INSTALL_LOC_INT;
@@ -350,8 +339,12 @@ public class PackageManagerTests extends AndroidTestCase {
            }
            }
            return INSTALL_LOC_ERR;
            return INSTALL_LOC_ERR;
        }
        }
        // Default system policy for apps with no manifest option specified.
        // Check for free memory internally
        if (checkInt(pkgLen)) {
            return INSTALL_LOC_INT;
        }
        }
        return checkDefaultPolicy(pkgLen);
        return INSTALL_LOC_ERR;
    }
    }
    
    
    private void assertInstall(PackageParser.Package pkg, int flags, int expInstallLocation) {
    private void assertInstall(PackageParser.Package pkg, int flags, int expInstallLocation) {
@@ -402,14 +395,20 @@ public class PackageManagerTests extends AndroidTestCase {
    }
    }


    class InstallParams {
    class InstallParams {
        String outFileName;
        Uri packageURI;
        Uri packageURI;
        PackageParser.Package pkg;
        PackageParser.Package pkg;
        InstallParams(PackageParser.Package pkg, String outFileName, Uri packageURI) {
        InstallParams(String outFileName, int rawResId) {
            this.outFileName = outFileName;
            this.pkg = getParsedPackage(outFileName, rawResId);
            this.packageURI = packageURI;
            this.packageURI = Uri.fromFile(new File(pkg.mScanPath));
        }
        InstallParams(PackageParser.Package pkg) {
            this.packageURI = Uri.fromFile(new File(pkg.mScanPath));
            this.pkg = pkg;
            this.pkg = pkg;
        }
        }
        long getApkSize() {
            File file = new File(pkg.mScanPath);
            return file.length();
        }
    }
    }


    private InstallParams sampleInstallFromRawResource(int flags, boolean cleanUp) {
    private InstallParams sampleInstallFromRawResource(int flags, boolean cleanUp) {
@@ -520,45 +519,36 @@ public class PackageManagerTests extends AndroidTestCase {
     * copies it into own data directory and invokes
     * copies it into own data directory and invokes
     * PackageManager api to install it.
     * PackageManager api to install it.
     */
     */
    private InstallParams installFromRawResource(String outFileName,
    private void installFromRawResource(InstallParams ip,
            int rawResId, int flags, boolean cleanUp, boolean fail, int result,
            int flags, boolean cleanUp, boolean fail, int result,
            int expInstallLocation) {
            int expInstallLocation) {
        PackageManager pm = mContext.getPackageManager();
        PackageManager pm = mContext.getPackageManager();
        File filesDir = mContext.getFilesDir();
        PackageParser.Package pkg = ip.pkg;
        File outFile = new File(filesDir, outFileName);
        Uri packageURI = ip.packageURI;
        Uri packageURI = getInstallablePackage(rawResId, outFile);
        PackageParser.Package pkg = parsePackage(packageURI);
        assertNotNull(pkg);
        if ((flags & PackageManager.INSTALL_REPLACE_EXISTING) == 0) {
        if ((flags & PackageManager.INSTALL_REPLACE_EXISTING) == 0) {
            // Make sure the package doesn't exist
            // Make sure the package doesn't exist
            try {
            try {
                ApplicationInfo appInfo = pm.getApplicationInfo(pkg.packageName,
                ApplicationInfo appInfo = pm.getApplicationInfo(pkg.packageName,
                        PackageManager.GET_UNINSTALLED_PACKAGES);
                        PackageManager.GET_UNINSTALLED_PACKAGES);
                GenericReceiver receiver = new DeleteReceiver(pkg.packageName);
                GenericReceiver receiver = new DeleteReceiver(pkg.packageName);
                invokeDeletePackage(packageURI, 0,
                invokeDeletePackage(pkg.packageName, 0, receiver);
                        pkg.packageName, receiver);
            } catch (NameNotFoundException e1) {
            } catch (NameNotFoundException e1) {
            } catch (Exception e) {
            } catch (Exception e) {
                failStr(e);
                failStr(e);
            }
            }
        }
        }
        InstallParams ip = null;
        try {
        try {
            if (fail) {
            if (fail) {
                assertTrue(invokeInstallPackageFail(packageURI, flags,
                invokeInstallPackageFail(packageURI, flags, result);
                        pkg.packageName, result));
                if ((flags & PackageManager.INSTALL_REPLACE_EXISTING) == 0) {
                if ((flags & PackageManager.INSTALL_REPLACE_EXISTING) == 0) {
                    assertNotInstalled(pkg.packageName);
                    assertNotInstalled(pkg.packageName);
                }
                }
            } else {
            } else {
                InstallReceiver receiver = new InstallReceiver(pkg.packageName);
                InstallReceiver receiver = new InstallReceiver(pkg.packageName);
                assertTrue(invokeInstallPackage(packageURI, flags,
                assertTrue(invokeInstallPackage(packageURI, flags, receiver));
                        pkg.packageName, receiver));
                // Verify installed information
                // Verify installed information
                assertInstall(pkg, flags, expInstallLocation);
                assertInstall(pkg, flags, expInstallLocation);
                ip = new InstallParams(pkg, outFileName, packageURI);
            }
            }
            return ip;
        } catch (Exception e) {
        } catch (Exception e) {
            failStr("Failed with exception : " + e);
            failStr("Failed with exception : " + e);
        } finally {
        } finally {
@@ -566,6 +556,19 @@ public class PackageManagerTests extends AndroidTestCase {
                cleanUpInstall(ip);
                cleanUpInstall(ip);
            }
            }
        }
        }
    }

    /*
     * Utility function that reads a apk bundled as a raw resource
     * copies it into own data directory and invokes
     * PackageManager api to install it.
     */
    private InstallParams installFromRawResource(String outFileName,
            int rawResId, int flags, boolean cleanUp, boolean fail, int result,
            int expInstallLocation) {
        PackageManager pm = mContext.getPackageManager();
        InstallParams ip = new InstallParams(outFileName, rawResId);
        installFromRawResource(ip, flags, cleanUp, fail, result, expInstallLocation);
        return ip;
        return ip;
    }
    }


@@ -654,8 +657,7 @@ public class PackageManagerTests extends AndroidTestCase {
        }
        }
        try {
        try {
            try {
            try {
                assertEquals(invokeInstallPackage(ip.packageURI, flags,
                assertEquals(invokeInstallPackage(ip.packageURI, flags, receiver), replace);
                        ip.pkg.packageName, receiver), replace);
                if (replace) {
                if (replace) {
                    assertInstall(ip.pkg, flags, ip.pkg.installLocation);
                    assertInstall(ip.pkg, flags, ip.pkg.installLocation);
                }
                }
@@ -736,8 +738,8 @@ public class PackageManagerTests extends AndroidTestCase {
        }
        }
    }
    }


    public boolean invokeDeletePackage(Uri packageURI, int flags,
    public boolean invokeDeletePackage(final String pkgName, int flags,
            final String pkgName, GenericReceiver receiver) throws Exception {
            GenericReceiver receiver) throws Exception {
        DeleteObserver observer = new DeleteObserver();
        DeleteObserver observer = new DeleteObserver();
        final boolean received = false;
        final boolean received = false;
        mContext.registerReceiver(receiver, receiver.filter);
        mContext.registerReceiver(receiver, receiver.filter);
@@ -777,8 +779,7 @@ public class PackageManagerTests extends AndroidTestCase {
        GenericReceiver receiver = new DeleteReceiver(ip.pkg.packageName);
        GenericReceiver receiver = new DeleteReceiver(ip.pkg.packageName);
        DeleteObserver observer = new DeleteObserver();
        DeleteObserver observer = new DeleteObserver();
        try {
        try {
            assertTrue(invokeDeletePackage(ip.packageURI, dFlags,
            assertTrue(invokeDeletePackage(ip.pkg.packageName, dFlags, receiver));
                    ip.pkg.packageName, receiver));
            ApplicationInfo info = null;
            ApplicationInfo info = null;
            Log.i(TAG, "okay4");
            Log.i(TAG, "okay4");
            try {
            try {
@@ -907,7 +908,7 @@ public class PackageManagerTests extends AndroidTestCase {


    boolean getMediaState() {
    boolean getMediaState() {
        try {
        try {
        String mPath = Environment.getExternalStorageDirectory().toString();
        String mPath = Environment.getExternalStorageDirectory().getPath();
        String state = getMs().getVolumeState(mPath);
        String state = getMs().getVolumeState(mPath);
        return Environment.MEDIA_MOUNTED.equals(state);
        return Environment.MEDIA_MOUNTED.equals(state);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
@@ -928,13 +929,17 @@ public class PackageManagerTests extends AndroidTestCase {
        }
        }
    }
    }




    private boolean unmountMedia() {
    private boolean unmountMedia() {
        if (!getMediaState()) {
        String path = Environment.getExternalStorageDirectory().getPath();
        try {
            String state = getMs().getVolumeState(path);
            if (Environment.MEDIA_UNMOUNTED.equals(state)) {
                return true;
                return true;
            }
            }
        String path = Environment.getExternalStorageDirectory().toString();
        } catch (RemoteException e) {
            failStr(e);
        }
        
        StorageListener observer = new StorageListener();
        StorageListener observer = new StorageListener();
        StorageManager sm = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
        StorageManager sm = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
        sm.registerListener(observer);
        sm.registerListener(observer);
@@ -948,11 +953,12 @@ public class PackageManagerTests extends AndroidTestCase {
                    waitTime += WAIT_TIME_INCR;
                    waitTime += WAIT_TIME_INCR;
                }
                }
                if(!observer.isDone()) {
                if(!observer.isDone()) {
                    throw new Exception("Timed out waiting for packageInstalled callback");
                    throw new Exception("Timed out waiting for unmount media notification");
                }
                }
                return true;
                return true;
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
            Log.e(TAG, "Exception : " + e);
            return false;
            return false;
        } finally {
        } finally {
            sm.unregisterListener(observer);
            sm.unregisterListener(observer);
@@ -1029,7 +1035,7 @@ public class PackageManagerTests extends AndroidTestCase {
        Runtime.getRuntime().gc();
        Runtime.getRuntime().gc();
        Log.i(TAG, "Deleting package : " + ip.pkg.packageName);
        Log.i(TAG, "Deleting package : " + ip.pkg.packageName);
        getPm().deletePackage(ip.pkg.packageName, null, 0);
        getPm().deletePackage(ip.pkg.packageName, null, 0);
        File outFile = new File(ip.outFileName);
        File outFile = new File(ip.pkg.mScanPath);
        if (outFile != null && outFile.exists()) {
        if (outFile != null && outFile.exists()) {
            outFile.delete();
            outFile.delete();
        }
        }
@@ -1095,8 +1101,7 @@ public class PackageManagerTests extends AndroidTestCase {
        GenericReceiver receiver = new ReplaceReceiver(ip.pkg.packageName);
        GenericReceiver receiver = new ReplaceReceiver(ip.pkg.packageName);
        int replaceFlags = rFlags | PackageManager.INSTALL_REPLACE_EXISTING;
        int replaceFlags = rFlags | PackageManager.INSTALL_REPLACE_EXISTING;
        try {
        try {
            assertEquals(invokeInstallPackage(ip.packageURI, replaceFlags,
            assertEquals(invokeInstallPackage(ip.packageURI, replaceFlags, receiver), true);
                    ip.pkg.packageName, receiver), true);
            assertInstall(ip.pkg, rFlags, ip.pkg.installLocation);
            assertInstall(ip.pkg, rFlags, ip.pkg.installLocation);
        } catch (Exception e) {
        } catch (Exception e) {
            failStr("Failed with exception : " + e);
            failStr("Failed with exception : " + e);
@@ -1117,8 +1122,7 @@ public class PackageManagerTests extends AndroidTestCase {
        GenericReceiver receiver = new ReplaceReceiver(ip.pkg.packageName);
        GenericReceiver receiver = new ReplaceReceiver(ip.pkg.packageName);
        int replaceFlags = rFlags | PackageManager.INSTALL_REPLACE_EXISTING;
        int replaceFlags = rFlags | PackageManager.INSTALL_REPLACE_EXISTING;
        try {
        try {
            assertEquals(invokeInstallPackage(ip.packageURI, replaceFlags,
            assertEquals(invokeInstallPackage(ip.packageURI, replaceFlags, receiver), true);
                    ip.pkg.packageName, receiver), true);
            assertInstall(ip.pkg, iFlags, ip.pkg.installLocation);
            assertInstall(ip.pkg, iFlags, ip.pkg.installLocation);
        } catch (Exception e) {
        } catch (Exception e) {
            failStr("Failed with exception : " + e);
            failStr("Failed with exception : " + e);
@@ -1298,11 +1302,9 @@ public class PackageManagerTests extends AndroidTestCase {
        return true;
        return true;
    }
    }


    private int getInstallLoc() {
    private int getDefaultInstallLoc() {
        boolean userSetting = false;
        int origDefaultLoc = PackageInfo.INSTALL_LOCATION_AUTO;
        int origDefaultLoc = PackageInfo.INSTALL_LOCATION_AUTO;
        try {
        try {
            userSetting = Settings.System.getInt(mContext.getContentResolver(), Settings.Secure.SET_INSTALL_LOCATION) != 0;
            origDefaultLoc = Settings.System.getInt(mContext.getContentResolver(), Settings.Secure.DEFAULT_INSTALL_LOCATION);
            origDefaultLoc = Settings.System.getInt(mContext.getContentResolver(), Settings.Secure.DEFAULT_INSTALL_LOCATION);
        } catch (SettingNotFoundException e1) {
        } catch (SettingNotFoundException e1) {
        }
        }
@@ -1326,7 +1328,7 @@ public class PackageManagerTests extends AndroidTestCase {
    private void moveFromRawResource(String outFileName,
    private void moveFromRawResource(String outFileName,
            int rawResId, int installFlags, int moveFlags, boolean cleanUp,
            int rawResId, int installFlags, int moveFlags, boolean cleanUp,
            boolean fail, int result) {
            boolean fail, int result) {
        int origDefaultLoc = getInstallLoc();
        int origDefaultLoc = getDefaultInstallLoc();
        InstallParams ip = null;
        InstallParams ip = null;
        try {
        try {
            setInstallLoc(PackageHelper.APP_INSTALL_AUTO);
            setInstallLoc(PackageHelper.APP_INSTALL_AUTO);
@@ -1416,7 +1418,7 @@ public class PackageManagerTests extends AndroidTestCase {
        final int result = PackageManager.MOVE_FAILED_DOESNT_EXIST;
        final int result = PackageManager.MOVE_FAILED_DOESNT_EXIST;
        
        
        int rawResId = R.raw.install;
        int rawResId = R.raw.install;
        int origDefaultLoc = getInstallLoc();
        int origDefaultLoc = getDefaultInstallLoc();
        InstallParams ip = null;
        InstallParams ip = null;
        try {
        try {
            PackageManager pm = getPm();
            PackageManager pm = getPm();
@@ -1447,10 +1449,10 @@ public class PackageManagerTests extends AndroidTestCase {
            // Unmount sdcard
            // Unmount sdcard
            assertTrue(unmountMedia());
            assertTrue(unmountMedia());
            // Try to install and make sure an error code is returned.
            // Try to install and make sure an error code is returned.
            assertNull(installFromRawResource("install.apk", R.raw.install,
            installFromRawResource("install.apk", R.raw.install,
                    PackageManager.INSTALL_EXTERNAL, false,
                    PackageManager.INSTALL_EXTERNAL, false,
                    true, PackageManager.INSTALL_FAILED_MEDIA_UNAVAILABLE,
                    true, PackageManager.INSTALL_FAILED_MEDIA_UNAVAILABLE,
                    PackageInfo.INSTALL_LOCATION_AUTO));
                    PackageInfo.INSTALL_LOCATION_AUTO);
        } finally {
        } finally {
            // Restore original media state
            // Restore original media state
            if (origState) {
            if (origState) {
@@ -1470,11 +1472,9 @@ public class PackageManagerTests extends AndroidTestCase {
       try {
       try {
           // Unmount sdcard
           // Unmount sdcard
           assertTrue(unmountMedia());
           assertTrue(unmountMedia());
           // Try to install and make sure an error code is returned.
           InstallParams ip = new InstallParams("install.apk", R.raw.install_loc_sdcard);
           assertNotNull(installFromRawResource("install.apk", R.raw.install_loc_sdcard,
           installFromRawResource(ip, 0, true, false, -1,
                   0, false,
                   PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY);
                   false, -1,
                   PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY));
       } finally {
       } finally {
           // Restore original media state
           // Restore original media state
           if (origState) {
           if (origState) {
@@ -1912,7 +1912,7 @@ public class PackageManagerTests extends AndroidTestCase {
               false,
               false,
               false, -1,
               false, -1,
               PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
               PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
       int origSetting = getInstallLoc();
       int origSetting = getDefaultInstallLoc();
       try {
       try {
           // Set user setting
           // Set user setting
           setInstallLoc(userSetting);
           setInstallLoc(userSetting);
@@ -1976,7 +1976,7 @@ public class PackageManagerTests extends AndroidTestCase {
   }
   }
   private void setUserX(boolean enable, int userSetting, int iloc) {
   private void setUserX(boolean enable, int userSetting, int iloc) {
       boolean origUserSetting = getUserSettingSetInstallLocation();
       boolean origUserSetting = getUserSettingSetInstallLocation();
       int origSetting = getInstallLoc();
       int origSetting = getDefaultInstallLoc();
       try {
       try {
           setUserSettingSetInstallLocation(enable);
           setUserSettingSetInstallLocation(enable);
           // Set user setting
           // Set user setting
@@ -2101,8 +2101,7 @@ public class PackageManagerTests extends AndroidTestCase {
            GenericReceiver receiver = new DeleteReceiver(ip.pkg.packageName);
            GenericReceiver receiver = new DeleteReceiver(ip.pkg.packageName);
           
           
            try {
            try {
                invokeDeletePackage(ip.packageURI, PackageManager.DONT_DELETE_DATA,
                invokeDeletePackage(ip.pkg.packageName, PackageManager.DONT_DELETE_DATA, receiver);
                        ip.pkg.packageName, receiver);
            } catch (Exception e) {
            } catch (Exception e) {
                failStr(e);
                failStr(e);
            }
            }
@@ -2121,8 +2120,7 @@ public class PackageManagerTests extends AndroidTestCase {
            // **: Upon deleting package, are all permissions removed?
            // **: Upon deleting package, are all permissions removed?
           
           
            try {
            try {
                invokeDeletePackage(ip.packageURI, 0,
                invokeDeletePackage(ip.pkg.packageName, 0, receiver);
                        ip.pkg.packageName, receiver);
                ip = null;
                ip = null;
            } catch (Exception e) {
            } catch (Exception e) {
                failStr(e);
                failStr(e);
@@ -2134,8 +2132,7 @@ public class PackageManagerTests extends AndroidTestCase {
           
           
            GenericReceiver receiver2 = new DeleteReceiver(ip2.pkg.packageName);
            GenericReceiver receiver2 = new DeleteReceiver(ip2.pkg.packageName);
            try {
            try {
                invokeDeletePackage(ip2.packageURI, 0,
                invokeDeletePackage(ip2.pkg.packageName, 0, receiver);
                        ip2.pkg.packageName, receiver);
                ip2 = null;
                ip2 = null;
            } catch (Exception e) {
            } catch (Exception e) {
                failStr(e);
                failStr(e);
@@ -2170,8 +2167,7 @@ public class PackageManagerTests extends AndroidTestCase {
            // **: Upon deleting package, are all permissions removed?
            // **: Upon deleting package, are all permissions removed?
            
            
            try {
            try {
                invokeDeletePackage(ip.packageURI, 0,
                invokeDeletePackage(ip.pkg.packageName, 0, receiver);
                        ip.pkg.packageName, receiver);
                ip = null;
                ip = null;
            } catch (Exception e) {
            } catch (Exception e) {
                failStr(e);
                failStr(e);
@@ -2182,8 +2178,7 @@ public class PackageManagerTests extends AndroidTestCase {
            // **: Delete package using permissions; nothing to check here.
            // **: Delete package using permissions; nothing to check here.
            
            
            try {
            try {
                invokeDeletePackage(ip2.packageURI, 0,
                invokeDeletePackage(ip2.pkg.packageName, 0, receiver);
                        ip2.pkg.packageName, receiver);
                ip2 = null;
                ip2 = null;
            } catch (Exception e) {
            } catch (Exception e) {
                failStr(e);
                failStr(e);
@@ -2252,7 +2247,7 @@ public class PackageManagerTests extends AndroidTestCase {
            unmountMedia();
            unmountMedia();
            // Delete the app on sdcard to leave a stale container on sdcard.
            // Delete the app on sdcard to leave a stale container on sdcard.
            GenericReceiver receiver = new DeleteReceiver(pkg.packageName);
            GenericReceiver receiver = new DeleteReceiver(pkg.packageName);
            assertTrue(invokeDeletePackage(packageURI, 0, pkg.packageName, receiver));
            assertTrue(invokeDeletePackage(pkg.packageName, 0, receiver));
            mountMedia();
            mountMedia();
            // Reinstall the app and make sure it gets installed.
            // Reinstall the app and make sure it gets installed.
            installFromRawResource(outFileName, rawResId,
            installFromRawResource(outFileName, rawResId,
+0 −3
Original line number Original line Diff line number Diff line
@@ -346,16 +346,13 @@ public class DefaultContainerService extends IntentService {
                    PackageHelper.APP_INSTALL_AUTO);
                    PackageHelper.APP_INSTALL_AUTO);
            if (installPreference == PackageHelper.APP_INSTALL_INTERNAL) {
            if (installPreference == PackageHelper.APP_INSTALL_INTERNAL) {
                checkInt = true;
                checkInt = true;
                checkBoth = true;
                break check_inner;
                break check_inner;
            } else if (installPreference == PackageHelper.APP_INSTALL_EXTERNAL) {
            } else if (installPreference == PackageHelper.APP_INSTALL_EXTERNAL) {
                checkExt = true;
                checkExt = true;
                checkBoth = true;
                break check_inner;
                break check_inner;
            }
            }
            // Fall back to default policy if nothing else is specified.
            // Fall back to default policy if nothing else is specified.
            checkInt = true;
            checkInt = true;
            checkBoth = true;
        }
        }


        // Package size = code size + cache size + data size
        // Package size = code size + cache size + data size
+0 −1
Original line number Original line Diff line number Diff line
@@ -6113,7 +6113,6 @@ class PackageManagerService extends IPackageManager.Stub {
            this.args = args;
            this.args = args;
            this.deleteOld = deleteOld;
            this.deleteOld = deleteOld;
        }
        }
        @Override
        public void performReceive(Intent intent, int resultCode, String data, Bundle extras,
        public void performReceive(Intent intent, int resultCode, String data, Bundle extras,
                boolean ordered, boolean sticky) throws RemoteException {
                boolean ordered, boolean sticky) throws RemoteException {
            // Force a gc to clear up things
            // Force a gc to clear up things