Fixed
Status Update
Comments
ku...@google.com <ku...@google.com>
ku...@google.com <ku...@google.com>
su...@google.com <su...@google.com>
su...@google.com <su...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 53d7e9505dce7026e7c92059d42e5de784739106
Author: Sergey Vasilinets <sergeyv@google.com>
Date: Mon Dec 06 16:26:25 2021
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
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/ConstraintListener.java
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/controllers/ConstraintController.java
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
https://android-review.googlesource.com/1911432
Branch: androidx-main
commit 53d7e9505dce7026e7c92059d42e5de784739106
Author: Sergey Vasilinets <sergeyv@google.com>
Date: Mon Dec 06 16:26:25 2021
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
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/ConstraintListener.java
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/controllers/ConstraintController.java
M work/work-runtime/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
M work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
Description
Version used: 1.0.0-alpha02
Theme used: N/A
Devices/Android versions reproduced on: N/A
- Relevant code to trigger the issue. N/A
- A screenrecord or screenshots showing the issue (if UI related). N/A
WorkManager has nullability annotations for input parameters, but not for return types. Consumers, especially those using Kotlin, are more likely to make bad assumptions about whether a return value is null or not, leading to potential crashes.
Example:
```
/**
* Gets a {@link LiveData} of the {@link WorkStatus} for a given work id.
*
* @param id The id of the work
* @return A {@link LiveData} of the {@link WorkStatus} associated with {@code id}
*/
public abstract LiveData<WorkStatus> getStatusById(@NonNull UUID id);
```
If the given id is not found, what is returned? A LiveData that immediately emits a Failure WorkStatus? A null LiveData? Or is an exception thrown?