[go: nahoru, domu]

Avoid nullable boolean in constraint trackers

Now instead of returning null, trackers work pessimistically,
e.g. BatteryChargingTracker says that battery isn't charging.

It is done in preparation for Kotlin migration, where
this code smell is more apparent.

bug: 209145335
Test: *TrackerTest were updated
Change-Id: Ie1dcbe8961d925784d5633a297307993f3b8a43b
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
index f8c9da7..6ac53c2 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
@@ -17,12 +17,9 @@
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNull.nullValue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -96,7 +93,7 @@
     @SmallTest
     public void testGetInitialState_nullIntent() {
         mockContextReturns(null);
-        assertThat(mTracker.getInitialState(), is(nullValue()));
+        assertThat(mTracker.getInitialState(), is(false));
     }
 
     @Test
@@ -166,11 +163,12 @@
     public void testOnBroadcastReceive_notifiesListeners_afterApi23() {
         mockContextReturns(null);
         mTracker.addListener(mListener);
-        verify(mListener, never()).onConstraintChanged(anyBoolean());
+        verify(mListener).onConstraintChanged(false);
 
         mTracker.onBroadcastReceive(mMockContext, createChargingIntent_afterApi23(true));
         verify(mListener).onConstraintChanged(true);
         mTracker.onBroadcastReceive(mMockContext, createChargingIntent_afterApi23(false));
-        verify(mListener).onConstraintChanged(false);
+        // onConstraintChanged was called once more, in total, twice
+        verify(mListener, times(2)).onConstraintChanged(false);
     }
 }
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
index f37c684..d0c6333 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
@@ -17,7 +17,6 @@
 
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.isNull;
@@ -89,7 +88,7 @@
     @SmallTest
     public void testGetInitialState_nullIntent() {
         mockContextReturns(null);
-        assertThat(mTracker.getInitialState(), is(nullValue()));
+        assertThat(mTracker.getInitialState(), is(false));
     }
 
     @Test
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
index b3ee2dc..bfe46a5 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
@@ -121,8 +121,8 @@
 
         mTracker.addListener(constraintListener1);
         mTracker.addListener(constraintListener2);
-        verify(constraintListener1).onConstraintChanged(null);
-        verify(constraintListener2).onConstraintChanged(null);
+        verify(constraintListener1).onConstraintChanged(false);
+        verify(constraintListener2).onConstraintChanged(false);
     }
 
     @Test
@@ -132,8 +132,8 @@
 
         mTracker.addListener(constraintListener1);
         mTracker.addListener(constraintListener2);
-        verify(constraintListener1).onConstraintChanged(null);
-        verify(constraintListener2).onConstraintChanged(null);
+        verify(constraintListener1).onConstraintChanged(false);
+        verify(constraintListener2).onConstraintChanged(false);
 
         mTracker.setState(true);
         verify(constraintListener1).onConstraintChanged(true);
@@ -147,10 +147,6 @@
 
         mTracker.addListener(constraintListener1);
         mTracker.addListener(constraintListener2);
-        verify(constraintListener1).onConstraintChanged(null);
-        verify(constraintListener2).onConstraintChanged(null);
-
-        mTracker.setState(false);
         verify(constraintListener1).onConstraintChanged(false);
         verify(constraintListener2).onConstraintChanged(false);
 
@@ -181,7 +177,7 @@
         int mGetInitialStateCount;
         int mStartTrackingCount;
         int mStopTrackingCount;
-        Boolean mInitialState = null;
+        boolean mInitialState = false;
 
         TestConstraintTracker(Context context, TaskExecutor taskExecutor) {
             super(context, taskExecutor);
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
index af162d8..3f71de9 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
@@ -18,10 +18,9 @@
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
@@ -108,11 +107,12 @@
     public void testOnBroadcastReceive_notifiesListeners() {
         mockContextReturns(new Intent("INVALID"));
         mTracker.addListener(mListener);
-        verify(mListener, never()).onConstraintChanged(anyBoolean());
+        verify(mListener).onConstraintChanged(false);
 
         mTracker.onBroadcastReceive(mMockContext, new Intent(Intent.ACTION_DEVICE_STORAGE_OK));
         verify(mListener).onConstraintChanged(true);
         mTracker.onBroadcastReceive(mMockContext, new Intent(Intent.ACTION_DEVICE_STORAGE_LOW));
-        verify(mListener).onConstraintChanged(false);
+        // onConstraintChanged was called once more, in total, twice
+        verify(mListener, times(2)).onConstraintChanged(false);
     }
 }
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/constraints/ConstraintListener.java b/work/work-runtime/src/main/java/androidx/work/impl/constraints/ConstraintListener.java
index f466ce8..5629347 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/constraints/ConstraintListener.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/constraints/ConstraintListener.java
@@ -16,7 +16,6 @@
 package androidx.work.impl.constraints;
 
 import androidx.annotation.MainThread;
-import androidx.annotation.Nullable;
 
 /**
  * The listener for constraint changes.
@@ -31,5 +30,5 @@
      * @param newValue the new value of the constraint
      */
     @MainThread
-    void onConstraintChanged(@Nullable T newValue);
+    void onConstraintChanged(T newValue);
 }
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/constraints/controllers/ConstraintController.java b/work/work-runtime/src/main/java/androidx/work/impl/constraints/controllers/ConstraintController.java
index 14d529a..b330c34 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/constraints/controllers/ConstraintController.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/constraints/controllers/ConstraintController.java
@@ -125,7 +125,7 @@
 
     private void updateCallback(
             @Nullable OnConstraintUpdatedCallback callback,
-            @Nullable T currentValue) {
+            T currentValue) {
 
         // We pass copies of references (callback, currentValue) to updateCallback because public
         // APIs on ConstraintController may be called from any thread, and onConstraintChanged() is
@@ -142,7 +142,7 @@
     }
 
     @Override
-    public void onConstraintChanged(@Nullable T newValue) {
+    public void onConstraintChanged(T newValue) {
         mCurrentValue = newValue;
         updateCallback(mCallback, mCurrentValue);
     }
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
index da8625f..1128d24 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
@@ -52,7 +52,7 @@
         Intent intent = mAppContext.registerReceiver(null, intentFilter);
         if (intent == null) {
             Logger.get().error(TAG, "getInitialState - null intent received");
-            return null;
+            return false;
         }
         return isBatteryChangedIntentCharging(intent);
     }
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
index 6f4d4dd..a8e4326 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
@@ -60,7 +60,7 @@
         Intent intent = mAppContext.registerReceiver(null, intentFilter);
         if (intent == null) {
             Logger.get().error(TAG, "getInitialState - null intent received");
-            return null;
+            return false;
         }
 
         int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
index f913585..4eb98d1 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
+++ b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
@@ -61,7 +61,7 @@
                 default:
                     // This should never happen because the intent filter is configured
                     // correctly.
-                    return null;
+                    return false;
             }
         }
     }