diff options
| -rw-r--r-- | libs/WindowManager/Jetpack/src/androidx/window/common/CommonFoldingFeature.java | 3 | ||||
| -rw-r--r-- | libs/WindowManager/Jetpack/src/androidx/window/common/SettingsDisplayFeatureProducer.java | 19 | 
2 files changed, 19 insertions, 3 deletions
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/common/CommonFoldingFeature.java b/libs/WindowManager/Jetpack/src/androidx/window/common/CommonFoldingFeature.java index 1c49881904e4..921552b6cfbb 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/common/CommonFoldingFeature.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/common/CommonFoldingFeature.java @@ -236,7 +236,8 @@ public final class CommonFoldingFeature {      }      private static void assertValidState(@Nullable Integer state) { -        if (state != null && state != COMMON_STATE_FLAT && state != COMMON_STATE_HALF_OPENED) { +        if (state != null && state != COMMON_STATE_FLAT +                && state != COMMON_STATE_HALF_OPENED && state != COMMON_STATE_UNKNOWN) {              throw new IllegalArgumentException("Invalid state: " + state                      + "must be either COMMON_STATE_FLAT or COMMON_STATE_HALF_OPENED");          } diff --git a/libs/WindowManager/Jetpack/src/androidx/window/common/SettingsDisplayFeatureProducer.java b/libs/WindowManager/Jetpack/src/androidx/window/common/SettingsDisplayFeatureProducer.java index e9d213e06fa9..0e696eb8efb7 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/common/SettingsDisplayFeatureProducer.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/common/SettingsDisplayFeatureProducer.java @@ -16,6 +16,8 @@  package androidx.window.common; +import static androidx.window.common.CommonFoldingFeature.COMMON_STATE_FLAT; +import static androidx.window.common.CommonFoldingFeature.COMMON_STATE_HALF_OPENED;  import static androidx.window.common.CommonFoldingFeature.COMMON_STATE_UNKNOWN;  import static androidx.window.common.CommonFoldingFeature.parseListFromString; @@ -42,7 +44,10 @@ import java.util.Optional;  public final class SettingsDisplayFeatureProducer          extends BaseDataProducer<List<CommonFoldingFeature>> {      private static final String DISPLAY_FEATURES = "display_features"; +    private static final String DEVICE_POSTURE = "device_posture"; +    private final Uri mDevicePostureUri = +            Settings.Global.getUriFor(DEVICE_POSTURE);      private final Uri mDisplayFeaturesUri =              Settings.Global.getUriFor(DISPLAY_FEATURES); @@ -55,6 +60,15 @@ public final class SettingsDisplayFeatureProducer          mObserver = new SettingsObserver();      } +    private int getPosture() { +        int posture = Settings.Global.getInt(mResolver, DEVICE_POSTURE, COMMON_STATE_UNKNOWN); +        if (posture == COMMON_STATE_HALF_OPENED || posture == COMMON_STATE_FLAT) { +            return posture; +        } else { +            return COMMON_STATE_UNKNOWN; +        } +    } +      @Override      @NonNull      public Optional<List<CommonFoldingFeature>> getData() { @@ -66,7 +80,7 @@ public final class SettingsDisplayFeatureProducer          if (TextUtils.isEmpty(displayFeaturesString)) {              return Optional.of(Collections.emptyList());          } -        return Optional.of(parseListFromString(displayFeaturesString, COMMON_STATE_UNKNOWN)); +        return Optional.of(parseListFromString(displayFeaturesString, getPosture()));      }      /** @@ -80,6 +94,7 @@ public final class SettingsDisplayFeatureProducer          mRegisteredObservers = true;          mResolver.registerContentObserver(mDisplayFeaturesUri, false /* notifyForDescendants */,                  mObserver /* ContentObserver */); +        mResolver.registerContentObserver(mDevicePostureUri, false, mObserver);      }      /** @@ -101,7 +116,7 @@ public final class SettingsDisplayFeatureProducer          @Override          public void onChange(boolean selfChange, Uri uri) { -            if (mDisplayFeaturesUri.equals(uri)) { +            if (mDisplayFeaturesUri.equals(uri) || mDevicePostureUri.equals(uri)) {                  notifyDataChanged();              }          }  |