Add the jank detection to Settings sliders
- Currently most the sliders are implemented by com.android.settings.widget.SeekBarPreference. - Volume ones are implemented by VolumeSeekBarPreference, which resets the OnSeekBarChangeListener, so need special handling. - PointerSpeedPreference is standalone, added separately. Bug: 230285829 Test: Verify trace via jank developer guideline. Change-Id: Ia2978df196676ad6675d2834f6af6cb2aa9094cf
This commit is contained in:
@@ -18,6 +18,8 @@ package com.android.settings;
|
|||||||
|
|
||||||
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
|
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
|
||||||
|
|
||||||
|
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SETTINGS_SLIDER;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
@@ -30,9 +32,12 @@ import android.util.AttributeSet;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
|
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
|
|
||||||
public class PointerSpeedPreference extends SeekBarDialogPreference implements
|
public class PointerSpeedPreference extends SeekBarDialogPreference implements
|
||||||
SeekBar.OnSeekBarChangeListener {
|
SeekBar.OnSeekBarChangeListener {
|
||||||
private final InputManager mIm;
|
private final InputManager mIm;
|
||||||
|
private final InteractionJankMonitor mJankMonitor = InteractionJankMonitor.getInstance();
|
||||||
private SeekBar mSeekBar;
|
private SeekBar mSeekBar;
|
||||||
|
|
||||||
private int mOldSpeed;
|
private int mOldSpeed;
|
||||||
@@ -88,11 +93,15 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements
|
|||||||
|
|
||||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||||
mTouchInProgress = true;
|
mTouchInProgress = true;
|
||||||
|
mJankMonitor.begin(InteractionJankMonitor.Configuration.Builder
|
||||||
|
.withView(CUJ_SETTINGS_SLIDER, seekBar)
|
||||||
|
.setTag(getKey()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||||
mTouchInProgress = false;
|
mTouchInProgress = false;
|
||||||
mIm.tryPointerSpeed(seekBar.getProgress() + InputManager.MIN_POINTER_SPEED);
|
mIm.tryPointerSpeed(seekBar.getProgress() + InputManager.MIN_POINTER_SPEED);
|
||||||
|
mJankMonitor.end(CUJ_SETTINGS_SLIDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSpeedChanged() {
|
private void onSpeedChanged() {
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.notification;
|
package com.android.settings.notification;
|
||||||
|
|
||||||
|
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SETTINGS_SLIDER;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
@@ -31,6 +33,7 @@ import android.widget.TextView;
|
|||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
|
|
||||||
@@ -40,6 +43,8 @@ import java.util.Objects;
|
|||||||
public class VolumeSeekBarPreference extends SeekBarPreference {
|
public class VolumeSeekBarPreference extends SeekBarPreference {
|
||||||
private static final String TAG = "VolumeSeekBarPreference";
|
private static final String TAG = "VolumeSeekBarPreference";
|
||||||
|
|
||||||
|
private final InteractionJankMonitor mJankMonitor = InteractionJankMonitor.getInstance();
|
||||||
|
|
||||||
protected SeekBar mSeekBar;
|
protected SeekBar mSeekBar;
|
||||||
private int mStream;
|
private int mStream;
|
||||||
private SeekBarVolumizer mVolumizer;
|
private SeekBarVolumizer mVolumizer;
|
||||||
@@ -143,6 +148,13 @@ public class VolumeSeekBarPreference extends SeekBarPreference {
|
|||||||
if (mCallback != null) {
|
if (mCallback != null) {
|
||||||
mCallback.onStartTrackingTouch(sbv);
|
mCallback.onStartTrackingTouch(sbv);
|
||||||
}
|
}
|
||||||
|
mJankMonitor.begin(InteractionJankMonitor.Configuration.Builder
|
||||||
|
.withView(CUJ_SETTINGS_SLIDER, mSeekBar)
|
||||||
|
.setTag(getKey()));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onStopTrackingTouch(SeekBarVolumizer sbv) {
|
||||||
|
mJankMonitor.end(CUJ_SETTINGS_SLIDER);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
final Uri sampleUri = mStream == AudioManager.STREAM_MUSIC ? getMediaVolumeUri() : null;
|
final Uri sampleUri = mStream == AudioManager.STREAM_MUSIC ? getMediaVolumeUri() : null;
|
||||||
|
@@ -18,6 +18,8 @@ package com.android.settings.widget;
|
|||||||
|
|
||||||
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
|
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
|
||||||
|
|
||||||
|
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SETTINGS_SLIDER;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
@@ -33,6 +35,7 @@ import android.widget.SeekBar.OnSeekBarChangeListener;
|
|||||||
import androidx.core.content.res.TypedArrayUtils;
|
import androidx.core.content.res.TypedArrayUtils;
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,6 +48,7 @@ public class SeekBarPreference extends RestrictedPreference
|
|||||||
public static final int HAPTIC_FEEDBACK_MODE_ON_TICKS = 1;
|
public static final int HAPTIC_FEEDBACK_MODE_ON_TICKS = 1;
|
||||||
public static final int HAPTIC_FEEDBACK_MODE_ON_ENDS = 2;
|
public static final int HAPTIC_FEEDBACK_MODE_ON_ENDS = 2;
|
||||||
|
|
||||||
|
private final InteractionJankMonitor mJankMonitor = InteractionJankMonitor.getInstance();
|
||||||
private int mProgress;
|
private int mProgress;
|
||||||
private int mMax;
|
private int mMax;
|
||||||
private int mMin;
|
private int mMin;
|
||||||
@@ -312,6 +316,9 @@ public class SeekBarPreference extends RestrictedPreference
|
|||||||
@Override
|
@Override
|
||||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||||
mTrackingTouch = true;
|
mTrackingTouch = true;
|
||||||
|
mJankMonitor.begin(InteractionJankMonitor.Configuration.Builder
|
||||||
|
.withView(CUJ_SETTINGS_SLIDER, seekBar)
|
||||||
|
.setTag(getKey()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -320,6 +327,7 @@ public class SeekBarPreference extends RestrictedPreference
|
|||||||
if (seekBar.getProgress() != mProgress) {
|
if (seekBar.getProgress() != mProgress) {
|
||||||
syncProgress(seekBar);
|
syncProgress(seekBar);
|
||||||
}
|
}
|
||||||
|
mJankMonitor.end(CUJ_SETTINGS_SLIDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -27,13 +27,17 @@ import android.content.Context;
|
|||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class PointerSpeedPreferenceTest {
|
public class PointerSpeedPreferenceTest {
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -40,8 +41,10 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class AlarmVibrationIntensityPreferenceControllerTest {
|
public class AlarmVibrationIntensityPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String PREFERENCE_KEY = "preference_key";
|
private static final String PREFERENCE_KEY = "preference_key";
|
||||||
|
@@ -26,13 +26,17 @@ import android.widget.LinearLayout;
|
|||||||
|
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class BalanceSeekBarPreferenceTest {
|
public class BalanceSeekBarPreferenceTest {
|
||||||
private static final int BALANCE_CENTER_VALUE = 100;
|
private static final int BALANCE_CENTER_VALUE = 100;
|
||||||
private static final int BALANCE_MAX_VALUE = 200;
|
private static final int BALANCE_MAX_VALUE = 200;
|
||||||
|
@@ -38,6 +38,7 @@ import android.provider.Settings;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -49,9 +50,11 @@ import org.mockito.Spy;
|
|||||||
import org.mockito.junit.MockitoJUnit;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
import org.mockito.junit.MockitoRule;
|
import org.mockito.junit.MockitoRule;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
/** Tests for {@link FloatingMenuTransparencyPreferenceController}. */
|
/** Tests for {@link FloatingMenuTransparencyPreferenceController}. */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class FloatingMenuTransparencyPreferenceControllerTest {
|
public class FloatingMenuTransparencyPreferenceControllerTest {
|
||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
|
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -41,8 +42,10 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class HapticFeedbackIntensityPreferenceControllerTest {
|
public class HapticFeedbackIntensityPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String PREFERENCE_KEY = "preference_key";
|
private static final String PREFERENCE_KEY = "preference_key";
|
||||||
|
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -40,9 +41,11 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
/** Test for {@link MediaVibrationIntensityPreferenceController}. */
|
/** Test for {@link MediaVibrationIntensityPreferenceController}. */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class MediaVibrationIntensityPreferenceControllerTest {
|
public class MediaVibrationIntensityPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String PREFERENCE_KEY = "preference_key";
|
private static final String PREFERENCE_KEY = "preference_key";
|
||||||
|
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -41,8 +42,10 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class NotificationVibrationIntensityPreferenceControllerTest {
|
public class NotificationVibrationIntensityPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String PREFERENCE_KEY = "preference_key";
|
private static final String PREFERENCE_KEY = "preference_key";
|
||||||
|
@@ -28,6 +28,7 @@ import android.content.Context;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.LabeledSeekBarPreference;
|
import com.android.settings.widget.LabeledSeekBarPreference;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -36,11 +37,13 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link PreviewSizeSeekBarController}.
|
* Tests for {@link PreviewSizeSeekBarController}.
|
||||||
*/
|
*/
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class PreviewSizeSeekBarControllerTest {
|
public class PreviewSizeSeekBarControllerTest {
|
||||||
private static final String FONT_SIZE_KEY = "font_size";
|
private static final String FONT_SIZE_KEY = "font_size";
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
|
@@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -41,9 +42,11 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
/** Tests for {@link RingVibrationIntensityPreferenceController}. */
|
/** Tests for {@link RingVibrationIntensityPreferenceController}. */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class RingVibrationIntensityPreferenceControllerTest {
|
public class RingVibrationIntensityPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String PREFERENCE_KEY = "preference_key";
|
private static final String PREFERENCE_KEY = "preference_key";
|
||||||
|
@@ -27,6 +27,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.display.PreviewPagerAdapter;
|
import com.android.settings.display.PreviewPagerAdapter;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.LabeledSeekBarPreference;
|
import com.android.settings.widget.LabeledSeekBarPreference;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -45,7 +46,7 @@ import java.util.List;
|
|||||||
* Tests for {@link TextReadingPreviewController}.
|
* Tests for {@link TextReadingPreviewController}.
|
||||||
*/
|
*/
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = ShadowChoreographer.class)
|
@Config(shadows = {ShadowChoreographer.class, ShadowInteractionJankMonitor.class})
|
||||||
public class TextReadingPreviewControllerTest {
|
public class TextReadingPreviewControllerTest {
|
||||||
private static final String PREVIEW_KEY = "preview";
|
private static final String PREVIEW_KEY = "preview";
|
||||||
private static final String FONT_SIZE_KEY = "font_size";
|
private static final String FONT_SIZE_KEY = "font_size";
|
||||||
|
@@ -28,6 +28,7 @@ import android.provider.Settings;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -37,9 +38,11 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
/** Tests for {@link VibrationIntensityPreferenceController}. */
|
/** Tests for {@link VibrationIntensityPreferenceController}. */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class VibrationIntensityPreferenceControllerTest {
|
public class VibrationIntensityPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String SETTING_KEY = Settings.System.NOTIFICATION_VIBRATION_INTENSITY;
|
private static final String SETTING_KEY = Settings.System.NOTIFICATION_VIBRATION_INTENSITY;
|
||||||
|
@@ -15,6 +15,8 @@ import android.provider.Settings.Global;
|
|||||||
|
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -22,8 +24,10 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public class BatterySaverScheduleSeekBarControllerTest {
|
public class BatterySaverScheduleSeekBarControllerTest {
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
@@ -10,6 +10,7 @@ import android.os.PowerManager;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -17,8 +18,10 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = {ShadowInteractionJankMonitor.class})
|
||||||
public final class BatterySaverScheduleSettingsTest {
|
public final class BatterySaverScheduleSettingsTest {
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
@@ -37,6 +37,7 @@ import androidx.preference.Preference;
|
|||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
import com.android.settings.widget.LabeledSeekBarPreference;
|
import com.android.settings.widget.LabeledSeekBarPreference;
|
||||||
|
|
||||||
@@ -56,7 +57,8 @@ import org.robolectric.annotation.Config;
|
|||||||
*/
|
*/
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = {
|
@Config(shadows = {
|
||||||
ShadowUserManager.class
|
ShadowUserManager.class,
|
||||||
|
ShadowInteractionJankMonitor.class,
|
||||||
})
|
})
|
||||||
public class LabeledSeekBarPreferenceTest {
|
public class LabeledSeekBarPreferenceTest {
|
||||||
|
|
||||||
|
@@ -43,6 +43,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.widget.SeekBarPreference;
|
import com.android.settings.widget.SeekBarPreference;
|
||||||
import com.android.settingslib.media.LocalMediaManager;
|
import com.android.settingslib.media.LocalMediaManager;
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = {ShadowBluetoothAdapter.class})
|
@Config(shadows = {ShadowBluetoothAdapter.class, ShadowInteractionJankMonitor.class})
|
||||||
public class RemoteVolumeGroupControllerTest {
|
public class RemoteVolumeGroupControllerTest {
|
||||||
|
|
||||||
private static final String KEY_REMOTE_VOLUME_GROUP = "remote_media_group";
|
private static final String KEY_REMOTE_VOLUME_GROUP = "remote_media_group";
|
||||||
|
@@ -34,6 +34,7 @@ import android.widget.SeekBar;
|
|||||||
|
|
||||||
import androidx.preference.PreferenceFragmentCompat;
|
import androidx.preference.PreferenceFragmentCompat;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
|
||||||
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
|
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -46,7 +47,7 @@ import org.robolectric.annotation.Config;
|
|||||||
import org.robolectric.shadows.androidx.fragment.FragmentController;
|
import org.robolectric.shadows.androidx.fragment.FragmentController;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(shadows = ShadowRestrictedLockUtilsInternal.class)
|
@Config(shadows = {ShadowRestrictedLockUtilsInternal.class, ShadowInteractionJankMonitor.class})
|
||||||
public class SeekBarPreferenceTest {
|
public class SeekBarPreferenceTest {
|
||||||
|
|
||||||
private static final int MAX = 75;
|
private static final int MAX = 75;
|
||||||
|
Reference in New Issue
Block a user