Fix issue #2296457: PackageManager.addPackageToPreferred needs to a no-op

Change-Id: I0d8f75938226e1bb49cf7b1154445631b0bb0bc9
diff --git a/api/current.xml b/api/current.xml
index a60c3a1..1dbe58f 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -976,7 +976,7 @@
  value=""android.permission.SET_PREFERRED_APPLICATIONS""
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -41097,7 +41097,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="packageName" type="java.lang.String">
@@ -41850,7 +41850,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="packageName" type="java.lang.String">
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index e2030be..03d2a6d 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1656,21 +1656,19 @@
             IPackageStatsObserver observer);
 
     /**
-     * Add a new package to the list of preferred packages.  This new package
-     * will be added to the front of the list (removed from its current location
-     * if already listed), meaning it will now be preferred over all other
-     * packages when resolving conflicts.
-     *
-     * @param packageName The package name of the new package to make preferred.
+     * @deprecated This function no longer does anything; it was an old
+     * approach to managing preferred activities, which has been superceeded
+     * (and conflicts with) the modern activity-based preferences.
      */
+    @Deprecated
     public abstract void addPackageToPreferred(String packageName);
 
     /**
-     * Remove a package from the list of preferred packages.  If it was on
-     * the list, it will no longer be preferred over other packages.
-     *
-     * @param packageName The package name to remove.
+     * @deprecated This function no longer does anything; it was an old
+     * approach to managing preferred activities, which has been superceeded
+     * (and conflicts with) the modern activity-based preferences.
      */
