summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/devicestate/DeviceStateInfo.java55
-rw-r--r--core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java66
-rw-r--r--core/tests/devicestatetests/Android.bp3
-rw-r--r--core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateInfoTest.java113
-rw-r--r--core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateManagerGlobalTest.java146
-rw-r--r--core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateTest.java39
-rw-r--r--services/core/java/com/android/server/devicestate/DeviceStateManagerService.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/devicestate/DeviceStateManagerServiceTest.java680
8 files changed, 581 insertions, 529 deletions
diff --git a/core/java/android/hardware/devicestate/DeviceStateInfo.java b/core/java/android/hardware/devicestate/DeviceStateInfo.java
index 28561ec37ee6..fd6f0b81b6da 100644
--- a/core/java/android/hardware/devicestate/DeviceStateInfo.java
+++ b/core/java/android/hardware/devicestate/DeviceStateInfo.java
@@ -28,7 +28,6 @@ import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.Executor;
-
/**
* Information about the state of the device.
*
@@ -63,11 +62,13 @@ public final class DeviceStateInfo implements Parcelable {
* ignoring any override requests made through a call to {@link DeviceStateManager#requestState(
* DeviceStateRequest, Executor, DeviceStateRequest.Callback)}.
*/
+ @NonNull
public final DeviceState baseState;
/**
* The state of the device.
*/
+ @NonNull
public final DeviceState currentState;
/**
@@ -78,8 +79,9 @@ public final class DeviceStateInfo implements Parcelable {
*/
// Using the specific types to avoid virtual method calls in binder transactions
@SuppressWarnings("NonApiType")
- public DeviceStateInfo(@NonNull ArrayList<DeviceState> supportedStates, DeviceState baseState,
- DeviceState state) {
+ public DeviceStateInfo(@NonNull ArrayList<DeviceState> supportedStates,
+ @NonNull DeviceState baseState,
+ @NonNull DeviceState state) {
this.supportedStates = supportedStates;
this.baseState = baseState;
this.currentState = state;
@@ -97,7 +99,7 @@ public final class DeviceStateInfo implements Parcelable {
public boolean equals(@Nullable Object other) {
if (this == other) return true;
if (other == null || (getClass() != other.getClass())) return false;
- DeviceStateInfo that = (DeviceStateInfo) other;
+ final DeviceStateInfo that = (DeviceStateInfo) other;
return baseState.equals(that.baseState)
&& currentState.equals(that.currentState)
&& Objects.equals(supportedStates, that.supportedStates);
@@ -126,8 +128,16 @@ public final class DeviceStateInfo implements Parcelable {
return diff;
}
+ // Parcelable implementation
+
@Override
- public void writeToParcel(Parcel dest, int flags) {
+ public int describeContents() {
+ return 0;
+ }
+
+ /** Writes to Parcel. */
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(supportedStates.size());
for (int i = 0; i < supportedStates.size(); i++) {
dest.writeTypedObject(supportedStates.get(i).getConfiguration(), flags);
@@ -137,28 +147,27 @@ public final class DeviceStateInfo implements Parcelable {
dest.writeTypedObject(currentState.getConfiguration(), flags);
}
- @Override
- public int describeContents() {
- return 0;
+ /** Reads from Parcel. */
+ private DeviceStateInfo(@NonNull Parcel in) {
+ final int numberOfSupportedStates = in.readInt();
+ final ArrayList<DeviceState> supportedStates = new ArrayList<>(numberOfSupportedStates);
+ for (int i = 0; i < numberOfSupportedStates; i++) {
+ final DeviceState.Configuration configuration =
+ Objects.requireNonNull(in.readTypedObject(DeviceState.Configuration.CREATOR));
+ supportedStates.add(i, new DeviceState(configuration));
+ }
+ this.supportedStates = supportedStates;
+
+ this.baseState = new DeviceState(
+ Objects.requireNonNull(in.readTypedObject(DeviceState.Configuration.CREATOR)));
+ this.currentState = new DeviceState(
+ Objects.requireNonNull(in.readTypedObject(DeviceState.Configuration.CREATOR)));
}
public static final @NonNull Creator<DeviceStateInfo> CREATOR = new Creator<>() {
@Override
- public DeviceStateInfo createFromParcel(Parcel source) {
- final int numberOfSupportedStates = source.readInt();
- final ArrayList<DeviceState> supportedStates = new ArrayList<>(numberOfSupportedStates);
- for (int i = 0; i < numberOfSupportedStates; i++) {
- DeviceState.Configuration configuration = source.readTypedObject(
- DeviceState.Configuration.CREATOR);
- supportedStates.add(i, new DeviceState(configuration));
- }
-
- final DeviceState baseState = new DeviceState(
- source.readTypedObject(DeviceState.Configuration.CREATOR));
- final DeviceState currentState = new DeviceState(
- source.readTypedObject(DeviceState.Configuration.CREATOR));
-
- return new DeviceStateInfo(supportedStates, baseState, currentState);
+ public DeviceStateInfo createFromParcel(@NonNull Parcel in) {
+ return new DeviceStateInfo(in);
}
@Override
diff --git a/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java b/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java
index 0c8401992913..184582716f42 100644
--- a/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java
+++ b/core/java/android/hardware/devicestate/DeviceStateManagerGlobal.java
@@ -46,6 +46,7 @@ import java.util.concurrent.Executor;
*/
@VisibleForTesting(visibility = Visibility.PACKAGE)
public final class DeviceStateManagerGlobal {
+ @Nullable
private static DeviceStateManagerGlobal sInstance;
private static final String TAG = "DeviceStateManagerGlobal";
private static final boolean DEBUG = Build.IS_DEBUGGABLE;
@@ -58,7 +59,7 @@ public final class DeviceStateManagerGlobal {
public static DeviceStateManagerGlobal getInstance() {
synchronized (DeviceStateManagerGlobal.class) {
if (sInstance == null) {
- IBinder b = ServiceManager.getService(Context.DEVICE_STATE_SERVICE);
+ final IBinder b = ServiceManager.getService(Context.DEVICE_STATE_SERVICE);
if (b != null) {
sInstance = new DeviceStateManagerGlobal(IDeviceStateManager
.Stub.asInterface(b));
@@ -94,6 +95,7 @@ public final class DeviceStateManagerGlobal {
*
* @see DeviceStateManager#getSupportedDeviceStates()
*/
+ @NonNull
public List<DeviceState> getSupportedDeviceStates() {
synchronized (mLock) {
final DeviceStateInfo currentInfo;
@@ -126,8 +128,8 @@ public final class DeviceStateManagerGlobal {
conditional = true)
public void requestState(@NonNull DeviceStateRequest request,
@Nullable Executor executor, @Nullable DeviceStateRequest.Callback callback) {
- DeviceStateRequestWrapper requestWrapper = new DeviceStateRequestWrapper(request, callback,
- executor);
+ final DeviceStateRequestWrapper requestWrapper =
+ new DeviceStateRequestWrapper(request, callback, executor);
synchronized (mLock) {
if (findRequestTokenLocked(request) != null) {
// This request has already been submitted.
@@ -136,7 +138,7 @@ public final class DeviceStateManagerGlobal {
// Add the request wrapper to the mRequests array before requesting the state as the
// callback could be triggered immediately if the mDeviceStateManager IBinder is in the
// same process as this instance.
- IBinder token = new Binder();
+ final IBinder token = new Binder();
mRequests.put(token, requestWrapper);
try {
@@ -176,8 +178,8 @@ public final class DeviceStateManagerGlobal {
@RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_STATE)
public void requestBaseStateOverride(@NonNull DeviceStateRequest request,
@Nullable Executor executor, @Nullable DeviceStateRequest.Callback callback) {
- DeviceStateRequestWrapper requestWrapper = new DeviceStateRequestWrapper(request, callback,
- executor);
+ final DeviceStateRequestWrapper requestWrapper =
+ new DeviceStateRequestWrapper(request, callback, executor);
synchronized (mLock) {
if (findRequestTokenLocked(request) != null) {
// This request has already been submitted.
@@ -186,7 +188,7 @@ public final class DeviceStateManagerGlobal {
// Add the request wrapper to the mRequests array before requesting the state as the
// callback could be triggered immediately if the mDeviceStateManager IBinder is in the
// same process as this instance.
- IBinder token = new Binder();
+ final IBinder token = new Binder();
mRequests.put(token, requestWrapper);
try {
@@ -225,7 +227,7 @@ public final class DeviceStateManagerGlobal {
public void registerDeviceStateCallback(@NonNull DeviceStateCallback callback,
@NonNull Executor executor) {
synchronized (mLock) {
- int index = findCallbackLocked(callback);
+ final int index = findCallbackLocked(callback);
if (index != -1) {
// This callback is already registered.
return;
@@ -233,7 +235,8 @@ public final class DeviceStateManagerGlobal {
// Add the callback wrapper to the mCallbacks array after registering the callback as
// the callback could be triggered immediately if the mDeviceStateManager IBinder is in
// the same process as this instance.
- DeviceStateCallbackWrapper wrapper = new DeviceStateCallbackWrapper(callback, executor);
+ final DeviceStateCallbackWrapper wrapper =
+ new DeviceStateCallbackWrapper(callback, executor);
mCallbacks.add(wrapper);
if (mLastReceivedInfo != null) {
@@ -253,7 +256,7 @@ public final class DeviceStateManagerGlobal {
@VisibleForTesting(visibility = Visibility.PACKAGE)
public void unregisterDeviceStateCallback(@NonNull DeviceStateCallback callback) {
synchronized (mLock) {
- int indexToRemove = findCallbackLocked(callback);
+ final int indexToRemove = findCallbackLocked(callback);
if (indexToRemove != -1) {
mCallbacks.remove(indexToRemove);
}
@@ -277,14 +280,16 @@ public final class DeviceStateManagerGlobal {
}
private void registerCallbackIfNeededLocked() {
- if (mCallback == null) {
- mCallback = new DeviceStateManagerCallback();
- try {
- mDeviceStateManager.registerCallback(mCallback);
- } catch (RemoteException ex) {
- mCallback = null;
- throw ex.rethrowFromSystemServer();
- }
+ if (mCallback != null) {
+ return;
+ }
+
+ mCallback = new DeviceStateManagerCallback();
+ try {
+ mDeviceStateManager.registerCallback(mCallback);
+ } catch (RemoteException ex) {
+ mCallback = null;
+ throw ex.rethrowFromSystemServer();
}
}
@@ -298,6 +303,7 @@ public final class DeviceStateManagerGlobal {
}
@Nullable
+ @GuardedBy("mLock")
private IBinder findRequestTokenLocked(@NonNull DeviceStateRequest request) {
for (int i = 0; i < mRequests.size(); i++) {
if (mRequests.valueAt(i).mRequest.equals(request)) {
@@ -309,8 +315,8 @@ public final class DeviceStateManagerGlobal {
/** Handles a call from the server that the device state info has changed. */
private void handleDeviceStateInfoChanged(@NonNull DeviceStateInfo info) {
- ArrayList<DeviceStateCallbackWrapper> callbacks;
- DeviceStateInfo oldInfo;
+ final ArrayList<DeviceStateCallbackWrapper> callbacks;
+ final DeviceStateInfo oldInfo;
synchronized (mLock) {
oldInfo = mLastReceivedInfo;
mLastReceivedInfo = info;
@@ -335,8 +341,8 @@ public final class DeviceStateManagerGlobal {
* Handles a call from the server that a request for the supplied {@code token} has become
* active.
*/
- private void handleRequestActive(IBinder token) {
- DeviceStateRequestWrapper request;
+ private void handleRequestActive(@NonNull IBinder token) {
+ final DeviceStateRequestWrapper request;
synchronized (mLock) {
request = mRequests.get(token);
}
@@ -349,8 +355,8 @@ public final class DeviceStateManagerGlobal {
* Handles a call from the server that a request for the supplied {@code token} has become
* canceled.
*/
- private void handleRequestCanceled(IBinder token) {
- DeviceStateRequestWrapper request;
+ private void handleRequestCanceled(@NonNull IBinder token) {
+ final DeviceStateRequestWrapper request;
synchronized (mLock) {
request = mRequests.remove(token);
}
@@ -361,17 +367,17 @@ public final class DeviceStateManagerGlobal {
private final class DeviceStateManagerCallback extends IDeviceStateManagerCallback.Stub {
@Override
- public void onDeviceStateInfoChanged(DeviceStateInfo info) {
+ public void onDeviceStateInfoChanged(@NonNull DeviceStateInfo info) {
handleDeviceStateInfoChanged(info);
}
@Override
- public void onRequestActive(IBinder token) {
+ public void onRequestActive(@NonNull IBinder token) {
handleRequestActive(token);
}
@Override
- public void onRequestCanceled(IBinder token) {
+ public void onRequestCanceled(@NonNull IBinder token) {
handleRequestCanceled(token);
}
}
@@ -388,7 +394,8 @@ public final class DeviceStateManagerGlobal {
mExecutor = executor;
}
- void notifySupportedDeviceStatesChanged(List<DeviceState> newSupportedDeviceStates) {
+ void notifySupportedDeviceStatesChanged(
+ @NonNull List<DeviceState> newSupportedDeviceStates) {
mExecutor.execute(() ->
mDeviceStateCallback.onSupportedStatesChanged(newSupportedDeviceStates));
}
@@ -398,7 +405,7 @@ public final class DeviceStateManagerGlobal {
() -> mDeviceStateCallback.onDeviceStateChanged(newDeviceState));
}
- private void execute(String traceName, Runnable r) {
+ private void execute(@NonNull String traceName, @NonNull Runnable r) {
mExecutor.execute(() -> {
if (DEBUG) {
Trace.beginSection(
@@ -416,6 +423,7 @@ public final class DeviceStateManagerGlobal {
}
private static final class DeviceStateRequestWrapper {
+ @NonNull
private final DeviceStateRequest mRequest;
@Nullable
private final DeviceStateRequest.Callback mCallback;
diff --git a/core/tests/devicestatetests/Android.bp b/core/tests/devicestatetests/Android.bp
index a3303c6ca6d7..a2aa62dcf665 100644
--- a/core/tests/devicestatetests/Android.bp
+++ b/core/tests/devicestatetests/Android.bp
@@ -26,11 +26,12 @@ android_test {
// Include all test java files
srcs: ["src/**/*.java"],
static_libs: [
+ "androidx.test.ext.junit",
"androidx.test.rules",
"frameworks-base-testutils",
"mockito-target-minus-junit4",
"platform-test-annotations",
- "testng",
+ "truth",
],
libs: ["android.test.runner.stubs.system"],
platform_apis: true,
diff --git a/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateInfoTest.java b/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateInfoTest.java
index cf7c5491f787..1b78433a5bda 100644
--- a/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateInfoTest.java
+++ b/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateInfoTest.java
@@ -22,21 +22,15 @@ import static android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_HARDWAR
import static android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_HALF_OPEN;
import static android.hardware.devicestate.DeviceState.PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
import android.os.Parcel;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import java.util.ArrayList;
import java.util.List;
@@ -44,13 +38,13 @@ import java.util.Set;
/**
* Unit tests for {@link DeviceStateInfo}.
- * <p/>
- * Run with <code>atest DeviceStateInfoTest</code>.
+ *
+ * <p> Build/Install/Run:
+ * atest FrameworksCoreDeviceStateManagerTests:DeviceStateInfoTest
*/
-@RunWith(JUnit4.class)
@SmallTest
+@RunWith(AndroidJUnit4.class)
public final class DeviceStateInfoTest {
-
private static final DeviceState DEVICE_STATE_0 = new DeviceState(
new DeviceState.Configuration.Builder(0, "STATE_0")
.setSystemProperties(
@@ -74,88 +68,113 @@ public final class DeviceStateInfoTest {
@Test
public void create() {
- final ArrayList<DeviceState> supportedStates = new ArrayList<>(
- List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
+ final ArrayList<DeviceState> supportedStates =
+ new ArrayList<>(List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
final DeviceState baseState = DEVICE_STATE_0;
final DeviceState currentState = DEVICE_STATE_2;
- final DeviceStateInfo info = new DeviceStateInfo(supportedStates, baseState, currentState);
- assertNotNull(info.supportedStates);
- assertEquals(supportedStates, info.supportedStates);
- assertEquals(baseState, info.baseState);
- assertEquals(currentState, info.currentState);
+ final DeviceStateInfo info =
+ new DeviceStateInfo(supportedStates, baseState, currentState);
+
+ assertThat(info.supportedStates).containsExactlyElementsIn(supportedStates).inOrder();
+ assertThat(info.baseState).isEqualTo(baseState);
+ assertThat(info.currentState).isEqualTo(currentState);
}
@Test
public void equals() {
- final ArrayList<DeviceState> supportedStates = new ArrayList<>(
- List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
+ final ArrayList<DeviceState> supportedStates =
+ new ArrayList<>(List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
final DeviceState baseState = DEVICE_STATE_0;
final DeviceState currentState = DEVICE_STATE_2;
final DeviceStateInfo info = new DeviceStateInfo(supportedStates, baseState, currentState);
- Assert.assertEquals(info, info);
+ final DeviceStateInfo sameInstance = info;
+ assertThat(info).isEqualTo(sameInstance);
- final DeviceStateInfo sameInfo = new DeviceStateInfo(supportedStates, baseState,
- currentState);
- Assert.assertEquals(info, sameInfo);
+ final DeviceStateInfo sameInfo =
+ new DeviceStateInfo(supportedStates, baseState, currentState);
+ assertThat(info).isEqualTo(sameInfo);
+
+ final DeviceStateInfo copiedInfo = new DeviceStateInfo(info);
+ assertThat(info).isEqualTo(copiedInfo);
final DeviceStateInfo differentInfo = new DeviceStateInfo(
new ArrayList<>(List.of(DEVICE_STATE_0, DEVICE_STATE_2)), baseState, currentState);
- assertNotEquals(info, differentInfo);
+ assertThat(differentInfo).isNotEqualTo(info);
+ }
+
+ @Test
+ public void hashCode_sameObject() {
+ final ArrayList<DeviceState> supportedStates =
+ new ArrayList<>(List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
+ final DeviceState baseState = DEVICE_STATE_0;
+ final DeviceState currentState = DEVICE_STATE_2;
+ final DeviceStateInfo info =
+ new DeviceStateInfo(supportedStates, baseState, currentState);
+ final DeviceStateInfo copiedInfo = new DeviceStateInfo(info);
+
+ assertThat(info.hashCode()).isEqualTo(copiedInfo.hashCode());
}
@Test
public void diff_sameObject() {
- final ArrayList<DeviceState> supportedStates = new ArrayList<>(
- List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
+ final ArrayList<DeviceState> supportedStates =
+ new ArrayList<>(List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
final DeviceState baseState = DEVICE_STATE_0;
final DeviceState currentState = DEVICE_STATE_2;
final DeviceStateInfo info = new DeviceStateInfo(supportedStates, baseState, currentState);
- assertEquals(0, info.diff(info));
+
+ assertThat(info.diff(info)).isEqualTo(0);
}
@Test
public void diff_differentSupportedStates() {
- final DeviceStateInfo info = new DeviceStateInfo(new ArrayList<>(List.of(DEVICE_STATE_1)),
- DEVICE_STATE_0, DEVICE_STATE_0);
+ final DeviceStateInfo info = new DeviceStateInfo(
+ new ArrayList<>(List.of(DEVICE_STATE_1)), DEVICE_STATE_0, DEVICE_STATE_0);
final DeviceStateInfo otherInfo = new DeviceStateInfo(
new ArrayList<>(List.of(DEVICE_STATE_2)), DEVICE_STATE_0, DEVICE_STATE_0);
+
final int diff = info.diff(otherInfo);
- assertTrue((diff & DeviceStateInfo.CHANGED_SUPPORTED_STATES) > 0);
- assertFalse((diff & DeviceStateInfo.CHANGED_BASE_STATE) > 0);
- assertFalse((diff & DeviceStateInfo.CHANGED_CURRENT_STATE) > 0);
+
+ assertThat(diff & DeviceStateInfo.CHANGED_SUPPORTED_STATES).isGreaterThan(0);
+ assertThat(diff & DeviceStateInfo.CHANGED_BASE_STATE).isEqualTo(0);
+ assertThat(diff & DeviceStateInfo.CHANGED_CURRENT_STATE).isEqualTo(0);
}
@Test
public void diff_differentNonOverrideState() {
- final DeviceStateInfo info = new DeviceStateInfo(new ArrayList<>(List.of(DEVICE_STATE_1)),
- DEVICE_STATE_1, DEVICE_STATE_0);
+ final DeviceStateInfo info = new DeviceStateInfo(
+ new ArrayList<>(List.of(DEVICE_STATE_1)), DEVICE_STATE_1, DEVICE_STATE_0);
final DeviceStateInfo otherInfo = new DeviceStateInfo(
new ArrayList<>(List.of(DEVICE_STATE_1)), DEVICE_STATE_2, DEVICE_STATE_0);
+
final int diff = info.diff(otherInfo);
- assertFalse((diff & DeviceStateInfo.CHANGED_SUPPORTED_STATES) > 0);
- assertTrue((diff & DeviceStateInfo.CHANGED_BASE_STATE) > 0);
- assertFalse((diff & DeviceStateInfo.CHANGED_CURRENT_STATE) > 0);
+
+ assertThat(diff & DeviceStateInfo.CHANGED_SUPPORTED_STATES).isEqualTo(0);
+ assertThat(diff & DeviceStateInfo.CHANGED_BASE_STATE).isGreaterThan(0);
+ assertThat(diff & DeviceStateInfo.CHANGED_CURRENT_STATE).isEqualTo(0);
}
@Test
public void diff_differentState() {
- final DeviceStateInfo info = new DeviceStateInfo(new ArrayList<>(List.of(DEVICE_STATE_1)),
- DEVICE_STATE_0, DEVICE_STATE_1);
+ final DeviceStateInfo info = new DeviceStateInfo(
+ new ArrayList<>(List.of(DEVICE_STATE_1)), DEVICE_STATE_0, DEVICE_STATE_1);
final DeviceStateInfo otherInfo = new DeviceStateInfo(
new ArrayList<>(List.of(DEVICE_STATE_1)), DEVICE_STATE_0, DEVICE_STATE_2);
+
final int diff = info.diff(otherInfo);
- assertFalse((diff & DeviceStateInfo.CHANGED_SUPPORTED_STATES) > 0);
- assertFalse((diff & DeviceStateInfo.CHANGED_BASE_STATE) > 0);
- assertTrue((diff & DeviceStateInfo.CHANGED_CURRENT_STATE) > 0);
+
+ assertThat(diff & DeviceStateInfo.CHANGED_SUPPORTED_STATES).isEqualTo(0);
+ assertThat(diff & DeviceStateInfo.CHANGED_BASE_STATE).isEqualTo(0);
+ assertThat(diff & DeviceStateInfo.CHANGED_CURRENT_STATE).isGreaterThan(0);
}
@Test
public void writeToParcel() {
- final ArrayList<DeviceState> supportedStates = new ArrayList<>(
- List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
+ final ArrayList<DeviceState> supportedStates =
+ new ArrayList<>(List.of(DEVICE_STATE_0, DEVICE_STATE_1, DEVICE_STATE_2));
final DeviceState nonOverrideState = DEVICE_STATE_0;
final DeviceState state = DEVICE_STATE_2;
final DeviceStateInfo originalInfo =
@@ -166,6 +185,6 @@ public final class DeviceStateInfoTest {
parcel.setDataPosition(0);
final DeviceStateInfo info = DeviceStateInfo.CREATOR.createFromParcel(parcel);
- assertEquals(originalInfo, info);
+ assertThat(info).isEqualTo(originalInfo);
}
}
diff --git a/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateManagerGlobalTest.java b/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateManagerGlobalTest.java
index f4d363167a75..7c01ecccd173 100644
--- a/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateManagerGlobalTest.java
+++ b/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateManagerGlobalTest.java
@@ -16,8 +16,7 @@
package android.hardware.devicestate;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
+import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
@@ -31,6 +30,9 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.os.test.FakePermissionEnforcer;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import com.android.internal.util.ConcurrentUtils;
@@ -38,7 +40,6 @@ import com.android.internal.util.ConcurrentUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import java.util.ArrayList;
import java.util.HashSet;
@@ -47,32 +48,35 @@ import java.util.Set;
/**
* Unit tests for {@link DeviceStateManagerGlobal}.
- * <p/>
- * Run with <code>atest DeviceStateManagerGlobalTest</code>.
+ *
+ * <p> Build/Install/Run:
+ * atest FrameworksCoreDeviceStateManagerTests:DeviceStateManagerGlobalTest
*/
-@RunWith(JUnit4.class)
@SmallTest
+@RunWith(AndroidJUnit4.class)
public final class DeviceStateManagerGlobalTest {
private static final DeviceState DEFAULT_DEVICE_STATE = new DeviceState(
new DeviceState.Configuration.Builder(0 /* identifier */, "" /* name */).build());
private static final DeviceState OTHER_DEVICE_STATE = new DeviceState(
new DeviceState.Configuration.Builder(1 /* identifier */, "" /* name */).build());
+ @NonNull
private TestDeviceStateManagerService mService;
+ @NonNull
private DeviceStateManagerGlobal mDeviceStateManagerGlobal;
@Before
public void setUp() {
- FakePermissionEnforcer permissionEnforcer = new FakePermissionEnforcer();
+ final FakePermissionEnforcer permissionEnforcer = new FakePermissionEnforcer();
mService = new TestDeviceStateManagerService(permissionEnforcer);
mDeviceStateManagerGlobal = new DeviceStateManagerGlobal(mService);
- assertFalse(mService.mCallbacks.isEmpty());
+ assertThat(mService.mCallbacks).isNotEmpty();
}
@Test
public void registerCallback() {
- DeviceStateCallback callback1 = mock(DeviceStateCallback.class);
- DeviceStateCallback callback2 = mock(DeviceStateCallback.class);
+ final DeviceStateCallback callback1 = mock(DeviceStateCallback.class);
+ final DeviceStateCallback callback2 = mock(DeviceStateCallback.class);
mDeviceStateManagerGlobal.registerDeviceStateCallback(callback1,
ConcurrentUtils.DIRECT_EXECUTOR);
@@ -105,8 +109,8 @@ public final class DeviceStateManagerGlobalTest {
reset(callback2);
// Change the requested state and verify callback
- DeviceStateRequest request = DeviceStateRequest.newBuilder(
- DEFAULT_DEVICE_STATE.getIdentifier()).build();
+ final DeviceStateRequest request =
+ DeviceStateRequest.newBuilder(DEFAULT_DEVICE_STATE.getIdentifier()).build();
mDeviceStateManagerGlobal.requestState(request, null /* executor */, null /* callback */);
verify(callback1).onDeviceStateChanged(eq(mService.getMergedState()));
@@ -115,10 +119,10 @@ public final class DeviceStateManagerGlobalTest {
@Test
public void unregisterCallback() {
- DeviceStateCallback callback = mock(DeviceStateCallback.class);
+ final DeviceStateCallback callback = mock(DeviceStateCallback.class);
- mDeviceStateManagerGlobal.registerDeviceStateCallback(callback,
- ConcurrentUtils.DIRECT_EXECUTOR);
+ mDeviceStateManagerGlobal
+ .registerDeviceStateCallback(callback, ConcurrentUtils.DIRECT_EXECUTOR);
// Verify initial callbacks
verify(callback).onSupportedStatesChanged(eq(mService.getSupportedDeviceStates()));
@@ -134,15 +138,15 @@ public final class DeviceStateManagerGlobalTest {
@Test
public void submitRequest() {
- DeviceStateCallback callback = mock(DeviceStateCallback.class);
- mDeviceStateManagerGlobal.registerDeviceStateCallback(callback,
- ConcurrentUtils.DIRECT_EXECUTOR);
+ final DeviceStateCallback callback = mock(DeviceStateCallback.class);
+ mDeviceStateManagerGlobal
+ .registerDeviceStateCallback(callback, ConcurrentUtils.DIRECT_EXECUTOR);
verify(callback).onDeviceStateChanged(eq(mService.getBaseState()));
reset(callback);
- DeviceStateRequest request = DeviceStateRequest.newBuilder(
- OTHER_DEVICE_STATE.getIdentifier()).build();
+ final DeviceStateRequest request =
+ DeviceStateRequest.newBuilder(OTHER_DEVICE_STATE.getIdentifier()).build();
mDeviceStateManagerGlobal.requestState(request, null /* executor */, null /* callback */);
verify(callback).onDeviceStateChanged(eq(OTHER_DEVICE_STATE));
@@ -155,15 +159,15 @@ public final class DeviceStateManagerGlobalTest {
@Test
public void submitBaseStateOverrideRequest() {
- DeviceStateCallback callback = mock(DeviceStateCallback.class);
- mDeviceStateManagerGlobal.registerDeviceStateCallback(callback,
- ConcurrentUtils.DIRECT_EXECUTOR);
+ final DeviceStateCallback callback = mock(DeviceStateCallback.class);
+ mDeviceStateManagerGlobal
+ .registerDeviceStateCallback(callback, ConcurrentUtils.DIRECT_EXECUTOR);
verify(callback).onDeviceStateChanged(eq(mService.getBaseState()));
reset(callback);
- DeviceStateRequest request = DeviceStateRequest.newBuilder(
- OTHER_DEVICE_STATE.getIdentifier()).build();
+ final DeviceStateRequest request =
+ DeviceStateRequest.newBuilder(OTHER_DEVICE_STATE.getIdentifier()).build();
mDeviceStateManagerGlobal.requestBaseStateOverride(request, null /* executor */,
null /* callback */);
@@ -177,28 +181,28 @@ public final class DeviceStateManagerGlobalTest {
@Test
public void submitBaseAndEmulatedStateOverride() {
- DeviceStateCallback callback = mock(DeviceStateCallback.class);
- mDeviceStateManagerGlobal.registerDeviceStateCallback(callback,
- ConcurrentUtils.DIRECT_EXECUTOR);
+ final DeviceStateCallback callback = mock(DeviceStateCallback.class);
+ mDeviceStateManagerGlobal
+ .registerDeviceStateCallback(callback, ConcurrentUtils.DIRECT_EXECUTOR);
verify(callback).onDeviceStateChanged(eq(mService.getBaseState()));
reset(callback);
- DeviceStateRequest request = DeviceStateRequest.newBuilder(
- OTHER_DEVICE_STATE.getIdentifier()).build();
+ final DeviceStateRequest request =
+ DeviceStateRequest.newBuilder(OTHER_DEVICE_STATE.getIdentifier()).build();
mDeviceStateManagerGlobal.requestBaseStateOverride(request, null /* executor */,
null /* callback */);
verify(callback).onDeviceStateChanged(eq(OTHER_DEVICE_STATE));
- assertEquals(OTHER_DEVICE_STATE, mService.getBaseState());
+ assertThat(mService.getBaseState()).isEqualTo(OTHER_DEVICE_STATE);
reset(callback);
- DeviceStateRequest secondRequest = DeviceStateRequest.newBuilder(
- DEFAULT_DEVICE_STATE.getIdentifier()).build();
+ final DeviceStateRequest secondRequest =
+ DeviceStateRequest.newBuilder(DEFAULT_DEVICE_STATE.getIdentifier()).build();
mDeviceStateManagerGlobal.requestState(secondRequest, null, null);
- assertEquals(OTHER_DEVICE_STATE, mService.getBaseState());
+ assertThat(mService.getBaseState()).isEqualTo(OTHER_DEVICE_STATE);
verify(callback).onDeviceStateChanged(eq(DEFAULT_DEVICE_STATE));
reset(callback);
@@ -214,10 +218,10 @@ public final class DeviceStateManagerGlobalTest {
@Test
public void verifyDeviceStateRequestCallbacksCalled() {
- DeviceStateRequest.Callback callback = mock(TestDeviceStateRequestCallback.class);
+ final DeviceStateRequest.Callback callback = mock(TestDeviceStateRequestCallback.class);
- DeviceStateRequest request = DeviceStateRequest.newBuilder(
- OTHER_DEVICE_STATE.getIdentifier()).build();
+ final DeviceStateRequest request =
+ DeviceStateRequest.newBuilder(OTHER_DEVICE_STATE.getIdentifier()).build();
mDeviceStateManagerGlobal.requestState(request,
ConcurrentUtils.DIRECT_EXECUTOR /* executor */,
callback /* callback */);
@@ -232,52 +236,55 @@ public final class DeviceStateManagerGlobalTest {
public static class TestDeviceStateRequestCallback implements DeviceStateRequest.Callback {
@Override
- public void onRequestActivated(DeviceStateRequest request) { }
+ public void onRequestActivated(@NonNull DeviceStateRequest request) { }
@Override
- public void onRequestCanceled(DeviceStateRequest request) { }
+ public void onRequestCanceled(@NonNull DeviceStateRequest request) { }
@Override
- public void onRequestSuspended(DeviceStateRequest request) { }
+ public void onRequestSuspended(@NonNull DeviceStateRequest request) { }
}
private static final class TestDeviceStateManagerService extends IDeviceStateManager.Stub {
- public static final class Request {
- public final IBinder token;
- public final int state;
- public final int flags;
-
- private Request(IBinder token, int state, int flags) {
- this.token = token;
- this.state = state;
- this.flags = flags;
+ static final class Request {
+ @NonNull
+ final IBinder mToken;
+ final int mState;
+
+ private Request(@NonNull IBinder token, int state) {
+ this.mToken = token;
+ this.mState = state;
}
}
- private List<DeviceState> mSupportedDeviceStates = List.of(DEFAULT_DEVICE_STATE,
- OTHER_DEVICE_STATE);
-
+ @NonNull
+ private List<DeviceState> mSupportedDeviceStates =
+ List.of(DEFAULT_DEVICE_STATE, OTHER_DEVICE_STATE);
+ @NonNull
private DeviceState mBaseState = DEFAULT_DEVICE_STATE;
+ @Nullable
private Request mRequest;
+ @Nullable
private Request mBaseStateRequest;
private final Set<IDeviceStateManagerCallback> mCallbacks = new HashSet<>();
- TestDeviceStateManagerService(FakePermissionEnforcer enforcer) {
+ TestDeviceStateManagerService(@NonNull FakePermissionEnforcer enforcer) {
super(enforcer);
}
+ @NonNull
private DeviceStateInfo getInfo() {
final int mergedBaseState = mBaseStateRequest == null
- ? mBaseState.getIdentifier() : mBaseStateRequest.state;
- final int mergedState = mRequest == null
- ? mergedBaseState : mRequest.state;
+ ? mBaseState.getIdentifier() : mBaseStateRequest.mState;
+ final int mergedState = mRequest == null ? mergedBaseState : mRequest.mState;
+ final ArrayList<DeviceState> supportedStates = new ArrayList<>(mSupportedDeviceStates);
final DeviceState baseState = new DeviceState(
new DeviceState.Configuration.Builder(mergedBaseState, "" /* name */).build());
final DeviceState state = new DeviceState(
new DeviceState.Configuration.Builder(mergedState, "" /* name */).build());
- return new DeviceStateInfo(new ArrayList<>(mSupportedDeviceStates), baseState, state);
+ return new DeviceStateInfo(supportedStates, baseState, state);
}
private void notifyDeviceStateInfoChanged() {
@@ -291,6 +298,7 @@ public final class DeviceStateManagerGlobalTest {
}
}
+ @NonNull
@Override
public DeviceStateInfo getDeviceStateInfo() {
return getInfo();
@@ -311,18 +319,18 @@ public final class DeviceStateManagerGlobalTest {
}
@Override
- public void requestState(IBinder token, int state, int flags) {
+ public void requestState(@NonNull IBinder token, int state, int unusedFlags) {
if (mRequest != null) {
for (IDeviceStateManagerCallback callback : mCallbacks) {
try {
- callback.onRequestCanceled(mRequest.token);
+ callback.onRequestCanceled(mRequest.mToken);
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
}
}
- final Request request = new Request(token, state, flags);
+ final Request request = new Request(token, state);
mRequest = request;
notifyDeviceStateInfoChanged();
@@ -337,7 +345,7 @@ public final class DeviceStateManagerGlobalTest {
@Override
public void cancelStateRequest() {
- IBinder token = mRequest.token;
+ final IBinder token = mRequest.mToken;
mRequest = null;
for (IDeviceStateManagerCallback callback : mCallbacks) {
try {
@@ -350,19 +358,18 @@ public final class DeviceStateManagerGlobalTest {
}
@Override
- public void requestBaseStateOverride(IBinder token, int state, int flags) {
+ public void requestBaseStateOverride(@NonNull IBinder token, int state, int unusedFlags) {
if (mBaseStateRequest != null) {
for (IDeviceStateManagerCallback callback : mCallbacks) {
try {
- callback.onRequestCanceled(mBaseStateRequest.token);
+ callback.onRequestCanceled(mBaseStateRequest.mToken);
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
}
}
- final Request request = new Request(token, state, flags);
- mBaseStateRequest = request;
+ mBaseStateRequest = new Request(token, state);
notifyDeviceStateInfoChanged();
for (IDeviceStateManagerCallback callback : mCallbacks) {
@@ -376,7 +383,7 @@ public final class DeviceStateManagerGlobalTest {
@Override
public void cancelBaseStateOverride() throws RemoteException {
- IBinder token = mBaseStateRequest.token;
+ final IBinder token = mBaseStateRequest.mToken;
mBaseStateRequest = null;
for (IDeviceStateManagerCallback callback : mCallbacks) {
try {
@@ -396,24 +403,27 @@ public final class DeviceStateManagerGlobalTest {
onStateRequestOverlayDismissed_enforcePermission();
}
- public void setSupportedStates(List<DeviceState> states) {
+ public void setSupportedStates(@NonNull List<DeviceState> states) {
mSupportedDeviceStates = states;
notifyDeviceStateInfoChanged();
}
+ @NonNull
public List<DeviceState> getSupportedDeviceStates() {
return mSupportedDeviceStates;
}
- public void setBaseState(DeviceState state) {
+ public void setBaseState(@NonNull DeviceState state) {
mBaseState = state;
notifyDeviceStateInfoChanged();
}
+ @NonNull
public DeviceState getBaseState() {
return getInfo().baseState;
}
+ @NonNull
public DeviceState getMergedState() {
return getInfo().currentState;
}
diff --git a/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateTest.java b/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateTest.java
index 78d4324ebb1a..83b5ff3ce0a5 100644
--- a/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateTest.java
+++ b/core/tests/devicestatetests/src/android/hardware/devicestate/DeviceStateTest.java
@@ -21,17 +21,16 @@ import static android.hardware.devicestate.DeviceState.PROPERTY_POLICY_AVAILABLE
import static android.hardware.devicestate.DeviceState.PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS;
import static android.hardware.devicestate.DeviceStateManager.MINIMUM_DEVICE_STATE_IDENTIFIER;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
-import junit.framework.Assert;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import java.util.HashSet;
import java.util.List;
@@ -39,28 +38,32 @@ import java.util.Set;
/**
* Unit tests for {@link android.hardware.devicestate.DeviceState}.
- * <p/>
- * Run with <code>atest DeviceStateTest</code>.
+ *
+ * <p> Build/Install/Run:
+ * atest FrameworksCoreDeviceStateManagerTests:DeviceStateTest
*/
@Presubmit
-@RunWith(JUnit4.class)
+@SmallTest
+@RunWith(AndroidJUnit4.class)
public final class DeviceStateTest {
@Test
public void testConstruct() {
- DeviceState.Configuration config = new DeviceState.Configuration.Builder(
+ final DeviceState.Configuration config = new DeviceState.Configuration.Builder(
MINIMUM_DEVICE_STATE_IDENTIFIER, "TEST_CLOSED")
.setSystemProperties(
new HashSet<>(List.of(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS)))
.build();
+
final DeviceState state = new DeviceState(config);
- assertEquals(state.getIdentifier(), MINIMUM_DEVICE_STATE_IDENTIFIER);
- assertEquals(state.getName(), "TEST_CLOSED");
- assertTrue(state.hasProperty(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS));
+
+ assertThat(state.getIdentifier()).isEqualTo(MINIMUM_DEVICE_STATE_IDENTIFIER);
+ assertThat(state.getName()).isEqualTo("TEST_CLOSED");
+ assertThat(state.hasProperty(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS)).isTrue();
}
@Test
public void testHasProperties() {
- DeviceState.Configuration config = new DeviceState.Configuration.Builder(
+ final DeviceState.Configuration config = new DeviceState.Configuration.Builder(
MINIMUM_DEVICE_STATE_IDENTIFIER, "TEST")
.setSystemProperties(new HashSet<>(List.of(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS,
PROPERTY_POLICY_AVAILABLE_FOR_APP_REQUEST)))
@@ -68,10 +71,10 @@ public final class DeviceStateTest {
final DeviceState state = new DeviceState(config);
- assertTrue(state.hasProperty(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS));
- assertTrue(state.hasProperty(PROPERTY_POLICY_AVAILABLE_FOR_APP_REQUEST));
- assertTrue(state.hasProperties(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS,
- PROPERTY_POLICY_AVAILABLE_FOR_APP_REQUEST));
+ assertThat(state.hasProperty(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS)).isTrue();
+ assertThat(state.hasProperty(PROPERTY_POLICY_AVAILABLE_FOR_APP_REQUEST)).isTrue();
+ assertThat(state.hasProperties(PROPERTY_POLICY_CANCEL_OVERRIDE_REQUESTS,
+ PROPERTY_POLICY_AVAILABLE_FOR_APP_REQUEST)).isTrue();
}
@Test
@@ -91,7 +94,7 @@ public final class DeviceStateTest {
final DeviceState.Configuration stateConfiguration =
DeviceState.Configuration.CREATOR.createFromParcel(parcel);
- Assert.assertEquals(originalState, new DeviceState(stateConfiguration));
+ assertThat(originalState).isEqualTo(new DeviceState(stateConfiguration));
}
@Test
@@ -109,6 +112,6 @@ public final class DeviceStateTest {
final DeviceState.Configuration stateConfiguration =
DeviceState.Configuration.CREATOR.createFromParcel(parcel);
- Assert.assertEquals(originalState, new DeviceState(stateConfiguration));
+ assertThat(originalState).isEqualTo(new DeviceState(stateConfiguration));
}
}
diff --git a/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java b/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
index 1094bee1e7e6..6216a58f989a 100644
--- a/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
+++ b/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
@@ -785,8 +785,8 @@ public final class DeviceStateManagerService extends SystemService {
+ " IDeviceStateManagerCallback.");
}
- ProcessRecord record = new ProcessRecord(callback, pid, this::handleProcessDied,
- mHandler);
+ final ProcessRecord record =
+ new ProcessRecord(callback, pid, this::handleProcessDied, mHandler);
try {
callback.asBinder().linkToDeath(record, 0);
} catch (RemoteException ex) {
@@ -797,8 +797,8 @@ public final class DeviceStateManagerService extends SystemService {
// Callback clients should not be notified of invalid device states, so calls to
// #getDeviceStateInfoLocked should be gated on checks if a committed state is present
// before getting the device state info.
- DeviceStateInfo currentInfo = mCommittedState.isPresent()
- ? getDeviceStateInfoLocked() : null;
+ final DeviceStateInfo currentInfo =
+ mCommittedState.isPresent() ? getDeviceStateInfoLocked() : null;
if (currentInfo != null) {
// If there is not a committed state we'll wait to notify the process of the initial
// value.
diff --git a/services/tests/servicestests/src/com/android/server/devicestate/DeviceStateManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/devicestate/DeviceStateManagerServiceTest.java
index 733f0565fd83..b565f4b5367b 100644
--- a/services/tests/servicestests/src/com/android/server/devicestate/DeviceStateManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicestate/DeviceStateManagerServiceTest.java
@@ -24,13 +24,9 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertThrows;
-import android.annotation.NonNull;
+import android.content.Context;
import android.hardware.devicestate.DeviceState;
import android.hardware.devicestate.DeviceStateInfo;
import android.hardware.devicestate.DeviceStateRequest;
@@ -40,9 +36,10 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
-import androidx.test.InstrumentationRegistry;
+import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.FlakyTest;
-import androidx.test.runner.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
import com.android.compatibility.common.util.PollingCheck;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -63,16 +60,25 @@ import javax.annotation.Nullable;
/**
* Unit tests for {@link DeviceStateManagerService}.
- * <p/>
- * Run with <code>atest DeviceStateManagerServiceTest</code>.
+ *
+ * <p> Build/Install/Run:
+ * atest FrameworksServicesTests:DeviceStateManagerServiceTest
*/
@Presubmit
@RunWith(AndroidJUnit4.class)
public final class DeviceStateManagerServiceTest {
private static final DeviceState DEFAULT_DEVICE_STATE = new DeviceState(
new DeviceState.Configuration.Builder(0, "DEFAULT").build());
+ private static final int DEFAULT_DEVICE_STATE_IDENTIFIER = DEFAULT_DEVICE_STATE.getIdentifier();
+ private static final String DEFAULT_DEVICE_STATE_TRACE_STRING =
+ DEFAULT_DEVICE_STATE_IDENTIFIER + ":" + DEFAULT_DEVICE_STATE.getName();
+
private static final DeviceState OTHER_DEVICE_STATE = new DeviceState(
new DeviceState.Configuration.Builder(1, "DEFAULT").build());
+ private static final int OTHER_DEVICE_STATE_IDENTIFIER = OTHER_DEVICE_STATE.getIdentifier();
+ private static final String OTHER_DEVICE_STATE_TRACE_STRING =
+ OTHER_DEVICE_STATE_IDENTIFIER + ":" + OTHER_DEVICE_STATE.getName();
+
private static final DeviceState DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP =
new DeviceState(new DeviceState.Configuration.Builder(2,
"DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP")
@@ -93,24 +99,29 @@ public final class DeviceStateManagerServiceTest {
private static final int TIMEOUT = 2000;
+ private final Context mContext = InstrumentationRegistry.getInstrumentation().getContext();
+ @NonNull
private TestDeviceStatePolicy mPolicy;
+ @NonNull
private TestDeviceStateProvider mProvider;
+ @NonNull
private DeviceStateManagerService mService;
+ @NonNull
private TestSystemPropertySetter mSysPropSetter;
+ @NonNull
private WindowProcessController mWindowProcessController;
@Before
public void setup() {
mProvider = new TestDeviceStateProvider();
- mPolicy = new TestDeviceStatePolicy(mProvider);
+ mPolicy = new TestDeviceStatePolicy(mContext, mProvider);
mSysPropSetter = new TestSystemPropertySetter();
setupDeviceStateManagerService();
flushHandler(); // Flush the handler to ensure the initial values are committed.
}
private void setupDeviceStateManagerService() {
- mService = new DeviceStateManagerService(InstrumentationRegistry.getContext(), mPolicy,
- mSysPropSetter);
+ mService = new DeviceStateManagerService(mContext, mPolicy, mSysPropSetter);
// Necessary to allow us to check for top app process id in tests
mService.mActivityTaskManagerInternal = mock(ActivityTaskManagerInternal.class);
@@ -136,56 +147,53 @@ public final class DeviceStateManagerServiceTest {
@Test
public void baseStateChanged() {
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
-
- mProvider.setState(OTHER_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
+
+ mProvider.setState(OTHER_DEVICE_STATE_IDENTIFIER);
flushHandler();
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
+
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
}
@Test
public void baseStateChanged_withStatePendingPolicyCallback() {
mPolicy.blockConfigure();
- mProvider.setState(OTHER_DEVICE_STATE.getIdentifier());
+ mProvider.setState(OTHER_DEVICE_STATE_IDENTIFIER);
flushHandler();
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
-
- mProvider.setState(DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
+
+ mProvider.setState(DEFAULT_DEVICE_STATE_IDENTIFIER);
flushHandler();
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
mPolicy.resumeConfigure();
flushHandler();
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
}
@Test
@@ -194,13 +202,12 @@ public final class DeviceStateManagerServiceTest {
mProvider.setState(UNSUPPORTED_DEVICE_STATE.getIdentifier());
});
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
}
@Test
@@ -208,25 +215,23 @@ public final class DeviceStateManagerServiceTest {
assertThrows(IllegalArgumentException.class,
() -> mProvider.setState(INVALID_DEVICE_STATE_IDENTIFIER));
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
}
@Test
public void supportedStatesChanged() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
assertThat(mService.getSupportedStates()).containsExactly(DEFAULT_DEVICE_STATE,
OTHER_DEVICE_STATE, DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP);
@@ -235,30 +240,29 @@ public final class DeviceStateManagerServiceTest {
// The current committed and requests states do not change because the current state remains
// supported.
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
assertThat(mService.getSupportedStates()).containsExactly(DEFAULT_DEVICE_STATE);
- assertEquals(callback.getLastNotifiedInfo().supportedStates, List.of(DEFAULT_DEVICE_STATE));
+ assertThat(callback.getLastNotifiedInfo().supportedStates)
+ .containsExactly(DEFAULT_DEVICE_STATE);
}
@Test
public void supportedStatesChanged_statesRemainSame() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
// An initial callback will be triggered on registration, so we clear it here.
flushHandler();
callback.clearLastNotifiedInfo();
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
assertThat(mService.getSupportedStates()).containsExactly(DEFAULT_DEVICE_STATE,
OTHER_DEVICE_STATE, DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP);
@@ -268,26 +272,26 @@ public final class DeviceStateManagerServiceTest {
// The current committed and requests states do not change because the current state remains
// supported.
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
assertThat(mService.getSupportedStates()).containsExactly(DEFAULT_DEVICE_STATE,
OTHER_DEVICE_STATE, DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP);
// The callback wasn't notified about a change in supported states as the states have not
// changed.
- assertNull(callback.getLastNotifiedInfo());
+ assertThat(callback.getLastNotifiedInfo()).isNull();
}
@Test
public void getDeviceStateInfo() throws RemoteException {
- DeviceStateInfo info = mService.getBinderService().getDeviceStateInfo();
- assertNotNull(info);
- assertEquals(info.supportedStates, SUPPORTED_DEVICE_STATES);
- assertEquals(info.baseState, DEFAULT_DEVICE_STATE);
- assertEquals(info.currentState, DEFAULT_DEVICE_STATE);
+ final DeviceStateInfo info = mService.getBinderService().getDeviceStateInfo();
+ assertThat(info).isNotNull();
+ assertThat(info.supportedStates)
+ .containsExactlyElementsIn(SUPPORTED_DEVICE_STATES).inOrder();
+ assertThat(info.baseState).isEqualTo(DEFAULT_DEVICE_STATE);
+ assertThat(info.currentState).isEqualTo(DEFAULT_DEVICE_STATE);
}
@FlakyTest(bugId = 297949293)
@@ -295,105 +299,109 @@ public final class DeviceStateManagerServiceTest {
public void getDeviceStateInfo_baseStateAndCommittedStateNotSet() throws RemoteException {
// Create a provider and a service without an initial base state.
mProvider = new TestDeviceStateProvider(null /* initialState */);
- mPolicy = new TestDeviceStatePolicy(mProvider);
+ mPolicy = new TestDeviceStatePolicy(mContext, mProvider);
setupDeviceStateManagerService();
flushHandler(); // Flush the handler to ensure the initial values are committed.
- DeviceStateInfo info = mService.getBinderService().getDeviceStateInfo();
+ final DeviceStateInfo info = mService.getBinderService().getDeviceStateInfo();
- assertEquals(info.supportedStates, SUPPORTED_DEVICE_STATES);
- assertEquals(info.baseState.getIdentifier(), INVALID_DEVICE_STATE_IDENTIFIER);
- assertEquals(info.currentState.getIdentifier(), INVALID_DEVICE_STATE_IDENTIFIER);
+ assertThat(info.supportedStates)
+ .containsExactlyElementsIn(SUPPORTED_DEVICE_STATES).inOrder();
+ assertThat(info.baseState.getIdentifier()).isEqualTo(INVALID_DEVICE_STATE_IDENTIFIER);
+ assertThat(info.currentState.getIdentifier()).isEqualTo(INVALID_DEVICE_STATE_IDENTIFIER);
}
@Test
public void registerCallback() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
- mProvider.setState(OTHER_DEVICE_STATE.getIdentifier());
+ mProvider.setState(OTHER_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().baseState.getIdentifier()
- == OTHER_DEVICE_STATE.getIdentifier());
+ == OTHER_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().currentState.getIdentifier()
- == OTHER_DEVICE_STATE.getIdentifier());
+ == OTHER_DEVICE_STATE_IDENTIFIER);
- mProvider.setState(DEFAULT_DEVICE_STATE.getIdentifier());
+ mProvider.setState(DEFAULT_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().baseState.getIdentifier()
- == DEFAULT_DEVICE_STATE.getIdentifier());
-
+ == DEFAULT_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().currentState.getIdentifier()
- == DEFAULT_DEVICE_STATE.getIdentifier());
+ == DEFAULT_DEVICE_STATE_IDENTIFIER);
mPolicy.blockConfigure();
- mProvider.setState(OTHER_DEVICE_STATE.getIdentifier());
+ mProvider.setState(OTHER_DEVICE_STATE_IDENTIFIER);
// The callback should not have been notified of the state change as the policy is still
// pending callback.
waitAndAssert(() -> callback.getLastNotifiedInfo().baseState.getIdentifier()
- == DEFAULT_DEVICE_STATE.getIdentifier());
+ == DEFAULT_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().currentState.getIdentifier()
- == DEFAULT_DEVICE_STATE.getIdentifier());
+ == DEFAULT_DEVICE_STATE_IDENTIFIER);
mPolicy.resumeConfigure();
// Now that the policy is finished processing the callback should be notified of the state
// change.
waitAndAssert(() -> callback.getLastNotifiedInfo().baseState.getIdentifier()
- == OTHER_DEVICE_STATE.getIdentifier());
+ == OTHER_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().currentState.getIdentifier()
- == OTHER_DEVICE_STATE.getIdentifier());
+ == OTHER_DEVICE_STATE_IDENTIFIER);
}
@Test
- public void registerCallback_emitsInitialValue() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ public void registerCallback_initialValueAvailable_emitsDeviceState() throws RemoteException {
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+
mService.getBinderService().registerCallback(callback);
flushHandler();
- assertNotNull(callback.getLastNotifiedInfo());
- assertEquals(callback.getLastNotifiedInfo().baseState, DEFAULT_DEVICE_STATE);
- assertEquals(callback.getLastNotifiedInfo().currentState, DEFAULT_DEVICE_STATE);
+ final DeviceStateInfo stateInfo = callback.getLastNotifiedInfo();
+
+ assertThat(stateInfo).isNotNull();
+ assertThat(stateInfo.baseState).isEqualTo(DEFAULT_DEVICE_STATE);
+ assertThat(stateInfo.currentState).isEqualTo(DEFAULT_DEVICE_STATE);
}
@Test
- public void registerCallback_initialValueUnavailable() throws RemoteException {
+ public void registerCallback_initialValueUnavailable_nullDeviceState() throws RemoteException {
// Create a provider and a service without an initial base state.
mProvider = new TestDeviceStateProvider(null /* initialState */);
- mPolicy = new TestDeviceStatePolicy(mProvider);
+ mPolicy = new TestDeviceStatePolicy(mContext, mProvider);
setupDeviceStateManagerService();
flushHandler(); // Flush the handler to ensure the initial values are committed.
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
+ final DeviceStateInfo stateInfo = callback.getLastNotifiedInfo();
+
// The callback should never be called when the base state is not set yet.
- assertNull(callback.getLastNotifiedInfo());
+ assertThat(stateInfo).isNull();
}
@Test
public void requestState() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- mService.getBinderService().requestState(token, OTHER_DEVICE_STATE.getIdentifier(),
- 0 /* flags */);
+ mService.getBinderService()
+ .requestState(token, OTHER_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
waitAndAssert(() -> callback.getLastNotifiedStatus(token)
== TestDeviceStateManagerCallback.STATUS_ACTIVE);
// Committed state changes as there is a requested override.
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getOverrideState().get(), OTHER_DEVICE_STATE);
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
-
- assertNotNull(callback.getLastNotifiedInfo());
- assertEquals(callback.getLastNotifiedInfo().baseState, DEFAULT_DEVICE_STATE);
- assertEquals(callback.getLastNotifiedInfo().currentState, OTHER_DEVICE_STATE);
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getOverrideState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
+
+ assertThat(callback.getLastNotifiedInfo()).isNotNull();
+ assertThat(callback.getLastNotifiedInfo().baseState).isEqualTo(DEFAULT_DEVICE_STATE);
+ assertThat(callback.getLastNotifiedInfo().currentState).isEqualTo(OTHER_DEVICE_STATE);
mService.getBinderService().cancelStateRequest();
@@ -401,21 +409,20 @@ public final class DeviceStateManagerServiceTest {
== TestDeviceStateManagerCallback.STATUS_CANCELED);
// Committed state is set back to the requested state once the override is cleared.
waitAndAssert(() -> mService.getCommittedState().equals(Optional.of(DEFAULT_DEVICE_STATE)));
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
-
- assertEquals(callback.getLastNotifiedInfo().baseState, DEFAULT_DEVICE_STATE);
- assertEquals(callback.getLastNotifiedInfo().currentState, DEFAULT_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
+
+ assertThat(callback.getLastNotifiedInfo().baseState).isEqualTo(DEFAULT_DEVICE_STATE);
+ assertThat(callback.getLastNotifiedInfo().currentState).isEqualTo(DEFAULT_DEVICE_STATE);
}
@FlakyTest(bugId = 200332057)
@Test
public void requestState_pendingStateAtRequest() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
@@ -423,134 +430,129 @@ public final class DeviceStateManagerServiceTest {
final IBinder firstRequestToken = new Binder();
final IBinder secondRequestToken = new Binder();
- assertEquals(callback.getLastNotifiedStatus(firstRequestToken),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- assertEquals(callback.getLastNotifiedStatus(secondRequestToken),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(firstRequestToken))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(secondRequestToken))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- mService.getBinderService().requestState(firstRequestToken,
- OTHER_DEVICE_STATE.getIdentifier(), 0 /* flags */);
+ mService.getBinderService()
+ .requestState(firstRequestToken, OTHER_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
// Flush the handler twice. The first flush ensures the request is added and the policy is
// notified, while the second flush ensures the callback is notified once the change is
// committed.
flushHandler(2 /* count */);
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
- mService.getBinderService().requestState(secondRequestToken,
- DEFAULT_DEVICE_STATE.getIdentifier(), 0 /* flags */);
+ mService.getBinderService()
+ .requestState(secondRequestToken, DEFAULT_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
mPolicy.resumeConfigureOnce();
flushHandler();
// First request status is now canceled as there is another pending request.
- assertEquals(callback.getLastNotifiedStatus(firstRequestToken),
- TestDeviceStateManagerCallback.STATUS_CANCELED);
+ assertThat(callback.getLastNotifiedStatus(firstRequestToken))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_CANCELED);
// Second request status still unknown because the service is still awaiting policy
// callback.
- assertEquals(callback.getLastNotifiedStatus(secondRequestToken),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(callback.getLastNotifiedStatus(secondRequestToken))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getPendingState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
mPolicy.resumeConfigure();
flushHandler();
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
// Now cancel the second request to make the first request active.
mService.getBinderService().cancelStateRequest();
flushHandler();
- assertEquals(callback.getLastNotifiedStatus(firstRequestToken),
- TestDeviceStateManagerCallback.STATUS_CANCELED);
- assertEquals(callback.getLastNotifiedStatus(secondRequestToken),
- TestDeviceStateManagerCallback.STATUS_CANCELED);
-
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getPendingState(), Optional.empty());
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(callback.getLastNotifiedStatus(firstRequestToken))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_CANCELED);
+ assertThat(callback.getLastNotifiedStatus(secondRequestToken))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_CANCELED);
+
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getPendingState()).isEmpty();
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
}
@Test
public void requestState_sameAsBaseState() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- mService.getBinderService().requestState(token, DEFAULT_DEVICE_STATE.getIdentifier(),
- 0 /* flags */);
+ mService.getBinderService()
+ .requestState(token, DEFAULT_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
flushHandler();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_ACTIVE);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_ACTIVE);
}
@Test
public void requestState_flagCancelWhenBaseChanges() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- mService.getBinderService().requestState(token, OTHER_DEVICE_STATE.getIdentifier(),
+ mService.getBinderService().requestState(token, OTHER_DEVICE_STATE_IDENTIFIER,
DeviceStateRequest.FLAG_CANCEL_WHEN_BASE_CHANGES);
// Flush the handler twice. The first flush ensures the request is added and the policy is
// notified, while the second flush ensures the callback is notified once the change is
// committed.
flushHandler(2 /* count */);
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_ACTIVE);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_ACTIVE);
// Committed state changes as there is a requested override.
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getOverrideState().get(), OTHER_DEVICE_STATE);
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
-
- mProvider.setState(OTHER_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getOverrideState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
+
+ mProvider.setState(OTHER_DEVICE_STATE_IDENTIFIER);
flushHandler();
// Request is canceled because the base state changed.
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_CANCELED);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_CANCELED);
// Committed state is set back to the requested state once the override is cleared.
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getBaseState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
}
@Test
@@ -581,8 +583,8 @@ public final class DeviceStateManagerServiceTest {
requestState_flagCancelWhenRequesterNotOnTop_common(
// When the app is foreground, the state should not change
() -> {
- int pid = Binder.getCallingPid();
- int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
try {
mService.mProcessObserver.onForegroundActivitiesChanged(pid, uid,
true /* foregroundActivities */);
@@ -594,8 +596,8 @@ public final class DeviceStateManagerServiceTest {
() -> {
when(mWindowProcessController.getPid()).thenReturn(FAKE_PROCESS_ID);
try {
- int pid = Binder.getCallingPid();
- int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
mService.mProcessObserver.onForegroundActivitiesChanged(pid, uid,
false /* foregroundActivities */);
@@ -609,68 +611,66 @@ public final class DeviceStateManagerServiceTest {
@FlakyTest(bugId = 200332057)
@Test
public void requestState_becomesUnsupported() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
- mService.getBinderService().requestState(token, OTHER_DEVICE_STATE.getIdentifier(),
- 0 /* flags */);
+ mService.getBinderService()
+ .requestState(token, OTHER_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
flushHandler();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_ACTIVE);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_ACTIVE);
// Committed state changes as there is a requested override.
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mService.getOverrideState().get(), OTHER_DEVICE_STATE);
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getOverrideState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
mProvider.notifySupportedDeviceStates(
new DeviceState[]{DEFAULT_DEVICE_STATE});
flushHandler();
// Request is canceled because the state is no longer supported.
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_CANCELED);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_CANCELED);
// Committed state is set back to the requested state as the override state is no longer
// supported.
- assertEquals(mService.getCommittedState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
}
@Test
public void requestState_unsupportedState() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
assertThrows(IllegalArgumentException.class, () -> {
final IBinder token = new Binder();
- mService.getBinderService().requestState(token,
- UNSUPPORTED_DEVICE_STATE.getIdentifier(), 0 /* flags */);
+ mService.getBinderService()
+ .requestState(token, UNSUPPORTED_DEVICE_STATE.getIdentifier(), 0 /* flags */);
});
}
@Test
public void requestState_invalidState() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
assertThrows(IllegalArgumentException.class, () -> {
final IBinder token = new Binder();
- mService.getBinderService().requestState(token, INVALID_DEVICE_STATE_IDENTIFIER,
- 0 /* flags */);
+ mService.getBinderService()
+ .requestState(token, INVALID_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
});
}
@@ -678,40 +678,39 @@ public final class DeviceStateManagerServiceTest {
public void requestState_beforeRegisteringCallback() {
assertThrows(IllegalStateException.class, () -> {
final IBinder token = new Binder();
- mService.getBinderService().requestState(token, DEFAULT_DEVICE_STATE.getIdentifier(),
- 0 /* flags */);
+ mService.getBinderService()
+ .requestState(token, DEFAULT_DEVICE_STATE_IDENTIFIER, 0 /* flags */);
});
}
@Test
public void requestBaseStateOverride() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
mService.getBinderService().requestBaseStateOverride(token,
- OTHER_DEVICE_STATE.getIdentifier(),
+ OTHER_DEVICE_STATE_IDENTIFIER,
0 /* flags */);
waitAndAssert(() -> callback.getLastNotifiedStatus(token)
== TestDeviceStateManagerCallback.STATUS_ACTIVE);
// Committed state changes as there is a requested override.
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getOverrideBaseState().get(), OTHER_DEVICE_STATE);
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
-
- assertNotNull(callback.getLastNotifiedInfo());
- assertEquals(callback.getLastNotifiedInfo().baseState, OTHER_DEVICE_STATE);
- assertEquals(callback.getLastNotifiedInfo().currentState, OTHER_DEVICE_STATE);
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getOverrideBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
+
+ assertThat(callback.getLastNotifiedInfo()).isNotNull();
+ assertThat(callback.getLastNotifiedInfo().baseState).isEqualTo(OTHER_DEVICE_STATE);
+ assertThat(callback.getLastNotifiedInfo().currentState).isEqualTo(OTHER_DEVICE_STATE);
mService.getBinderService().cancelBaseStateOverride();
@@ -719,52 +718,50 @@ public final class DeviceStateManagerServiceTest {
== TestDeviceStateManagerCallback.STATUS_CANCELED);
// Committed state is set back to the requested state once the override is cleared.
waitAndAssert(() -> mService.getCommittedState().equals(Optional.of(DEFAULT_DEVICE_STATE)));
- assertEquals(mSysPropSetter.getValue(),
- DEFAULT_DEVICE_STATE.getIdentifier() + ":" + DEFAULT_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(DEFAULT_DEVICE_STATE));
- assertFalse(mService.getOverrideBaseState().isPresent());
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- DEFAULT_DEVICE_STATE.getIdentifier());
+ assertThat(mSysPropSetter.getValue()).isEqualTo(DEFAULT_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(DEFAULT_DEVICE_STATE);
+ assertThat(mService.getOverrideBaseState()).isEmpty();
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(DEFAULT_DEVICE_STATE_IDENTIFIER);
waitAndAssert(() -> callback.getLastNotifiedInfo().baseState.getIdentifier()
- == DEFAULT_DEVICE_STATE.getIdentifier());
- assertEquals(callback.getLastNotifiedInfo().currentState, DEFAULT_DEVICE_STATE);
+ == DEFAULT_DEVICE_STATE_IDENTIFIER);
+ assertThat(callback.getLastNotifiedInfo().currentState).isEqualTo(DEFAULT_DEVICE_STATE);
}
@Test
public void requestBaseStateOverride_cancelledByBaseStateUpdate() throws RemoteException {
- final DeviceState testDeviceState = new DeviceState(new DeviceState.Configuration.Builder(2,
- "TEST").build());
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final DeviceState testDeviceState = new DeviceState(
+ new DeviceState.Configuration.Builder(2, "TEST").build());
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
mProvider.notifySupportedDeviceStates(new DeviceState[]{DEFAULT_DEVICE_STATE,
OTHER_DEVICE_STATE, testDeviceState});
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
mService.getBinderService().requestBaseStateOverride(token,
- OTHER_DEVICE_STATE.getIdentifier(),
+ OTHER_DEVICE_STATE_IDENTIFIER,
0 /* flags */);
waitAndAssert(() -> callback.getLastNotifiedStatus(token)
== TestDeviceStateManagerCallback.STATUS_ACTIVE);
// Committed state changes as there is a requested override.
- assertEquals(mService.getCommittedState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mSysPropSetter.getValue(),
- OTHER_DEVICE_STATE.getIdentifier() + ":" + OTHER_DEVICE_STATE.getName());
- assertEquals(mService.getBaseState(), Optional.of(OTHER_DEVICE_STATE));
- assertEquals(mService.getOverrideBaseState().get(), OTHER_DEVICE_STATE);
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- OTHER_DEVICE_STATE.getIdentifier());
-
- assertNotNull(callback.getLastNotifiedInfo());
- assertEquals(callback.getLastNotifiedInfo().baseState, OTHER_DEVICE_STATE);
- assertEquals(callback.getLastNotifiedInfo().currentState, OTHER_DEVICE_STATE);
+ assertThat(mService.getCommittedState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mSysPropSetter.getValue()).isEqualTo(OTHER_DEVICE_STATE_TRACE_STRING);
+ assertThat(mService.getBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getOverrideBaseState()).hasValue(OTHER_DEVICE_STATE);
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(OTHER_DEVICE_STATE_IDENTIFIER);
+
+ assertThat(callback.getLastNotifiedInfo()).isNotNull();
+ assertThat(callback.getLastNotifiedInfo().baseState).isEqualTo(OTHER_DEVICE_STATE);
+ assertThat(callback.getLastNotifiedInfo().currentState).isEqualTo(OTHER_DEVICE_STATE);
mProvider.setState(testDeviceState.getIdentifier());
@@ -772,22 +769,22 @@ public final class DeviceStateManagerServiceTest {
== TestDeviceStateManagerCallback.STATUS_CANCELED);
// Committed state is set to the new base state once the override is cleared.
waitAndAssert(() -> mService.getCommittedState().equals(Optional.of(testDeviceState)));
- assertEquals(mSysPropSetter.getValue(),
- testDeviceState.getIdentifier() + ":" + testDeviceState.getName());
- assertEquals(mService.getBaseState(), Optional.of(testDeviceState));
- assertFalse(mService.getOverrideBaseState().isPresent());
- assertFalse(mService.getOverrideState().isPresent());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- testDeviceState.getIdentifier());
+ assertThat(mSysPropSetter.getValue())
+ .isEqualTo(testDeviceState.getIdentifier() + ":" + testDeviceState.getName());
+ assertThat(mService.getBaseState()).hasValue(testDeviceState);
+ assertThat(mService.getOverrideBaseState()).isEmpty();
+ assertThat(mService.getOverrideState()).isEmpty();
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(testDeviceState.getIdentifier());
waitAndAssert(() -> callback.getLastNotifiedInfo().baseState.getIdentifier()
== testDeviceState.getIdentifier());
- assertEquals(callback.getLastNotifiedInfo().currentState, testDeviceState);
+ assertThat(callback.getLastNotifiedInfo().currentState).isEqualTo(testDeviceState);
}
@Test
public void requestBaseState_unsupportedState() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
assertThrows(IllegalArgumentException.class, () -> {
@@ -799,7 +796,7 @@ public final class DeviceStateManagerServiceTest {
@Test
public void requestBaseState_invalidState() throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
assertThrows(IllegalArgumentException.class, () -> {
@@ -814,7 +811,7 @@ public final class DeviceStateManagerServiceTest {
assertThrows(IllegalStateException.class, () -> {
final IBinder token = new Binder();
mService.getBinderService().requestBaseStateOverride(token,
- DEFAULT_DEVICE_STATE.getIdentifier(),
+ DEFAULT_DEVICE_STATE_IDENTIFIER,
0 /* flags */);
});
}
@@ -834,21 +831,21 @@ public final class DeviceStateManagerServiceTest {
Runnable noChangeEvent,
Runnable autoCancelEvent
) throws RemoteException {
- TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
+ final TestDeviceStateManagerCallback callback = new TestDeviceStateManagerCallback();
mService.getBinderService().registerCallback(callback);
flushHandler();
final IBinder token = new Binder();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_UNKNOWN);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_UNKNOWN);
mService.getBinderService().requestState(token,
DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP.getIdentifier(),
0 /* flags */);
flushHandler(2 /* count */);
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_ACTIVE);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_ACTIVE);
// Committed state changes as there is a requested override.
assertDeviceStateConditions(
@@ -858,8 +855,8 @@ public final class DeviceStateManagerServiceTest {
noChangeEvent.run();
flushHandler();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_ACTIVE);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_ACTIVE);
assertDeviceStateConditions(
DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP,
DEFAULT_DEVICE_STATE, /* base state */
@@ -867,8 +864,8 @@ public final class DeviceStateManagerServiceTest {
autoCancelEvent.run();
flushHandler();
- assertEquals(callback.getLastNotifiedStatus(token),
- TestDeviceStateManagerCallback.STATUS_CANCELED);
+ assertThat(callback.getLastNotifiedStatus(token))
+ .isEqualTo(TestDeviceStateManagerCallback.STATUS_CANCELED);
assertDeviceStateConditions(DEFAULT_DEVICE_STATE, DEFAULT_DEVICE_STATE,
false /* isOverrideState */);
}
@@ -881,20 +878,20 @@ public final class DeviceStateManagerServiceTest {
* @param isOverrideState whether a state override is active.
*/
private void assertDeviceStateConditions(
- DeviceState state, DeviceState baseState,
+ @NonNull DeviceState state, @NonNull DeviceState baseState,
boolean isOverrideState) {
- assertEquals(mService.getCommittedState(), Optional.of(state));
- assertEquals(mService.getBaseState(), Optional.of(baseState));
- assertEquals(mSysPropSetter.getValue(),
- state.getIdentifier() + ":" + state.getName());
- assertEquals(mPolicy.getMostRecentRequestedStateToConfigure(),
- state.getIdentifier());
+ assertThat(mService.getCommittedState()).hasValue(state);
+ assertThat(mService.getBaseState()).hasValue(baseState);
+ assertThat(mSysPropSetter.getValue())
+ .isEqualTo(state.getIdentifier() + ":" + state.getName());
+ assertThat(mPolicy.getMostRecentRequestedStateToConfigure())
+ .isEqualTo(state.getIdentifier());
if (isOverrideState) {
// When a state override is active, the committed state should batch the override state.
- assertEquals(mService.getOverrideState().get(), state);
+ assertThat(mService.getOverrideState()).hasValue(state);
} else {
// When there is no state override, the override state should be empty.
- assertFalse(mService.getOverrideState().isPresent());
+ assertThat(mService.getOverrideState()).isEmpty();
}
}
@@ -902,10 +899,11 @@ public final class DeviceStateManagerServiceTest {
private final DeviceStateProvider mProvider;
private int mLastDeviceStateRequestedToConfigure = INVALID_DEVICE_STATE_IDENTIFIER;
private boolean mConfigureBlocked = false;
+ @Nullable
private Runnable mPendingConfigureCompleteRunnable;
- TestDeviceStatePolicy(DeviceStateProvider provider) {
- super(InstrumentationRegistry.getContext());
+ TestDeviceStatePolicy(@NonNull Context context, @NonNull DeviceStateProvider provider) {
+ super(context);
mProvider = provider;
}
@@ -921,7 +919,7 @@ public final class DeviceStateManagerServiceTest {
public void resumeConfigure() {
mConfigureBlocked = false;
if (mPendingConfigureCompleteRunnable != null) {
- Runnable onComplete = mPendingConfigureCompleteRunnable;
+ final Runnable onComplete = mPendingConfigureCompleteRunnable;
mPendingConfigureCompleteRunnable = null;
onComplete.run();
}
@@ -929,7 +927,7 @@ public final class DeviceStateManagerServiceTest {
public void resumeConfigureOnce() {
if (mPendingConfigureCompleteRunnable != null) {
- Runnable onComplete = mPendingConfigureCompleteRunnable;
+ final Runnable onComplete = mPendingConfigureCompleteRunnable;
mPendingConfigureCompleteRunnable = null;
onComplete.run();
}
@@ -940,7 +938,7 @@ public final class DeviceStateManagerServiceTest {
}
@Override
- public void configureDeviceForState(int state, Runnable onComplete) {
+ public void configureDeviceForState(int state, @NonNull Runnable onComplete) {
if (mPendingConfigureCompleteRunnable != null) {
throw new IllegalStateException("configureDeviceForState() called while configure"
+ " is pending");
@@ -966,7 +964,9 @@ public final class DeviceStateManagerServiceTest {
OTHER_DEVICE_STATE,
DEVICE_STATE_CANCEL_WHEN_REQUESTER_NOT_ON_TOP};
- @Nullable private final DeviceState mInitialState;
+ @Nullable
+ private final DeviceState mInitialState;
+ @Nullable
private Listener mListener;
private TestDeviceStateProvider() {
@@ -991,7 +991,7 @@ public final class DeviceStateManagerServiceTest {
}
}
- public void notifySupportedDeviceStates(DeviceState[] supportedDeviceStates) {
+ public void notifySupportedDeviceStates(@NonNull DeviceState[] supportedDeviceStates) {
mSupportedDeviceStates = supportedDeviceStates;
mListener.onSupportedDeviceStatesChanged(supportedDeviceStates,
SUPPORTED_DEVICE_STATES_CHANGED_INITIALIZED);
@@ -1018,17 +1018,17 @@ public final class DeviceStateManagerServiceTest {
private final HashMap<IBinder, Integer> mLastNotifiedStatus = new HashMap<>();
@Override
- public void onDeviceStateInfoChanged(DeviceStateInfo info) {
+ public void onDeviceStateInfoChanged(@NonNull DeviceStateInfo info) {
mLastNotifiedInfo = info;
}
@Override
- public void onRequestActive(IBinder token) {
+ public void onRequestActive(@NonNull IBinder token) {
mLastNotifiedStatus.put(token, STATUS_ACTIVE);
}
@Override
- public void onRequestCanceled(IBinder token) {
+ public void onRequestCanceled(@NonNull IBinder token) {
mLastNotifiedStatus.put(token, STATUS_CANCELED);
}
@@ -1041,20 +1041,22 @@ public final class DeviceStateManagerServiceTest {
mLastNotifiedInfo = null;
}
- int getLastNotifiedStatus(IBinder requestToken) {
+ int getLastNotifiedStatus(@NonNull IBinder requestToken) {
return mLastNotifiedStatus.getOrDefault(requestToken, STATUS_UNKNOWN);
}
}
private static final class TestSystemPropertySetter implements
DeviceStateManagerService.SystemPropertySetter {
+ @NonNull
private String mValue;
@Override
- public void setDebugTracingDeviceStateProperty(String value) {
+ public void setDebugTracingDeviceStateProperty(@NonNull String value) {
mValue = value;
}
+ @NonNull
public String getValue() {
return mValue;
}