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

Commit 0b63b9fb authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 5886050f: Merge change I0d8f7593 into eclair

Merge commit '5886050f' into eclair-plus-aosp

* commit '5886050f':
  Fix issue #2296457: PackageManager.addPackageToPreferred needs to a no-op
parents 6f762b2d 5886050f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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">
+8 −10
Original line number Diff line number Diff line
@@ -1656,21 +1656,19 @@ public abstract class PackageManager {
            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);

    /**
+3 −5
Original line number Diff line number Diff line
@@ -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"
+4 −123
Original line number Diff line number Diff line
@@ -2966,12 +2966,6 @@ class PackageManagerService extends IPackageManager.Stub {
            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 @@ class PackageManagerService extends IPackageManager.Stub {
    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 @@ class PackageManagerService extends IPackageManager.Stub {
            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 @@ class PackageManagerService extends IPackageManager.Stub {
        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 @@ class PackageManagerService extends IPackageManager.Stub {
        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 @@ class PackageManagerService extends IPackageManager.Stub {
                    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 @@ class PackageManagerService extends IPackageManager.Stub {
                    } 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 @@ class PackageManagerService extends IPackageManager.Stub {
            }
            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 @@ class PackageManagerService extends IPackageManager.Stub {
            }
        }

        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();