Make RequirementsWatcher notify listener on not met requirements change

PiperOrigin-RevId: 225557638
This commit is contained in:
eguven 2018-12-14 17:52:16 +00:00 committed by Oliver Woodman
parent 28dca0b339
commit 9198e4cf7a

View File

@ -44,14 +44,15 @@ public final class RequirementsWatcher {
public interface Listener { public interface Listener {
/** /**
* Called when the requirements are met. * Called when all of the requirements are met.
* *
* @param requirementsWatcher Calling instance. * @param requirementsWatcher Calling instance.
*/ */
void requirementsMet(RequirementsWatcher requirementsWatcher); void requirementsMet(RequirementsWatcher requirementsWatcher);
/** /**
* Called when the requirements are not met. * Called when there is at least one not met requirement and there is a change on which of the
* requirements are not met.
* *
* @param requirementsWatcher Calling instance. * @param requirementsWatcher Calling instance.
*/ */
@ -65,7 +66,7 @@ public final class RequirementsWatcher {
private final Requirements requirements; private final Requirements requirements;
private DeviceStatusChangeReceiver receiver; private DeviceStatusChangeReceiver receiver;
private boolean requirementsWereMet; private int notMetRequirements;
private CapabilityValidatedCallback networkCallback; private CapabilityValidatedCallback networkCallback;
/** /**
@ -87,7 +88,7 @@ public final class RequirementsWatcher {
public void start() { public void start() {
Assertions.checkNotNull(Looper.myLooper()); Assertions.checkNotNull(Looper.myLooper());
requirementsWereMet = requirements.checkRequirements(context); notMetRequirements = requirements.getNotMetRequirements(context);
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
if (requirements.getRequiredNetworkType() != Requirements.NETWORK_TYPE_NONE) { if (requirements.getRequiredNetworkType() != Requirements.NETWORK_TYPE_NONE) {
@ -159,13 +160,13 @@ public final class RequirementsWatcher {
} }
private void checkRequirements() { private void checkRequirements() {
boolean requirementsAreMet = requirements.checkRequirements(context); int notMetRequirements = requirements.getNotMetRequirements(context);
if (requirementsAreMet == requirementsWereMet) { if (this.notMetRequirements == notMetRequirements) {
logd("requirementsAreMet is still " + requirementsAreMet); logd("notMetRequirements hasn't changed: " + notMetRequirements);
return; return;
} }
requirementsWereMet = requirementsAreMet; this.notMetRequirements = notMetRequirements;
if (requirementsAreMet) { if (notMetRequirements == 0) {
logd("start job"); logd("start job");
listener.requirementsMet(this); listener.requirementsMet(this);
} else { } else {