From 089262dc022d87e31eefc536025be6c015c7ebde Mon Sep 17 00:00:00 2001 From: Suchi Amalapurapu Date: Wed, 10 Mar 2010 14:19:21 -0800 Subject: [PATCH] Dont include code size for apps on sdcard. Use constants defined in PackageHelper for user preferences to install auto, internal, external. Set default install location to external. Update settings db version number Change-Id: Ib5110c9377990e20a48cee923e55898dfddfd1e6 --- cmds/installd/commands.c | 9 ++++++ .../internal/content/PackageHelper.java | 4 +++ .../defcontainer/DefaultContainerService.java | 6 ++-- .../SettingsProvider/res/values/defaults.xml | 4 ++- .../providers/settings/DatabaseHelper.java | 28 ++++++++++++++++--- .../unit_tests/PackageManagerTests.java | 8 ++++-- 6 files changed, 48 insertions(+), 11 deletions(-) diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c index c8d1397785bca..654ee68fcd53d 100644 --- a/cmds/installd/commands.c +++ b/cmds/installd/commands.c @@ -404,6 +404,15 @@ int get_size(const char *pkgname, const char *apkpath, } } + /* count the source apk as code -- but only if it's not + * installed on the sdcard + */ + if (strncmp(apkpath, SDCARD_DIR_PREFIX, 7) != 0) { + if (stat(apkpath, &s) == 0) { + codesize += stat_size(&s); + } + } + /* count the cached dexfile as code */ if (!create_cache_path(path, apkpath)) { diff --git a/core/java/com/android/internal/content/PackageHelper.java b/core/java/com/android/internal/content/PackageHelper.java index de6a1758e6049..80efca4da04da 100644 --- a/core/java/com/android/internal/content/PackageHelper.java +++ b/core/java/com/android/internal/content/PackageHelper.java @@ -40,6 +40,10 @@ public class PackageHelper { public static final int RECOMMEND_FAILED_ALREADY_EXISTS = -4; private static final boolean localLOGV = true; private static final String TAG = "PackageHelper"; + // App installation location settings values + public static final int APP_INSTALL_AUTO = 0; + public static final int APP_INSTALL_INTERNAL = 1; + public static final int APP_INSTALL_EXTERNAL = 2; public static IMountService getMountService() { IBinder service = ServiceManager.getService("mount"); diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index 4635f488c76c4..7714911514cdb 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -349,11 +349,11 @@ public class DefaultContainerService extends IntentService { int installPreference = Settings.System.getInt(getApplicationContext() .getContentResolver(), Settings.System.DEFAULT_INSTALL_LOCATION, - PackageInfo.INSTALL_LOCATION_AUTO); - if (installPreference == 1) { + PackageHelper.APP_INSTALL_AUTO); + if (installPreference == PackageHelper.APP_INSTALL_INTERNAL) { installOnlyInternal = true; auto = false; - } else if (installPreference == 2) { + } else if (installPreference == PackageHelper.APP_INSTALL_EXTERNAL) { installOnlyOnSd = true; auto = false; } diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml index 64bb0efb49bb9..34302c4792abe 100644 --- a/packages/SettingsProvider/res/values/defaults.xml +++ b/packages/SettingsProvider/res/values/defaults.xml @@ -56,7 +56,10 @@ false true true + true + + 2 1 @@ -72,5 +75,4 @@ true - diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index edf3923dd30e0..ba66dc5632f55 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -61,7 +61,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' // is properly propagated through your change. Not doing so will result in a loss of user // settings. - private static final int DATABASE_VERSION = 53; + private static final int DATABASE_VERSION = 54; private Context mContext; @@ -650,6 +650,25 @@ public class DatabaseHelper extends SQLiteOpenHelper { upgradeVersion = 53; } + + if (upgradeVersion == 53) { + /* + * New settings for set install location UI. + */ + db.beginTransaction(); + try { + SQLiteStatement stmt = db.compileStatement("INSERT INTO system(name,value)" + + " VALUES(?,?);"); + loadIntegerSetting(stmt, Settings.System.DEFAULT_INSTALL_LOCATION, + R.integer.def_install_location); + stmt.close(); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + upgradeVersion = 54; + } // *** Remember to update DATABASE_VERSION above! @@ -943,9 +962,10 @@ public class DatabaseHelper extends SQLiteOpenHelper { loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, R.bool.def_notification_pulse); - loadBooleanSetting(stmt, Settings.System.SET_INSTALL_LOCATION, R.bool.set_install_location); - loadSetting(stmt, Settings.System.DEFAULT_INSTALL_LOCATION, - PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY); + loadBooleanSetting(stmt, Settings.System.SET_INSTALL_LOCATION, + R.bool.set_install_location); + loadIntegerSetting(stmt, Settings.System.DEFAULT_INSTALL_LOCATION, + R.integer.def_install_location); loadUISoundEffectsSettings(stmt); diff --git a/tests/AndroidTests/src/com/android/unit_tests/PackageManagerTests.java b/tests/AndroidTests/src/com/android/unit_tests/PackageManagerTests.java index d4435d35a8f2e..8c8b00cb224d1 100755 --- a/tests/AndroidTests/src/com/android/unit_tests/PackageManagerTests.java +++ b/tests/AndroidTests/src/com/android/unit_tests/PackageManagerTests.java @@ -16,6 +16,8 @@ package com.android.unit_tests; +import com.android.internal.content.PackageHelper; + import android.os.storage.IMountService.Stub; import android.net.Uri; @@ -73,9 +75,9 @@ public class PackageManagerTests extends AndroidTestCase { public final long MAX_WAIT_TIME=120*1000; public final long WAIT_TIME_INCR=20*1000; private static final String SECURE_CONTAINERS_PREFIX = "/mnt/asec"; - private static final int APP_INSTALL_AUTO = 0; - private static final int APP_INSTALL_DEVICE = 1; - private static final int APP_INSTALL_SDCARD = 2; + private static final int APP_INSTALL_AUTO = PackageHelper.APP_INSTALL_AUTO; + private static final int APP_INSTALL_DEVICE = PackageHelper.APP_INSTALL_INTERNAL; + private static final int APP_INSTALL_SDCARD = PackageHelper.APP_INSTALL_EXTERNAL; void failStr(String errMsg) { Log.w(TAG, "errMsg="+errMsg);