Don't show quick settings tooltip if the user is in the Setup Wizard,
since the user can't access the Quick Settings Panel.

Bug: 294560581
Test: manual
- Turn on feature flag: adb shell device_config put accessibility com.android.settings.accessibility.remove_qs_tooltip_in_suw true
- Modify the font scale in SUW, verify the QS tooltip doesn't show up
- Modify the font scale after SUW, verify the QS tooltip shows up
Test: atest SettingsRoboTests:com.android.settings.accessibility

Change-Id: I1d1a4f8f70ea3e1d929952d5c273de1b4cd80503
diff --git a/Android.bp b/Android.bp
index 0777aa7..2699c38 100644
--- a/Android.bp
+++ b/Android.bp
@@ -89,6 +89,7 @@
         "SettingsLib",
         "SettingsLibActivityEmbedding",
         "aconfig_settings_flags_lib",
+        "accessibility_settings_flags_lib",
         "app-usage-event-protos-lite",
         "battery-event-protos-lite",
         "battery-usage-slot-protos-lite",
diff --git a/aconfig/Android.bp b/aconfig/Android.bp
index 37b03ba..de6d0af 100644
--- a/aconfig/Android.bp
+++ b/aconfig/Android.bp
@@ -35,4 +35,15 @@
 java_aconfig_library {
     name: "MediaDrmSettingsFlagsLib",
     aconfig_declarations: "media_drm_flags",
-}
\ No newline at end of file
+}
+
+aconfig_declarations {
+    name: "accessibility_flags",
+    package: "com.android.settings.accessibility",
+    srcs: ["accessibility/*.aconfig"],
+}
+
+java_aconfig_library {
+    name: "accessibility_settings_flags_lib",
+    aconfig_declarations: "accessibility_flags",
+}
diff --git a/aconfig/accessibility/OWNERS b/aconfig/accessibility/OWNERS
new file mode 100644
index 0000000..7a76c21
--- /dev/null
+++ b/aconfig/accessibility/OWNERS
@@ -0,0 +1 @@
+include /src/com/android/settings/accessibility/OWNERS
diff --git a/aconfig/accessibility/accessibility_flags.aconfig b/aconfig/accessibility/accessibility_flags.aconfig
new file mode 100644
index 0000000..7f1f909
--- /dev/null
+++ b/aconfig/accessibility/accessibility_flags.aconfig
@@ -0,0 +1,10 @@
+package: "com.android.settings.accessibility"
+
+# NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
+
+flag {
+  name: "remove_qs_tooltip_in_suw"
+  namespace: "accessibility"
+  description: "Don't show quick settings tooltip in SUW, since the user can't use quick settings there."
+  bug: "294560581"
+}
\ No newline at end of file
diff --git a/aconfig/settings_accessibility_flag_declarations.aconfig b/aconfig/settings_accessibility_flag_declarations_legacy.aconfig
similarity index 86%
rename from aconfig/settings_accessibility_flag_declarations.aconfig
rename to aconfig/settings_accessibility_flag_declarations_legacy.aconfig
index 246f983..acdce96 100644
--- a/aconfig/settings_accessibility_flag_declarations.aconfig
+++ b/aconfig/settings_accessibility_flag_declarations_legacy.aconfig
@@ -1,5 +1,8 @@
 package: "com.android.settings.flags"
 
+# NOTE: Don't add new accessibility flags here, since the package name doesn't follow
+# the best practice for setting's feature flag go/settings-trunk-stable
+
 # NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
 
 # NOTE: All Settings flags share the same Flags class, so prefix our
diff --git a/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java b/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java
index 6bd8747..f268a40 100644
--- a/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java
+++ b/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.accessibility;
 
+import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
 import android.os.Bundle;
