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

Commit 26453a29 authored by Rajeev Kumar's avatar Rajeev Kumar
Browse files

Replace use of java.util.HashMap with android.util.ArrayMap in

AutoInstallsLayout, DefaultLayoutParser, ImportDataTask
classes.

Change-Id: Idcf1f5f020132ddf43751067a38a64bfc088800e
Bug: 62466540
parent 5188599a
Loading
Loading
Loading
Loading
+19 −22
Original line number Original line Diff line number Diff line
@@ -30,23 +30,20 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Log;
import android.util.Pair;
import android.util.Pair;
import android.util.Patterns;
import android.util.Patterns;

import com.android.launcher3.LauncherProvider.SqlArguments;
import com.android.launcher3.LauncherProvider.SqlArguments;
import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.graphics.LauncherIcons;
import com.android.launcher3.graphics.LauncherIcons;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.Thunk;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
import java.util.Locale;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;


/**
/**
 * Layout parsing code for auto installs layout
 * Layout parsing code for auto installs layout
@@ -83,7 +80,7 @@ public class AutoInstallsLayout {


        // Try with grid size and hotseat count
        // Try with grid size and hotseat count
        String layoutName = String.format(Locale.ENGLISH, FORMATTED_LAYOUT_RES_WITH_HOSTEAT,
        String layoutName = String.format(Locale.ENGLISH, FORMATTED_LAYOUT_RES_WITH_HOSTEAT,
                (int) grid.numColumns, (int) grid.numRows, (int) grid.numHotseatIcons);
            grid.numColumns, grid.numRows, grid.numHotseatIcons);
        int layoutId = targetRes.getIdentifier(layoutName, "xml", pkg);
        int layoutId = targetRes.getIdentifier(layoutName, "xml", pkg);


        // Try with only grid size
        // Try with only grid size
@@ -91,7 +88,7 @@ public class AutoInstallsLayout {
            Log.d(TAG, "Formatted layout: " + layoutName
            Log.d(TAG, "Formatted layout: " + layoutName
                    + " not found. Trying layout without hosteat");
                    + " not found. Trying layout without hosteat");
            layoutName = String.format(Locale.ENGLISH, FORMATTED_LAYOUT_RES,
            layoutName = String.format(Locale.ENGLISH, FORMATTED_LAYOUT_RES,
                    (int) grid.numColumns, (int) grid.numRows);
                grid.numColumns, grid.numRows);
            layoutId = targetRes.getIdentifier(layoutName, "xml", pkg);
            layoutId = targetRes.getIdentifier(layoutName, "xml", pkg);
        }
        }


@@ -209,7 +206,7 @@ public class AutoInstallsLayout {
        beginDocument(parser, mRootTag);
        beginDocument(parser, mRootTag);
        final int depth = parser.getDepth();
        final int depth = parser.getDepth();
        int type;
        int type;
        HashMap<String, TagParser> tagParserMap = getLayoutElementsMap();
        ArrayMap<String, TagParser> tagParserMap = getLayoutElementsMap();
        int count = 0;
        int count = 0;


        while (((type = parser.next()) != XmlPullParser.END_TAG ||
        while (((type = parser.next()) != XmlPullParser.END_TAG ||
@@ -244,7 +241,7 @@ public class AutoInstallsLayout {
     */
     */
    protected int parseAndAddNode(
    protected int parseAndAddNode(
        XmlResourceParser parser,
        XmlResourceParser parser,
            HashMap<String, TagParser> tagParserMap,
        ArrayMap<String, TagParser> tagParserMap,
        ArrayList<Long> screenIds)
        ArrayList<Long> screenIds)
        throws XmlPullParserException, IOException {
        throws XmlPullParserException, IOException {


@@ -303,16 +300,16 @@ public class AutoInstallsLayout {
        }
        }
    }
    }


    protected HashMap<String, TagParser> getFolderElementsMap() {
    protected ArrayMap<String, TagParser> getFolderElementsMap() {
        HashMap<String, TagParser> parsers = new HashMap<String, TagParser>();
        ArrayMap<String, TagParser> parsers = new ArrayMap<>();
        parsers.put(TAG_APP_ICON, new AppShortcutParser());
        parsers.put(TAG_APP_ICON, new AppShortcutParser());
        parsers.put(TAG_AUTO_INSTALL, new AutoInstallParser());
        parsers.put(TAG_AUTO_INSTALL, new AutoInstallParser());
        parsers.put(TAG_SHORTCUT, new ShortcutParser(mSourceRes));
        parsers.put(TAG_SHORTCUT, new ShortcutParser(mSourceRes));
        return parsers;
        return parsers;
    }
    }


    protected HashMap<String, TagParser> getLayoutElementsMap() {
    protected ArrayMap<String, TagParser> getLayoutElementsMap() {
        HashMap<String, TagParser> parsers = new HashMap<String, TagParser>();
        ArrayMap<String, TagParser> parsers = new ArrayMap<>();
        parsers.put(TAG_APP_ICON, new AppShortcutParser());
        parsers.put(TAG_APP_ICON, new AppShortcutParser());
        parsers.put(TAG_AUTO_INSTALL, new AutoInstallParser());
        parsers.put(TAG_AUTO_INSTALL, new AutoInstallParser());
        parsers.put(TAG_FOLDER, new FolderParser());
        parsers.put(TAG_FOLDER, new FolderParser());
@@ -528,13 +525,13 @@ public class AutoInstallsLayout {
    }
    }


    protected class FolderParser implements TagParser {
    protected class FolderParser implements TagParser {
        private final HashMap<String, TagParser> mFolderElements;
        private final ArrayMap<String, TagParser> mFolderElements;


        public FolderParser() {
        public FolderParser() {
            this(getFolderElementsMap());
            this(getFolderElementsMap());
        }
        }


        public FolderParser(HashMap<String, TagParser> elements) {
        public FolderParser(ArrayMap<String, TagParser> elements) {
            mFolderElements = elements;
            mFolderElements = elements;
        }
        }


@@ -561,7 +558,7 @@ public class AutoInstallsLayout {
            }
            }


            final ContentValues myValues = new ContentValues(mValues);
            final ContentValues myValues = new ContentValues(mValues);
            ArrayList<Long> folderItems = new ArrayList<Long>();
            ArrayList<Long> folderItems = new ArrayList<>();


            int type;
            int type;
            int folderDepth = parser.getDepth();
            int folderDepth = parser.getDepth();
@@ -617,7 +614,7 @@ public class AutoInstallsLayout {
        }
        }
    }
    }


    protected static final void beginDocument(XmlPullParser parser, String firstElementName)
    protected static void beginDocument(XmlPullParser parser, String firstElementName)
            throws XmlPullParserException, IOException {
            throws XmlPullParserException, IOException {
        int type;
        int type;
        while ((type = parser.next()) != XmlPullParser.START_TAG
        while ((type = parser.next()) != XmlPullParser.START_TAG
@@ -671,7 +668,7 @@ public class AutoInstallsLayout {
        return value;
        return value;
    }
    }


    public static interface LayoutParserCallback {
    public interface LayoutParserCallback {
        long generateNewItemId();
        long generateNewItemId();


        long insertAndCheck(SQLiteDatabase db, ContentValues values);
        long insertAndCheck(SQLiteDatabase db, ContentValues values);
+8 −11
Original line number Original line Diff line number Diff line
@@ -13,18 +13,15 @@ import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.os.Bundle;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Log;

import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.Thunk;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.List;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;


/**
/**
 * Implements the layout parser with rules for internal layouts and partner layouts.
 * Implements the layout parser with rules for internal layouts and partner layouts.
@@ -55,20 +52,20 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
    }
    }


    @Override
    @Override
    protected HashMap<String, TagParser> getFolderElementsMap() {
    protected ArrayMap<String, TagParser> getFolderElementsMap() {
        return getFolderElementsMap(mSourceRes);
        return getFolderElementsMap(mSourceRes);
    }
    }


    @Thunk HashMap<String, TagParser> getFolderElementsMap(Resources res) {
    @Thunk ArrayMap<String, TagParser> getFolderElementsMap(Resources res) {
        HashMap<String, TagParser> parsers = new HashMap<String, TagParser>();
        ArrayMap<String, TagParser> parsers = new ArrayMap<>();
        parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
        parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
        parsers.put(TAG_SHORTCUT, new UriShortcutParser(res));
        parsers.put(TAG_SHORTCUT, new UriShortcutParser(res));
        return parsers;
        return parsers;
    }
    }


    @Override
    @Override
    protected HashMap<String, TagParser> getLayoutElementsMap() {
    protected ArrayMap<String, TagParser> getLayoutElementsMap() {
        HashMap<String, TagParser> parsers = new HashMap<String, TagParser>();
        ArrayMap<String, TagParser> parsers = new ArrayMap<>();
        parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
        parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
        parsers.put(TAG_APPWIDGET, new AppWidgetParser());
        parsers.put(TAG_APPWIDGET, new AppWidgetParser());
        parsers.put(TAG_SHORTCUT, new UriShortcutParser(mSourceRes));
        parsers.put(TAG_SHORTCUT, new UriShortcutParser(mSourceRes));
+11 −13
Original line number Original line Diff line number Diff line
@@ -31,9 +31,9 @@ import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.net.Uri;
import android.os.Process;
import android.os.Process;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.LongSparseArray;
import android.util.LongSparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseBooleanArray;

import com.android.launcher3.AutoInstallsLayout.LayoutParserCallback;
import com.android.launcher3.AutoInstallsLayout.LayoutParserCallback;
import com.android.launcher3.DefaultLayoutParser;
import com.android.launcher3.DefaultLayoutParser;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherAppState;
@@ -51,10 +51,8 @@ import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.GridSizeMigrationTask;
import com.android.launcher3.model.GridSizeMigrationTask;
import com.android.launcher3.util.LongArrayMap;
import com.android.launcher3.util.LongArrayMap;

import java.net.URISyntaxException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.HashSet;


/**
/**
@@ -134,7 +132,7 @@ public class ImportDataTask {
        String profileId = Long.toString(UserManagerCompat.getInstance(mContext)
        String profileId = Long.toString(UserManagerCompat.getInstance(mContext)
                .getSerialNumberForUser(Process.myUserHandle()));
                .getSerialNumberForUser(Process.myUserHandle()));


        boolean createEmptyRowOnFirstScreen = false;
        boolean createEmptyRowOnFirstScreen;
        if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
        if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
            try (Cursor c = mContext.getContentResolver().query(mOtherFavoritesUri, null,
            try (Cursor c = mContext.getContentResolver().query(mOtherFavoritesUri, null,
                    // get items on the first row of the first screen
                    // get items on the first row of the first screen
@@ -326,7 +324,7 @@ public class ImportDataTask {
        }
        }
    }
    }


    private static final String getPackage(Intent intent) {
    private static String getPackage(Intent intent) {
        return intent.getComponent() != null ? intent.getComponent().getPackageName()
        return intent.getComponent() != null ? intent.getComponent().getPackageName()
            : intent.getPackage();
            : intent.getPackage();
    }
    }
@@ -378,7 +376,7 @@ public class ImportDataTask {
        return false;
        return false;
    }
    }


    private static final int getMyHotseatLayoutId(Context context) {
    private static int getMyHotseatLayoutId(Context context) {
        return LauncherAppState.getIDP(context).numHotseatIcons <= 5
        return LauncherAppState.getIDP(context).numHotseatIcons <= 5
                ? R.xml.dw_phone_hotseat
                ? R.xml.dw_phone_hotseat
                : R.xml.dw_tablet_hotseat;
                : R.xml.dw_tablet_hotseat;
@@ -393,9 +391,9 @@ public class ImportDataTask {
        }
        }


        @Override
        @Override
        protected HashMap<String, TagParser> getLayoutElementsMap() {
        protected ArrayMap<String, TagParser> getLayoutElementsMap() {
            // Only allow shortcut parsers
            // Only allow shortcut parsers
            HashMap<String, TagParser> parsers = new HashMap<String, TagParser>();
            ArrayMap<String, TagParser> parsers = new ArrayMap<>();
            parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
            parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
            parsers.put(TAG_SHORTCUT, new UriShortcutParser(mSourceRes));
            parsers.put(TAG_SHORTCUT, new UriShortcutParser(mSourceRes));
            parsers.put(TAG_RESOLVE, new ResolveParser());
            parsers.put(TAG_RESOLVE, new ResolveParser());
@@ -407,7 +405,7 @@ public class ImportDataTask {
     * {@link LayoutParserCallback} which adds items in empty hotseat spots.
     * {@link LayoutParserCallback} which adds items in empty hotseat spots.
     */
     */
    private static class HotseatParserCallback implements LayoutParserCallback {
    private static class HotseatParserCallback implements LayoutParserCallback {
        private final HashSet<String> mExisitingApps;
        private final HashSet<String> mExistingApps;
        private final LongArrayMap<Object> mExistingItems;
        private final LongArrayMap<Object> mExistingItems;
        private final ArrayList<ContentProviderOperation> mOutOps;
        private final ArrayList<ContentProviderOperation> mOutOps;
        private final int mRequiredSize;
        private final int mRequiredSize;
@@ -416,7 +414,7 @@ public class ImportDataTask {
        HotseatParserCallback(
        HotseatParserCallback(
                HashSet<String> existingApps, LongArrayMap<Object> existingItems,
                HashSet<String> existingApps, LongArrayMap<Object> existingItems,
                ArrayList<ContentProviderOperation> outOps, int startItemId, int requiredSize) {
                ArrayList<ContentProviderOperation> outOps, int startItemId, int requiredSize) {
            mExisitingApps = existingApps;
            mExistingApps = existingApps;
            mExistingItems = existingItems;
            mExistingItems = existingItems;
            mOutOps = outOps;
            mOutOps = outOps;
            mRequiredSize = requiredSize;
            mRequiredSize = requiredSize;
@@ -441,11 +439,11 @@ public class ImportDataTask {
                return 0;
                return 0;
            }
            }
            String pkg = getPackage(intent);
            String pkg = getPackage(intent);
            if (pkg == null || mExisitingApps.contains(pkg)) {
            if (pkg == null || mExistingApps.contains(pkg)) {
                // The item does not target an app or is already in hotseat.
                // The item does not target an app or is already in hotseat.
                return 0;
                return 0;
            }
            }
            mExisitingApps.add(pkg);
            mExistingApps.add(pkg);


            // find next vacant spot.
            // find next vacant spot.
            long screen = 0;
            long screen = 0;