+    @Deprecated
     public abstract void removePackageFromPreferred(String packageName);
 
     /**
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 1c3cf3c..0d03ff2 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -597,11 +597,9 @@
         android:label="@string/permlab_getPackageSize"
         android:description="@string/permdesc_getPackageSize" />
 
-    <!-- Allows an application to modify the list of preferred applications
-         with the {@link android.content.pm.PackageManager#addPackageToPreferred
-         PackageManager.addPackageToPreferred()} and
-         {@link android.content.pm.PackageManager#removePackageFromPreferred
-         PackageManager.removePackageFromPreferred()} methods. -->
+    <!-- @deprecated No longer useful, see
+         {@link android.content.pm.PackageManager#addPackageToPreferred}
+         for details. -->
     <permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"
         android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
         android:protectionLevel="dangerous"
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 5ed2d35..9382146 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -2966,12 +2966,6 @@
             TAG, "Removing package " + pkg.applicationInfo.packageName );
 
         synchronized (mPackages) {
-            if (pkg.mPreferredOrder > 0) {
-                mSettings.mPreferredPackages.remove(pkg);
-                pkg.mPreferredOrder = 0;
-                updatePreferredIndicesLP();
-            }
-    
             clearPackagePreferredActivitiesLP(pkg.packageName);
     
             mPackages.remove(pkg.applicationInfo.packageName);
@@ -4938,62 +4932,17 @@
     public void addPackageToPreferred(String packageName) {
         mContext.enforceCallingOrSelfPermission(
                 android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
-
-        synchronized (mPackages) {
-            PackageParser.Package p = mPackages.get(packageName);
-            if (p == null) {
-                return;
-            }
-            PackageSetting ps = (PackageSetting)p.mExtras;
-            if (ps != null) {
-                mSettings.mPreferredPackages.remove(ps);
-                mSettings.mPreferredPackages.add(0, ps);
-                updatePreferredIndicesLP();
-                mSettings.writeLP();
-            }
-        }
+        Log.w(TAG, "addPackageToPreferred: no longer implemented");
     }
 
     public void removePackageFromPreferred(String packageName) {
         mContext.enforceCallingOrSelfPermission(
                 android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
-
-        synchronized (mPackages) {
-            PackageParser.Package p = mPackages.get(packageName);
-            if (p == null) {
-                return;
-            }
-            if (p.mPreferredOrder > 0) {
-                PackageSetting ps = (PackageSetting)p.mExtras;
-                if (ps != null) {
-                    mSettings.mPreferredPackages.remove(ps);
-                    p.mPreferredOrder = 0;
-                    updatePreferredIndicesLP();
-                    mSettings.writeLP();
-                }
-            }
-        }
-    }
-
-    private void updatePreferredIndicesLP() {
-        final ArrayList<PackageSetting> pkgs
-                = mSettings.mPreferredPackages;
-        final int N = pkgs.size();
-        for (int i=0; i<N; i++) {
-            pkgs.get(i).pkg.mPreferredOrder = N - i;
-        }
+        Log.w(TAG, "removePackageFromPreferred: no longer implemented");
     }
 
     public List<PackageInfo> getPreferredPackages(int flags) {
-        synchronized (mPackages) {
-            final ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
-            final ArrayList<PackageSetting> pref = mSettings.mPreferredPackages;
-            final int N = pref.size();
-            for (int i=0; i<N; i++) {
-                res.add(generatePackageInfo(pref.get(i).pkg, flags));
-            }
-            return res;
-        }
+        return new ArrayList<PackageInfo>();
     }
 
     public void addPreferredActivity(IntentFilter filter, int match,
@@ -5307,13 +5256,6 @@
             pw.println("Preferred Activities:");
             mSettings.mPreferredActivities.dump(pw, "  ");
             pw.println(" ");
-            pw.println("Preferred Packages:");
-            {
-                for (PackageSetting ps : mSettings.mPreferredPackages) {
-                    pw.print("  "); pw.println(ps.name);
-                }
-            }
-            pw.println(" ");
             pw.println("Permissions:");
             {
                 for (BasePermission p : mSettings.mPermissions.values()) {
@@ -6064,10 +6006,6 @@
         private final File mBackupSettingsFilename;
         private final HashMap<String, PackageSetting> mPackages =
                 new HashMap<String, PackageSetting>();
-        // The user's preferred packages/applications, in order of preference.
-        // First is the most preferred.
-        private final ArrayList<PackageSetting> mPreferredPackages =
-                new ArrayList<PackageSetting>();
         // List of replaced system applications
         final HashMap<String, PackageSetting> mDisabledSysPackages =
             new HashMap<String, PackageSetting>();
@@ -6112,9 +6050,6 @@
         final HashMap<String, BasePermission> mPermissionTrees =
                 new HashMap<String, BasePermission>();
 
-        private final ArrayList<String> mPendingPreferredPackages
-                = new ArrayList<String>();
-
         private final StringBuilder mReadMessages = new StringBuilder();
 
         private static final class PendingPackage extends PackageSettingBase {
@@ -6598,16 +6533,6 @@
                     writeDisabledSysPackage(serializer, pkg);
                 }
 
-                serializer.startTag(null, "preferred-packages");
-                int N = mPreferredPackages.size();
-                for (int i=0; i<N; i++) {
-                    PackageSetting pkg = mPreferredPackages.get(i);
-                    serializer.startTag(null, "item");
-                    serializer.attribute(null, "name", pkg.name);
-                    serializer.endTag(null, "item");
-                }
-                serializer.endTag(null, "preferred-packages");
-
                 serializer.startTag(null, "preferred-activities");
                 for (PreferredActivity pa : mPreferredActivities.filterSet()) {
                     serializer.startTag(null, "item");
@@ -6885,7 +6810,7 @@
                     } else if (tagName.equals("shared-user")) {
                         readSharedUserLP(parser);
                     } else if (tagName.equals("preferred-packages")) {
-                        readPreferredPackagesLP(parser);
+                        // no longer used.
                     } else if (tagName.equals("preferred-activities")) {
                         readPreferredActivitiesLP(parser);
                     } else if(tagName.equals("updated-package")) {
@@ -6939,19 +6864,6 @@
             }
             mPendingPackages.clear();
 
-            N = mPendingPreferredPackages.size();
-            mPreferredPackages.clear();
-            for (int i=0; i<N; i++) {
-                final String name = mPendingPreferredPackages.get(i);
-                final PackageSetting p = mPackages.get(name);
-                if (p != null) {
-                    mPreferredPackages.add(p);
-                } else {
-                    Log.w(TAG, "Unknown preferred package: " + name);
-                }
-            }
-            mPendingPreferredPackages.clear();
-
             mReadMessages.append("Read completed successfully: "
                     + mPackages.size() + " packages, "
                     + mSharedUsers.size() + " shared uids\n");
@@ -7410,37 +7322,6 @@
             }
         }
 
-        private void readPreferredPackagesLP(XmlPullParser parser)
-                throws XmlPullParserException, IOException {
-            int outerDepth = parser.getDepth();
-            int type;
-            while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
-                   && (type != XmlPullParser.END_TAG
-                           || parser.getDepth() > outerDepth)) {
-                if (type == XmlPullParser.END_TAG
-                        || type == XmlPullParser.TEXT) {
-                    continue;
-                }
-
-                String tagName = parser.getName();
-                if (tagName.equals("item")) {
-                    String name = parser.getAttributeValue(null, "name");
-                    if (name != null) {
-                        mPendingPreferredPackages.add(name);
-                    } else {
-                        reportSettingsProblem(Log.WARN,
-                                "Error in package manager settings: <preferred-package> has no name at "
-                                + parser.getPositionDescription());
-                    }
-                } else {
-                    reportSettingsProblem(Log.WARN,
-                            "Unknown element under <preferred-packages>: "
-                            + parser.getName());
-                }
-                XmlUtils.skipCurrentTag(parser);
-            }
-        }
-
         private void readPreferredActivitiesLP(XmlPullParser parser)
                 throws XmlPullParserException, IOException {
             int outerDepth = parser.getDepth();