Add package state to block uninstall.

Add package state to allow profile or device
owners to block uninstall of packages.
Add API to DevicePolicyManager to set/get the
state.

Bug: 14127299
Change-Id: I03528819850b42df7bafa7747bb9e4558d20c4e6
diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java
index 2091c16..f263e07 100644
--- a/services/core/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/core/java/com/android/server/pm/PackageSettingBase.java
@@ -275,10 +275,18 @@
         modifyUserState(userId).blocked = blocked;
     }
 
+    boolean getBlockUninstall(int userId) {
+        return readUserState(userId).blockUninstall;
+    }
+
+    void setBlockUninstall(boolean blockUninstall, int userId) {
+        modifyUserState(userId).blockUninstall = blockUninstall;
+    }
+
     void setUserState(int userId, int enabled, boolean installed, boolean stopped,
             boolean notLaunched, boolean blocked,
             String lastDisableAppCaller, HashSet<String> enabledComponents,
-            HashSet<String> disabledComponents) {
+            HashSet<String> disabledComponents, boolean blockUninstall) {
         PackageUserState state = modifyUserState(userId);
         state.enabled = enabled;
         state.installed = installed;
@@ -288,6 +296,7 @@
         state.lastDisableAppCaller = lastDisableAppCaller;
         state.enabledComponents = enabledComponents;
         state.disabledComponents = disabledComponents;
+        state.blockUninstall = blockUninstall;
     }
 
     HashSet<String> getEnabledComponents(int userId) {