diff options
5 files changed, 19 insertions, 11 deletions
diff --git a/aconfig/FeatureFlags.aconfig b/aconfig/FeatureFlags.aconfig index bf6109a8..db595327 100644 --- a/aconfig/FeatureFlags.aconfig +++ b/aconfig/FeatureFlags.aconfig @@ -26,7 +26,7 @@ flag { } flag { - name: "fix_shortcuts_flashing" + name: "fix_shortcuts_flashing_fixed" namespace: "intentresolver" description: "Do not flash shortcuts on payload selection change" bug: "343300158" diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java index d81adfba..d4cf82ff 100644 --- a/java/src/com/android/intentresolver/ChooserActivity.java +++ b/java/src/com/android/intentresolver/ChooserActivity.java @@ -23,7 +23,7 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE import static androidx.lifecycle.LifecycleKt.getCoroutineScope; import static com.android.intentresolver.ChooserActionFactory.EDIT_SOURCE; -import static com.android.intentresolver.Flags.fixShortcutsFlashing; +import static com.android.intentresolver.Flags.fixShortcutsFlashingFixed; import static com.android.intentresolver.Flags.interactiveSession; import static com.android.intentresolver.Flags.keyboardNavigationFix; import static com.android.intentresolver.Flags.rebuildAdaptersOnTargetPinning; @@ -871,7 +871,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements postRebuildList( mChooserMultiProfilePagerAdapter.rebuildTabs( mProfiles.getWorkProfilePresent() || mProfiles.getPrivateProfilePresent())); - if (fixShortcutsFlashing() && oldPagerAdapter != null) { + if (fixShortcutsFlashingFixed() && oldPagerAdapter != null) { for (int i = 0, count = mChooserMultiProfilePagerAdapter.getCount(); i < count; i++) { ChooserListAdapter listAdapter = mChooserMultiProfilePagerAdapter.getPageAdapterForIndex(i) @@ -2497,7 +2497,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements if (duration >= 0) { Log.d(TAG, "app target loading time " + duration + " ms"); } - if (!fixShortcutsFlashing()) { + if (!fixShortcutsFlashingFixed()) { addCallerChooserTargets(chooserListAdapter); } getEventLog().logSharesheetAppLoadComplete(); @@ -2529,8 +2529,9 @@ public class ChooserActivity extends Hilt_ChooserActivity implements ChooserListAdapter adapter = mChooserMultiProfilePagerAdapter.getListAdapterForUserHandle(userHandle); if (adapter != null) { - if (fixShortcutsFlashing()) { + if (fixShortcutsFlashingFixed()) { adapter.setDirectTargetsEnabled(true); + adapter.resetDirectTargets(); addCallerChooserTargets(adapter); } for (ShortcutLoader.ShortcutResultInfo resultInfo : result.getShortcutsByApp()) { diff --git a/java/src/com/android/intentresolver/ChooserListAdapter.java b/java/src/com/android/intentresolver/ChooserListAdapter.java index 563d7d1a..d743f859 100644 --- a/java/src/com/android/intentresolver/ChooserListAdapter.java +++ b/java/src/com/android/intentresolver/ChooserListAdapter.java @@ -811,6 +811,13 @@ public class ChooserListAdapter extends ResolverListAdapter { mServiceTargets.addAll(adapter.mServiceTargets); } + /** + * Reset direct targets + */ + public void resetDirectTargets() { + createPlaceHolders(); + } + private boolean isDirectTargetRowEmptyState() { return (mServiceTargets.size() == 1) && mServiceTargets.get(0).isEmptyTargetInfo(); } diff --git a/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt b/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt index 41f838ee..aa1f385f 100644 --- a/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt +++ b/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt @@ -35,7 +35,7 @@ import androidx.annotation.MainThread import androidx.annotation.OpenForTesting import androidx.annotation.VisibleForTesting import androidx.annotation.WorkerThread -import com.android.intentresolver.Flags.fixShortcutsFlashing +import com.android.intentresolver.Flags.fixShortcutsFlashingFixed import com.android.intentresolver.chooser.DisplayResolveInfo import com.android.intentresolver.measurements.Tracer import com.android.intentresolver.measurements.runTracing @@ -189,7 +189,7 @@ constructor( Log.d(TAG, "[$id] query AppPredictor for user $userHandle") val watchdogJob = - if (fixShortcutsFlashing()) { + if (fixShortcutsFlashingFixed()) { scope .launch(start = CoroutineStart.LAZY) { delay(APP_PREDICTOR_RESPONSE_TIMEOUT_MS) diff --git a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt index 8167f610..eb5297b4 100644 --- a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt +++ b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt @@ -30,7 +30,7 @@ import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import androidx.test.filters.SmallTest -import com.android.intentresolver.Flags.FLAG_FIX_SHORTCUTS_FLASHING +import com.android.intentresolver.Flags.FLAG_FIX_SHORTCUTS_FLASHING_FIXED import com.android.intentresolver.chooser.DisplayResolveInfo import com.android.intentresolver.createAppTarget import com.android.intentresolver.createShareShortcutInfo @@ -324,7 +324,7 @@ class ShortcutLoaderTest { } @Test - @DisableFlags(FLAG_FIX_SHORTCUTS_FLASHING) + @DisableFlags(FLAG_FIX_SHORTCUTS_FLASHING_FIXED) fun test_appPredictorNotResponding_noCallbackFromShortcutLoader() { scope.runTest { val shortcutManagerResult = @@ -360,7 +360,7 @@ class ShortcutLoaderTest { } @Test - @EnableFlags(FLAG_FIX_SHORTCUTS_FLASHING) + @EnableFlags(FLAG_FIX_SHORTCUTS_FLASHING_FIXED) fun test_appPredictorNotResponding_timeoutAndFallbackToShortcutManager() { scope.runTest { val testSubject = @@ -398,7 +398,7 @@ class ShortcutLoaderTest { } @Test - @EnableFlags(FLAG_FIX_SHORTCUTS_FLASHING) + @EnableFlags(FLAG_FIX_SHORTCUTS_FLASHING_FIXED) fun test_appPredictorResponding_appPredictorTimeoutJobIsCancelled() { scope.runTest { val shortcutManagerResult = |