Inject DeviceConfig into SystemUI classes
So the tests don't actually register listeners to the DeviceConfig, but can still test with a fake device config. Previously, tests were registering and never unregistering a listener to the DeviceConfig. Test: atest SystemUITests Fixes: 150226783 Change-Id: I59aa77f337a95aa1890570f5a7e30fe9cd58036a
This commit is contained in:
@@ -96,6 +96,7 @@ import com.android.systemui.statusbar.phone.NotificationPanelViewController;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
@@ -378,6 +379,17 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
|
||||
private IKeyguardDrawnCallback mDrawnCallback;
|
||||
private CharSequence mCustomMessage;
|
||||
|
||||
private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener =
|
||||
new DeviceConfig.OnPropertiesChangedListener() {
|
||||
@Override
|
||||
public void onPropertiesChanged(DeviceConfig.Properties properties) {
|
||||
if (properties.getKeyset().contains(NAV_BAR_HANDLE_SHOW_OVER_LOCKSCREEN)) {
|
||||
mShowHomeOverLockscreen = properties.getBoolean(
|
||||
NAV_BAR_HANDLE_SHOW_OVER_LOCKSCREEN, true /* defaultValue */);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() {
|
||||
|
||||
@Override
|
||||
@@ -692,6 +704,8 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
|
||||
}
|
||||
};
|
||||
|
||||
private DeviceConfigProxy mDeviceConfig;
|
||||
|
||||
/**
|
||||
* Injected constructor. See {@link KeyguardModule}.
|
||||
*/
|
||||
@@ -705,7 +719,8 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
|
||||
DismissCallbackRegistry dismissCallbackRegistry,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor, DumpManager dumpManager,
|
||||
@UiBackground Executor uiBgExecutor, PowerManager powerManager,
|
||||
TrustManager trustManager) {
|
||||
TrustManager trustManager,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
super(context);
|
||||
mFalsingManager = falsingManager;
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
@@ -718,20 +733,15 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
|
||||
mPM = powerManager;
|
||||
mTrustManager = trustManager;
|
||||
dumpManager.registerDumpable(getClass().getName(), this);
|
||||
mShowHomeOverLockscreen = DeviceConfig.getBoolean(
|
||||
mDeviceConfig = deviceConfig;
|
||||
mShowHomeOverLockscreen = mDeviceConfig.getBoolean(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
NAV_BAR_HANDLE_SHOW_OVER_LOCKSCREEN,
|
||||
/* defaultValue = */ true);
|
||||
DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post,
|
||||
new DeviceConfig.OnPropertiesChangedListener() {
|
||||
@Override
|
||||
public void onPropertiesChanged(DeviceConfig.Properties properties) {
|
||||
if (properties.getKeyset().contains(NAV_BAR_HANDLE_SHOW_OVER_LOCKSCREEN)) {
|
||||
mShowHomeOverLockscreen = properties.getBoolean(
|
||||
NAV_BAR_HANDLE_SHOW_OVER_LOCKSCREEN, true /* defaultValue */);
|
||||
}
|
||||
}
|
||||
});
|
||||
mDeviceConfig.addOnPropertiesChangedListener(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
mHandler::post,
|
||||
mOnPropertiesChangedListener);
|
||||
}
|
||||
|
||||
public void userActivity() {
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -62,7 +63,8 @@ public class KeyguardModule {
|
||||
DumpManager dumpManager,
|
||||
PowerManager powerManager,
|
||||
TrustManager trustManager,
|
||||
@UiBackground Executor uiBgExecutor) {
|
||||
@UiBackground Executor uiBgExecutor,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
return new KeyguardViewMediator(
|
||||
context,
|
||||
falsingManager,
|
||||
@@ -75,6 +77,7 @@ public class KeyguardModule {
|
||||
dumpManager,
|
||||
uiBgExecutor,
|
||||
powerManager,
|
||||
trustManager);
|
||||
trustManager,
|
||||
deviceConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.PinnedStackListenerForwarder.PinnedStackListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.FloatingContentCoordinator;
|
||||
import com.android.systemui.wm.DisplayChangeController;
|
||||
import com.android.systemui.wm.DisplayController;
|
||||
@@ -204,7 +205,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
|
||||
@Inject
|
||||
public PipManager(Context context, BroadcastDispatcher broadcastDispatcher,
|
||||
DisplayController displayController,
|
||||
FloatingContentCoordinator floatingContentCoordinator) {
|
||||
FloatingContentCoordinator floatingContentCoordinator,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
mContext = context;
|
||||
mActivityManager = ActivityManager.getService();
|
||||
|
||||
@@ -225,7 +227,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
|
||||
mInputConsumerController);
|
||||
mTouchHandler = new PipTouchHandler(context, mActivityManager, activityTaskManager,
|
||||
mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer,
|
||||
floatingContentCoordinator);
|
||||
floatingContentCoordinator, deviceConfig);
|
||||
mAppOpsListener = new PipAppOpsListener(context, mActivityManager,
|
||||
mTouchHandler.getMotionHelper());
|
||||
displayController.addDisplayChangingController(mRotationController);
|
||||
|
||||
@@ -41,6 +41,7 @@ import android.view.MotionEvent;
|
||||
import com.android.internal.policy.TaskResizingAlgorithm;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.pip.PipBoundsHandler;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -77,7 +78,8 @@ public class PipResizeGestureHandler {
|
||||
private int mCtrlType;
|
||||
|
||||
public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler,
|
||||
PipTouchHandler pipTouchHandler, PipMotionHelper motionHelper) {
|
||||
PipTouchHandler pipTouchHandler, PipMotionHelper motionHelper,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
final Resources res = context.getResources();
|
||||
context.getDisplay().getMetrics(mDisplayMetrics);
|
||||
mDisplayId = context.getDisplayId();
|
||||
@@ -93,7 +95,7 @@ public class PipResizeGestureHandler {
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
PIP_USER_RESIZE,
|
||||
/* defaultValue = */ false);
|
||||
DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, mMainExecutor,
|
||||
deviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, mMainExecutor,
|
||||
new DeviceConfig.OnPropertiesChangedListener() {
|
||||
@Override
|
||||
public void onPropertiesChanged(DeviceConfig.Properties properties) {
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.android.systemui.pip.PipSnapAlgorithm;
|
||||
import com.android.systemui.pip.PipTaskOrganizer;
|
||||
import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.statusbar.FlingAnimationUtils;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.FloatingContentCoordinator;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -162,7 +163,8 @@ public class PipTouchHandler {
|
||||
InputConsumerController inputConsumerController,
|
||||
PipBoundsHandler pipBoundsHandler,
|
||||
PipTaskOrganizer pipTaskOrganizer,
|
||||
FloatingContentCoordinator floatingContentCoordinator) {
|
||||
FloatingContentCoordinator floatingContentCoordinator,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
// Initialize the Pip input consumer
|
||||
mContext = context;
|
||||
mActivityManager = activityManager;
|
||||
@@ -177,7 +179,8 @@ public class PipTouchHandler {
|
||||
mMotionHelper = new PipMotionHelper(mContext, activityTaskManager, pipTaskOrganizer,
|
||||
mMenuController, mSnapAlgorithm, mFlingAnimationUtils, floatingContentCoordinator);
|
||||
mPipResizeGestureHandler =
|
||||
new PipResizeGestureHandler(context, pipBoundsHandler, this, mMotionHelper);
|
||||
new PipResizeGestureHandler(context, pipBoundsHandler, this, mMotionHelper,
|
||||
deviceConfig);
|
||||
mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler,
|
||||
() -> mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
|
||||
mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()));
|
||||
|
||||
@@ -65,6 +65,7 @@ import com.android.systemui.statusbar.phone.ScrimController;
|
||||
import com.android.systemui.statusbar.phone.ScrimState;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -183,7 +184,8 @@ public class NotificationMediaManager implements Dumpable {
|
||||
NotificationEntryManager notificationEntryManager,
|
||||
MediaArtworkProcessor mediaArtworkProcessor,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@Main Executor mainExecutor) {
|
||||
@Main Executor mainExecutor,
|
||||
DeviceConfigProxy deviceConfig) {
|
||||
mContext = context;
|
||||
mMediaArtworkProcessor = mediaArtworkProcessor;
|
||||
mKeyguardBypassController = keyguardBypassController;
|
||||
@@ -221,7 +223,7 @@ public class NotificationMediaManager implements Dumpable {
|
||||
DeviceConfig.getProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED));
|
||||
|
||||
DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
deviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
mContext.getMainExecutor(),
|
||||
mPropertiesChangedListener);
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputUriController;
|
||||
import com.android.systemui.tracing.ProtoTracer;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -91,7 +92,8 @@ public interface StatusBarDependenciesModule {
|
||||
NotificationEntryManager notificationEntryManager,
|
||||
MediaArtworkProcessor mediaArtworkProcessor,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@Main Executor mainExecutor) {
|
||||
@Main Executor mainExecutor,
|
||||
DeviceConfigProxy deviceConfigProxy) {
|
||||
return new NotificationMediaManager(
|
||||
context,
|
||||
statusBarLazy,
|
||||
@@ -99,7 +101,8 @@ public interface StatusBarDependenciesModule {
|
||||
notificationEntryManager,
|
||||
mediaArtworkProcessor,
|
||||
keyguardBypassController,
|
||||
mainExecutor);
|
||||
mainExecutor,
|
||||
deviceConfigProxy);
|
||||
}
|
||||
|
||||
/** */
|
||||
|
||||
@@ -25,10 +25,10 @@ import android.text.TextUtils;
|
||||
import android.util.KeyValueListParser;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -62,10 +62,15 @@ public final class SmartReplyConstants {
|
||||
|
||||
private final Handler mHandler;
|
||||
private final Context mContext;
|
||||
private final DeviceConfigProxy mDeviceConfig;
|
||||
private final KeyValueListParser mParser = new KeyValueListParser(',');
|
||||
|
||||
@Inject
|
||||
public SmartReplyConstants(@Main Handler handler, Context context) {
|
||||
public SmartReplyConstants(
|
||||
@Main Handler handler,
|
||||
Context context,
|
||||
DeviceConfigProxy deviceConfig
|
||||
) {
|
||||
mHandler = handler;
|
||||
mContext = context;
|
||||
final Resources resources = mContext.getResources();
|
||||
@@ -86,31 +91,35 @@ public final class SmartReplyConstants {
|
||||
mDefaultOnClickInitDelay = resources.getInteger(
|
||||
R.integer.config_smart_replies_in_notifications_onclick_init_delay);
|
||||
|
||||
mDeviceConfig = deviceConfig;
|
||||
registerDeviceConfigListener();
|
||||
updateConstants();
|
||||
}
|
||||
|
||||
private void registerDeviceConfigListener() {
|
||||
DeviceConfig.addOnPropertiesChangedListener(
|
||||
mDeviceConfig.addOnPropertiesChangedListener(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
this::postToHandler,
|
||||
(properties) -> onDeviceConfigPropertiesChanged(properties.getNamespace()));
|
||||
mOnPropertiesChangedListener);
|
||||
}
|
||||
|
||||
private void postToHandler(Runnable r) {
|
||||
this.mHandler.post(r);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void onDeviceConfigPropertiesChanged(String namespace) {
|
||||
if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(namespace)) {
|
||||
Log.e(TAG, "Received update from DeviceConfig for unrelated namespace: "
|
||||
+ namespace);
|
||||
return;
|
||||
}
|
||||
|
||||
updateConstants();
|
||||
}
|
||||
private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener =
|
||||
new DeviceConfig.OnPropertiesChangedListener() {
|
||||
@Override
|
||||
public void onPropertiesChanged(DeviceConfig.Properties properties) {
|
||||
if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(properties.getNamespace())) {
|
||||
Log.e(TAG,
|
||||
"Received update from DeviceConfig for unrelated namespace: "
|
||||
+ properties.getNamespace());
|
||||
return;
|
||||
}
|
||||
updateConstants();
|
||||
}
|
||||
};
|
||||
|
||||
private void updateConstants() {
|
||||
synchronized (SmartReplyConstants.this) {
|
||||
@@ -120,7 +129,7 @@ public final class SmartReplyConstants {
|
||||
mRequiresTargetingP = readDeviceConfigBooleanOrDefaultIfEmpty(
|
||||
SystemUiDeviceConfigFlags.SSIN_REQUIRES_TARGETING_P,
|
||||
mDefaultRequiresP);
|
||||
mMaxSqueezeRemeasureAttempts = DeviceConfig.getInt(
|
||||
mMaxSqueezeRemeasureAttempts = mDeviceConfig.getInt(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_MAX_SQUEEZE_REMEASURE_ATTEMPTS,
|
||||
mDefaultMaxSqueezeRemeasureAttempts);
|
||||
@@ -130,24 +139,24 @@ public final class SmartReplyConstants {
|
||||
mShowInHeadsUp = readDeviceConfigBooleanOrDefaultIfEmpty(
|
||||
SystemUiDeviceConfigFlags.SSIN_SHOW_IN_HEADS_UP,
|
||||
mDefaultShowInHeadsUp);
|
||||
mMinNumSystemGeneratedReplies = DeviceConfig.getInt(
|
||||
mMinNumSystemGeneratedReplies = mDeviceConfig.getInt(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_MIN_NUM_SYSTEM_GENERATED_REPLIES,
|
||||
mDefaultMinNumSystemGeneratedReplies);
|
||||
mMaxNumActions = DeviceConfig.getInt(
|
||||
mMaxNumActions = mDeviceConfig.getInt(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_MAX_NUM_ACTIONS,
|
||||
mDefaultMaxNumActions);
|
||||
mOnClickInitDelay = DeviceConfig.getInt(
|
||||
mOnClickInitDelay = mDeviceConfig.getInt(
|
||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_ONCLICK_INIT_DELAY,
|
||||
mDefaultOnClickInitDelay);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean readDeviceConfigBooleanOrDefaultIfEmpty(String propertyName,
|
||||
private boolean readDeviceConfigBooleanOrDefaultIfEmpty(String propertyName,
|
||||
boolean defaultValue) {
|
||||
String value = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_SYSTEMUI, propertyName);
|
||||
String value = mDeviceConfig.getProperty(DeviceConfig.NAMESPACE_SYSTEMUI, propertyName);
|
||||
if (TextUtils.isEmpty(value)) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,8 @@ import com.android.systemui.classifier.FalsingManagerFake;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.DeviceConfigProxyFake;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
@@ -69,6 +71,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
|
||||
private @Mock DumpManager mDumpManager;
|
||||
private @Mock PowerManager mPowerManager;
|
||||
private @Mock TrustManager mTrustManager;
|
||||
private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake();
|
||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
private FalsingManagerFake mFalsingManager;
|
||||
@@ -85,7 +88,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
|
||||
mContext, mFalsingManager, mLockPatternUtils, mBroadcastDispatcher,
|
||||
mNotificationShadeWindowController, () -> mStatusBarKeyguardViewManager,
|
||||
mDismissCallbackRegistry, mUpdateMonitor, mDumpManager, mUiBgExecutor,
|
||||
mPowerManager, mTrustManager);
|
||||
mPowerManager, mTrustManager, mDeviceConfig);
|
||||
mViewMediator.start();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import static junit.framework.Assert.assertTrue;
|
||||
|
||||
import android.app.RemoteInput;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
@@ -32,8 +31,8 @@ import android.testing.TestableResources;
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.util.DeviceConfigProxyFake;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -42,14 +41,13 @@ import org.junit.runner.RunWith;
|
||||
@TestableLooper.RunWithLooper
|
||||
@SmallTest
|
||||
public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
|
||||
private static final int CONTENT_OBSERVER_TIMEOUT_SECONDS = 10;
|
||||
|
||||
private SmartReplyConstants mConstants;
|
||||
private DeviceConfigProxyFake mDeviceConfig;
|
||||
private TestableLooper mTestableLooper;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
resetAllDeviceConfigFlags();
|
||||
mDeviceConfig = new DeviceConfigProxyFake();
|
||||
TestableResources resources = mContext.getOrCreateTestableResources();
|
||||
resources.addOverride(R.bool.config_smart_replies_in_notifications_enabled, true);
|
||||
resources.addOverride(
|
||||
@@ -62,12 +60,12 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
2);
|
||||
resources.addOverride(
|
||||
R.integer.config_smart_replies_in_notifications_max_num_actions, -1);
|
||||
mConstants = new SmartReplyConstants(Handler.createAsync(Looper.myLooper()), mContext);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
resetAllDeviceConfigFlags();
|
||||
mTestableLooper = TestableLooper.get(this);
|
||||
mConstants = new SmartReplyConstants(
|
||||
new Handler(mTestableLooper.getLooper()),
|
||||
mContext,
|
||||
mDeviceConfig
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -78,25 +76,21 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testIsEnabledWithInvalidConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_ENABLED, "invalid config");
|
||||
triggerConstantsOnChange();
|
||||
assertTrue(mConstants.isEnabled());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsEnabledWithValidConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_ENABLED, "false");
|
||||
triggerConstantsOnChange();
|
||||
assertFalse(mConstants.isEnabled());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequiresTargetingPConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_REQUIRES_TARGETING_P, "false");
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(false, mConstants.requiresTargetingP());
|
||||
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_REQUIRES_TARGETING_P, null);
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(true, mConstants.requiresTargetingP());
|
||||
}
|
||||
|
||||
@@ -110,20 +104,17 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
public void testGetMaxSqueezeRemeasureAttemptsWithInvalidConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_MAX_SQUEEZE_REMEASURE_ATTEMPTS,
|
||||
"invalid config");
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(7, mConstants.getMaxSqueezeRemeasureAttempts());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetMaxSqueezeRemeasureAttemptsWithValidConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_MAX_SQUEEZE_REMEASURE_ATTEMPTS, "5");
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(5, mConstants.getMaxSqueezeRemeasureAttempts());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetEffectiveEditChoicesBeforeSendingWithNoConfig() {
|
||||
triggerConstantsOnChange();
|
||||
assertFalse(
|
||||
mConstants.getEffectiveEditChoicesBeforeSending(
|
||||
RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO));
|
||||
@@ -138,7 +129,6 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testGetEffectiveEditChoicesBeforeSendingWithEnabledConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_EDIT_CHOICES_BEFORE_SENDING, "true");
|
||||
triggerConstantsOnChange();
|
||||
assertTrue(
|
||||
mConstants.getEffectiveEditChoicesBeforeSending(
|
||||
RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO));
|
||||
@@ -153,7 +143,6 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testGetEffectiveEditChoicesBeforeSendingWithDisabledConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_EDIT_CHOICES_BEFORE_SENDING, "false");
|
||||
triggerConstantsOnChange();
|
||||
assertFalse(
|
||||
mConstants.getEffectiveEditChoicesBeforeSending(
|
||||
RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO));
|
||||
@@ -174,14 +163,12 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testShowInHeadsUpEnabled() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_SHOW_IN_HEADS_UP, "true");
|
||||
triggerConstantsOnChange();
|
||||
assertTrue(mConstants.getShowInHeadsUp());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowInHeadsUpDisabled() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_SHOW_IN_HEADS_UP, "false");
|
||||
triggerConstantsOnChange();
|
||||
assertFalse(mConstants.getShowInHeadsUp());
|
||||
}
|
||||
|
||||
@@ -194,7 +181,6 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testGetMinNumSystemGeneratedRepliesWithValidConfig() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_MIN_NUM_SYSTEM_GENERATED_REPLIES, "5");
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(5, mConstants.getMinNumSystemGeneratedReplies());
|
||||
}
|
||||
|
||||
@@ -207,7 +193,6 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testMaxNumActionsSet() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_MAX_NUM_ACTIONS, "10");
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(10, mConstants.getMaxNumActions());
|
||||
}
|
||||
|
||||
@@ -219,38 +204,12 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testOnClickInitDelaySet() {
|
||||
overrideSetting(SystemUiDeviceConfigFlags.SSIN_ONCLICK_INIT_DELAY, "50");
|
||||
triggerConstantsOnChange();
|
||||
assertEquals(50, mConstants.getOnClickInitDelay());
|
||||
}
|
||||
|
||||
private void overrideSetting(String propertyName, String value) {
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
propertyName, value, false /* makeDefault */);
|
||||
}
|
||||
|
||||
private void triggerConstantsOnChange() {
|
||||
mConstants.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI);
|
||||
}
|
||||
|
||||
private void resetAllDeviceConfigFlags() {
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_ENABLED, null, false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_REQUIRES_TARGETING_P, null, false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_MAX_SQUEEZE_REMEASURE_ATTEMPTS, null,
|
||||
false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_EDIT_CHOICES_BEFORE_SENDING, null,
|
||||
false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_SHOW_IN_HEADS_UP, null, false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_MIN_NUM_SYSTEM_GENERATED_REPLIES, null,
|
||||
false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_MAX_NUM_ACTIONS, null, false /* makeDefault */);
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.SSIN_ONCLICK_INIT_DELAY, null, false /* makeDefault */);
|
||||
mTestableLooper.processAllMessages();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user