Merge "Don't show quick settings tooltip if the user is in the Setup Wizard, since the user can't access the Quick Settings Panel." into main
This commit is contained in:
@@ -89,6 +89,7 @@ android_library {
|
|||||||
"SettingsLib",
|
"SettingsLib",
|
||||||
"SettingsLibActivityEmbedding",
|
"SettingsLibActivityEmbedding",
|
||||||
"aconfig_settings_flags_lib",
|
"aconfig_settings_flags_lib",
|
||||||
|
"accessibility_settings_flags_lib",
|
||||||
"app-usage-event-protos-lite",
|
"app-usage-event-protos-lite",
|
||||||
"battery-event-protos-lite",
|
"battery-event-protos-lite",
|
||||||
"battery-usage-slot-protos-lite",
|
"battery-usage-slot-protos-lite",
|
||||||
|
@@ -36,3 +36,14 @@ java_aconfig_library {
|
|||||||
name: "MediaDrmSettingsFlagsLib",
|
name: "MediaDrmSettingsFlagsLib",
|
||||||
aconfig_declarations: "media_drm_flags",
|
aconfig_declarations: "media_drm_flags",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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",
|
||||||
|
}
|
||||||
|
1
aconfig/accessibility/OWNERS
Normal file
1
aconfig/accessibility/OWNERS
Normal file
@@ -0,0 +1 @@
|
|||||||
|
include /src/com/android/settings/accessibility/OWNERS
|
10
aconfig/accessibility/accessibility_flags.aconfig
Normal file
10
aconfig/accessibility/accessibility_flags.aconfig
Normal file
@@ -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"
|
||||||
|
}
|
@@ -1,5 +1,8 @@
|
|||||||
package: "com.android.settings.flags"
|
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: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
|
||||||
|
|
||||||
# NOTE: All Settings flags share the same Flags class, so prefix our
|
# NOTE: All Settings flags share the same Flags class, so prefix our
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.accessibility;
|
package com.android.settings.accessibility;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -33,6 +34,8 @@ import com.android.settingslib.core.lifecycle.events.OnCreate;
|
|||||||
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||||
|
|
||||||
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -207,6 +210,13 @@ abstract class PreviewSizeSeekBarController extends BasePreferenceController imp
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Flags.removeQsTooltipInSuw()
|
||||||
|
&& mContext instanceof Activity
|
||||||
|
&& WizardManagerHelper.isAnySetupWizard(((Activity) mContext).getIntent())) {
|
||||||
|
// Don't show QuickSettingsTooltip in Setup Wizard
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!mNeedsQSTooltipReshow && AccessibilityQuickSettingUtils.hasValueInSharedPreferences(
|
if (!mNeedsQSTooltipReshow && AccessibilityQuickSettingUtils.hasValueInSharedPreferences(
|
||||||
mContext, tileComponentName)) {
|
mContext, tileComponentName)) {
|
||||||
// Returns if quick settings tooltip only show once.
|
// Returns if quick settings tooltip only show once.
|
||||||
|
@@ -905,6 +905,14 @@ public abstract class ToggleFeaturePreferenceFragment extends DashboardFragment
|
|||||||
return;
|
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(
|
if (!mNeedsQSTooltipReshow && AccessibilityQuickSettingUtils.hasValueInSharedPreferences(
|
||||||
getContext(), tileComponentName)) {
|
getContext(), tileComponentName)) {
|
||||||
// Returns if quick settings tooltip only show once.
|
// Returns if quick settings tooltip only show once.
|
||||||
|
@@ -26,31 +26,39 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
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.view.LayoutInflater;
|
||||||
import android.widget.PopupWindow;
|
import android.widget.PopupWindow;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
|
|
||||||
|
import androidx.fragment.app.testing.EmptyFragmentActivity;
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.rules.ActivityScenarioRule;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.testutils.shadow.ShadowFragment;
|
import com.android.settings.testutils.shadow.ShadowFragment;
|
||||||
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
|
||||||
import com.android.settings.widget.LabeledSeekBarPreference;
|
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.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.Spy;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.annotation.LooperMode;
|
import org.robolectric.annotation.LooperMode;
|
||||||
@@ -64,10 +72,16 @@ import org.robolectric.shadows.ShadowApplication;
|
|||||||
@LooperMode(LooperMode.Mode.LEGACY)
|
@LooperMode(LooperMode.Mode.LEGACY)
|
||||||
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class PreviewSizeSeekBarControllerTest {
|
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 FONT_SIZE_KEY = "font_size";
|
||||||
private static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
|
private static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
|
||||||
@Spy
|
private Activity mContext;
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
|
||||||
private PreviewSizeSeekBarController mSeekBarController;
|
private PreviewSizeSeekBarController mSeekBarController;
|
||||||
private FontSizeData mFontSizeData;
|
private FontSizeData mFontSizeData;
|
||||||
private LabeledSeekBarPreference mSeekBarPreference;
|
private LabeledSeekBarPreference mSeekBarPreference;
|
||||||
@@ -91,7 +105,9 @@ public class PreviewSizeSeekBarControllerTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
ShadowInteractionJankMonitor.reset();
|
||||||
|
|
||||||
|
rule.getScenario().onActivity(activity -> mContext = activity);
|
||||||
mContext.setTheme(androidx.appcompat.R.style.Theme_AppCompat);
|
mContext.setTheme(androidx.appcompat.R.style.Theme_AppCompat);
|
||||||
mFragment = spy(new TestFragment());
|
mFragment = spy(new TestFragment());
|
||||||
when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager);
|
when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager);
|
||||||
@@ -196,6 +212,24 @@ public class PreviewSizeSeekBarControllerTest {
|
|||||||
assertThat(getLatestPopupWindow().isShowing()).isTrue();
|
assertThat(getLatestPopupWindow().isShowing()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
public void onProgressChanged_tooltipViewHasBeenShown_notShowTooltipView() {
|
public void onProgressChanged_tooltipViewHasBeenShown_notShowTooltipView() {
|
||||||
mSeekBarController.displayPreference(mPreferenceScreen);
|
mSeekBarController.displayPreference(mPreferenceScreen);
|
||||||
|
@@ -60,6 +60,8 @@ import com.android.settings.flags.Flags;
|
|||||||
import com.android.settings.testutils.shadow.ShadowFragment;
|
import com.android.settings.testutils.shadow.ShadowFragment;
|
||||||
import com.android.settingslib.widget.TopIntroPreference;
|
import com.android.settingslib.widget.TopIntroPreference;
|
||||||
|
|
||||||
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -301,6 +303,20 @@ public class ToggleFeaturePreferenceFragmentTest {
|
|||||||
assertThat(getLatestPopupWindow().isShowing()).isTrue();
|
assertThat(getLatestPopupWindow().isShowing()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
@Config(shadows = ShadowFragment.class)
|
@Config(shadows = ShadowFragment.class)
|
||||||
public void onPreferenceToggledOnEnabledService_tooltipViewShown_notShowTooltipView() {
|
public void onPreferenceToggledOnEnabledService_tooltipViewShown_notShowTooltipView() {
|
||||||
|
Reference in New Issue
Block a user