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

Commit 1a825e4a authored by Anna Zappone's avatar Anna Zappone Committed by Automerger Merge Worker
Browse files

Merge "Store PeopleSpaceTile in-memory" into sc-dev am: ff09af37

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14441817

Change-Id: I19c18b5df7a2e7cb2000f39bf215d2b75832a320
parents db473ca7 ff09af37
Loading
Loading
Loading
Loading
+0 −36
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.people.widget;

import static com.android.systemui.people.PeopleSpaceUtils.DEBUG;
import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_KEY;
import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_STRING;
import static com.android.systemui.people.PeopleSpaceUtils.INVALID_USER_ID;
@@ -24,38 +23,13 @@ import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME;
import static com.android.systemui.people.PeopleSpaceUtils.SHORTCUT_ID;
import static com.android.systemui.people.PeopleSpaceUtils.USER_ID;

import android.app.people.PeopleSpaceTile;
import android.appwidget.AppWidgetManager;
import android.os.Bundle;
import android.util.Log;

/** Helper class encapsulating AppWidgetOptions for People Tile. */
public class AppWidgetOptionsHelper {
    private static final String TAG = "AppWidgetOptionsHelper";

    /** Key to store {@link PeopleSpaceTile} in AppWidgetOptions Bundle. */
    public static final String OPTIONS_PEOPLE_TILE = "options_people_tile";

    /** Sets {@link PeopleSpaceTile} in AppWidgetOptions. */
    public static Bundle setPeopleTile(AppWidgetManager appWidgetManager, int appWidgetId,
            PeopleSpaceTile tile) {
        Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
        if (tile == null) {
            if (DEBUG) Log.w(TAG, "Requested to store null tile");
            return options;
        }
        options.putParcelable(OPTIONS_PEOPLE_TILE, tile);
        appWidgetManager.updateAppWidgetOptions(appWidgetId, options);
        return options;
    }

    /** Gets {@link PeopleSpaceTile} from AppWidgetOptions. */
    public static PeopleSpaceTile getPeopleTile(AppWidgetManager appWidgetManager,
            int appWidgetId) {
        Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
        return options != null ? options.getParcelable(OPTIONS_PEOPLE_TILE) : null;
    }

    /** Sets {@link PeopleTileKey} in AppWidgetOptions. */
    public static void setPeopleTileKey(AppWidgetManager appWidgetManager, int appWidgetId,
            PeopleTileKey key) {
@@ -66,16 +40,6 @@ public class AppWidgetOptionsHelper {
        appWidgetManager.updateAppWidgetOptions(appWidgetId, options);
    }

    /** Gets {@link PeopleTileKey} from AppWidgetOptions. */
    public static PeopleTileKey getPeopleTileKey(AppWidgetManager appWidgetManager,
            int appWidgetId) {
        Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
        if (options == null) {
            return EMPTY_KEY;
        }
        return getPeopleTileKeyFromBundle(options);
    }

    /** Gets {@link PeopleTileKey} from Bundle {@code options}. */
    public static PeopleTileKey getPeopleTileKeyFromBundle(Bundle options) {
        String pkg = options.getString(PACKAGE_NAME, EMPTY_STRING);
+17 −6
Original line number Diff line number Diff line
@@ -136,6 +136,9 @@ public class PeopleSpaceWidgetManager {
    private Map<String, Set<String>> mNotificationKeyToWidgetIdsMatchedByUri = new HashMap<>();
    private boolean mRegisteredReceivers;

    @GuardedBy("mLock")
    public static Map<Integer, PeopleSpaceTile> mTiles = new HashMap<>();

    @Inject
    public PeopleSpaceWidgetManager(Context context, LauncherApps launcherApps,
            NotificationEntryManager notificationEntryManager,
@@ -252,8 +255,7 @@ public class PeopleSpaceWidgetManager {
            if (tile == null) {
                Log.e(TAG, "Matching conversation not found for shortcut ID");
            }
            Bundle options = mAppWidgetManager.getAppWidgetOptions(appWidgetId);
            updateAppWidgetViews(appWidgetId, tile, options);
            updateAppWidgetOptionsAndView(appWidgetId, tile);
            widgetIdToTile.put(appWidgetId, tile);
            if (tile != null) {
                registerConversationListenerIfNeeded(appWidgetId,
@@ -289,7 +291,14 @@ public class PeopleSpaceWidgetManager {

    /** Updates tile in app widget options and the current view. */
    public void updateAppWidgetOptionsAndView(int appWidgetId, PeopleSpaceTile tile) {
        Bundle options = AppWidgetOptionsHelper.setPeopleTile(mAppWidgetManager, appWidgetId, tile);
        if (tile == null) {
            if (DEBUG) Log.w(TAG, "Requested to store null tile");
            return;
        }
        synchronized (mTiles) {
            mTiles.put(appWidgetId, tile);
        }
        Bundle options = mAppWidgetManager.getAppWidgetOptions(appWidgetId);
        updateAppWidgetViews(appWidgetId, tile, options);
    }

@@ -299,8 +308,11 @@ public class PeopleSpaceWidgetManager {
     */
    @Nullable
    public PeopleSpaceTile getTileForExistingWidget(int appWidgetId) {
        // First, check if tile is cached in AppWidgetOptions.
        PeopleSpaceTile tile = AppWidgetOptionsHelper.getPeopleTile(mAppWidgetManager, appWidgetId);
        // First, check if tile is cached in memory.
        PeopleSpaceTile tile;
        synchronized (mTiles) {
            tile = mTiles.get(appWidgetId);
        }
        if (tile != null) {
            if (DEBUG) Log.d(TAG, "People Tile is cached for widget: " + appWidgetId);
            return tile;
@@ -781,7 +793,6 @@ public class PeopleSpaceWidgetManager {
        } catch (Exception e) {
            Log.w(TAG, "Exception caching shortcut:" + e);
        }

        updateAppWidgetOptionsAndView(appWidgetId, tile);
    }

+0 −2
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui.people;

import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME;
import static com.android.systemui.people.widget.AppWidgetOptionsHelper.OPTIONS_PEOPLE_TILE;

import static com.google.common.truth.Truth.assertThat;

@@ -200,7 +199,6 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase {

        int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
        mOptions = new Bundle();
        mOptions.putParcelable(OPTIONS_PEOPLE_TILE, PERSON_TILE);

        when(mIAppWidgetService.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
        when(mAppWidgetManager.getAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT)))
+0 −2
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import static android.appwidget.AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH;

import static com.android.systemui.people.PeopleSpaceUtils.STARRED_CONTACT;
import static com.android.systemui.people.PeopleSpaceUtils.VALID_CONTACT;
import static com.android.systemui.people.widget.AppWidgetOptionsHelper.OPTIONS_PEOPLE_TILE;

import static com.google.common.truth.Truth.assertThat;

@@ -140,7 +139,6 @@ public class PeopleTileViewHelperTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);

        mOptions = new Bundle();
        mOptions.putParcelable(OPTIONS_PEOPLE_TILE, PERSON_TILE);

        when(mMockContext.getString(R.string.birthday_status)).thenReturn(
                mContext.getString(R.string.birthday_status));
+28 −178

File changed.

Preview size limit exceeded, changes collapsed.