From e742c1defaa0d0cb61dde16c986c845f05056f4e Mon Sep 17 00:00:00 2001 From: Kenneth Ford Date: Mon, 5 Dec 2022 19:47:51 +0000 Subject: Continue searching for device state after exception Instead of returning if a sensor value hasn't returned we continue to look for a state that satisfy's the current device configuration. This fixes scenarios where some sensors return values much faster than others on startup, and certain states may have their conditions met. Bug: 257292818 Test: Manual Change-Id: I1796a682f0fa82ab9cba39e496369f59fd9c5721 --- .../java/com/android/server/policy/DeviceStateProviderImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java index 2a65ea2552b3..ced3a45935f8 100644 --- a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java +++ b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java @@ -378,13 +378,14 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, try { conditionSatisfied = mStateConditions.get(state).getAsBoolean(); } catch (IllegalStateException e) { - // Failed to compute the current state based on current available data. Return + // Failed to compute the current state based on current available data. Continue // with the expectation that notifyDeviceStateChangedIfNeeded() will be called - // when a callback with the missing data is triggered. + // when a callback with the missing data is triggered. May trigger another state + // change if another state is satisfied currently. if (DEBUG) { Slog.d(TAG, "Unable to check current state", e); } - return; + continue; } if (conditionSatisfied) { -- cgit v1.2.3-59-g8ed1b