@@ -33,6 +34,8 @@
 import com.android.settingslib.core.lifecycle.events.OnDestroy;
 import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 import java.util.Optional;
 
 /**
@@ -207,6 +210,13 @@
             return;
         }
 
+        if (Flags.removeQsTooltipInSuw()
+                && mContext instanceof Activity
+                && WizardManagerHelper.isAnySetupWizard(((Activity) mContext).getIntent())) {
+            // Don't show QuickSettingsTooltip in Setup Wizard
+            return;
+        }
+
         if (!mNeedsQSTooltipReshow && AccessibilityQuickSettingUtils.hasValueInSharedPreferences(
                 mContext, tileComponentName)) {
             // Returns if quick settings tooltip only show once.
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 427cad9..c76bb8b 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -905,6 +905,14 @@
             return;
         }
 
+        Activity activity = getActivity();
+        if (com.android.settings.accessibility.Flags.removeQsTooltipInSuw()
+                && activity != null
+                && WizardManagerHelper.isAnySetupWizard(activity.getIntent())) {
+            // Don't show QuickSettingsTooltip in Setup Wizard
+            return;
+        }
+
         if (!mNeedsQSTooltipReshow && AccessibilityQuickSettingUtils.hasValueInSharedPreferences(
                 getContext(), tileComponentName)) {
             // Returns if quick settings tooltip only show once.
diff --git a/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java
index 87cd544..14306e0 100644
--- a/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java
@@ -26,31 +26,39 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.Activity;
 import android.content.ComponentName;
-import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 import android.view.LayoutInflater;
 import android.widget.PopupWindow;
 import android.widget.SeekBar;
 
+import androidx.fragment.app.testing.EmptyFragmentActivity;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
 import androidx.preference.PreferenceViewHolder;
 import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.rules.ActivityScenarioRule;
 
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.testutils.shadow.ShadowFragment;
-import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
 import com.android.settings.widget.LabeledSeekBarPreference;
+import com.android.settingslib.testutils.shadow.ShadowInteractionJankMonitor;
+
+import com.google.android.setupcompat.util.WizardManagerHelper;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.mockito.Spy;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.annotation.LooperMode;
@@ -64,10 +72,16 @@
 @LooperMode(LooperMode.Mode.LEGACY)
 @Config(shadows = {ShadowInteractionJankMonitor.class})
 public class PreviewSizeSeekBarControllerTest {
+
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
+    @Rule
+    public ActivityScenarioRule<EmptyFragmentActivity> rule =
+            new ActivityScenarioRule<>(EmptyFragmentActivity.class);
     private static final String FONT_SIZE_KEY = "font_size";
     private static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
-    @Spy
-    private final Context mContext = ApplicationProvider.getApplicationContext();
+    private Activity mContext;
     private PreviewSizeSeekBarController mSeekBarController;
     private FontSizeData mFontSizeData;
     private LabeledSeekBarPreference mSeekBarPreference;
@@ -91,7 +105,9 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        ShadowInteractionJankMonitor.reset();
 
+        rule.getScenario().onActivity(activity -> mContext = activity);
         mContext.setTheme(androidx.appcompat.R.style.Theme_AppCompat);
         mFragment = spy(new TestFragment());
         when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager);
@@ -197,6 +213,24 @@
     }
 
     @Test
+    @RequiresFlagsEnabled(Flags.FLAG_REMOVE_QS_TOOLTIP_IN_SUW)
+    public void onProgressChanged_inSuw_toolTipShouldNotShown() {
+        Intent intent = mContext.getIntent();
+        intent.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true);
+        mContext.setIntent(intent);
+        mSeekBarController.displayPreference(mPreferenceScreen);
+
+        // Simulate changing the progress for the first time
+        int newProgress = (mSeekBarPreference.getProgress() != 0) ? 0 : mSeekBarPreference.getMax();
+        mSeekBarPreference.setProgress(newProgress);
+        mSeekBarPreference.onProgressChanged(new SeekBar(mContext),
+                newProgress,
+                /* fromUser= */ false);
+
+        assertThat(getLatestPopupWindow()).isNull();
+    }
+
+    @Test
     public void onProgressChanged_tooltipViewHasBeenShown_notShowTooltipView() {
         mSeekBarController.displayPreference(mPreferenceScreen);
         // Simulate changing the progress for the first time
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
index 66211a2..2c59c26 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
@@ -60,6 +60,8 @@
 import com.android.settings.testutils.shadow.ShadowFragment;
 import com.android.settingslib.widget.TopIntroPreference;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -302,6 +304,20 @@
     }
 
     @Test
+    @RequiresFlagsEnabled(com.android.settings.accessibility.Flags.FLAG_REMOVE_QS_TOOLTIP_IN_SUW)
+    @Config(shadows = ShadowFragment.class)
+    public void onPreferenceToggledOnEnabledService_inSuw_toolTipViewShouldNotShow() {
+        Intent suwIntent = new Intent();
+        suwIntent.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true);
+        when(mActivity.getIntent()).thenReturn(suwIntent);
+
+        mFragment.onPreferenceToggled(
+                ToggleFeaturePreferenceFragment.KEY_USE_SERVICE_PREFERENCE, /* enabled= */ true);
+
+        assertThat(getLatestPopupWindow()).isNull();
+    }
+
+    @Test
     @Config(shadows = ShadowFragment.class)
     public void onPreferenceToggledOnEnabledService_tooltipViewShown_notShowTooltipView() {
         mFragment.onPreferenceToggled(