Refactor shortcut updating, and do it on BOOT_COMPLETE

This CL shuffles quite a bit of code around, but the effective differences are:
* Unified shortcut updating code (language switch & backup restoration).
* Shortcuts are also updated on boot (flagged by MODES_UI which will need this).
* Removed usage of (long obsolete) AsyncTask.

A further CL will add some special-casing for the DND->Modes shortcut transition.

Bug: 365545604
Test: atest com.android.settings.shortcut + manual (switch language, reboot)
Flag: android.app.modes_ui
Change-Id: I30450d13cb05008d2a71ed89d4781eb81e5532b9
This commit is contained in:
Matías Hernández
2024-09-11 18:36:47 +02:00
parent b979edf1f8
commit 939189bde8
10 changed files with 298 additions and 161 deletions

View File

@@ -16,6 +16,8 @@
package com.android.settings.localepicker;
import static com.google.common.base.Preconditions.checkNotNull;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.graphics.Canvas;
@@ -41,7 +43,8 @@ import com.android.internal.app.LocalePicker;
import com.android.internal.app.LocaleStore;
import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.shortcut.ShortcutsUpdateTask;
import com.android.settings.shortcut.ShortcutsUpdater;
import com.android.settingslib.utils.ThreadUtils;
import java.text.NumberFormat;
import java.util.ArrayList;
@@ -94,7 +97,7 @@ class LocaleDragAndDropAdapter
LocaleDragAndDropAdapter(LocaleListEditor parent, List<LocaleStore.LocaleInfo> feedItemList) {
mFeedItemList = feedItemList;
mCacheItemList = new ArrayList<>(feedItemList);
mContext = parent.getContext();
mContext = checkNotNull(parent.getContext());
final float dragElevation = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8,
mContext.getResources().getDisplayMetrics());
@@ -347,7 +350,8 @@ class LocaleDragAndDropAdapter
LocalePicker.updateLocales(mLocalesToSetNext);
mLocalesSetLast = mLocalesToSetNext;
new ShortcutsUpdateTask(mContext).execute();
ThreadUtils.postOnBackgroundThread(
() -> ShortcutsUpdater.updatePinnedShortcuts(mContext));
mLocalesToSetNext = null;