Merge "DO NOT MERGE Fix Emulator not emitting folding features." into sc-v2-dev

This commit is contained in:
Diego Vela
2022-03-23 20:15:13 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 4 deletions

View File

@@ -80,7 +80,7 @@ public final class CommonFoldingFeature {
/** /**
* The possible states for a folding hinge. * The possible states for a folding hinge.
*/ */
@IntDef({COMMON_STATE_FLAT, COMMON_STATE_HALF_OPENED}) @IntDef({COMMON_STATE_UNKNOWN, COMMON_STATE_FLAT, COMMON_STATE_HALF_OPENED})
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface State { public @interface State {
} }
@@ -236,7 +236,8 @@ public final class CommonFoldingFeature {
} }
private static void assertValidState(@Nullable Integer state) { 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 throw new IllegalArgumentException("Invalid state: " + state
+ "must be either COMMON_STATE_FLAT or COMMON_STATE_HALF_OPENED"); + "must be either COMMON_STATE_FLAT or COMMON_STATE_HALF_OPENED");
} }

View File

@@ -16,6 +16,8 @@
package androidx.window.common; 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.COMMON_STATE_UNKNOWN;
import static androidx.window.common.CommonFoldingFeature.parseListFromString; import static androidx.window.common.CommonFoldingFeature.parseListFromString;
@@ -42,7 +44,10 @@ import java.util.Optional;
public final class SettingsDisplayFeatureProducer public final class SettingsDisplayFeatureProducer
extends BaseDataProducer<List<CommonFoldingFeature>> { extends BaseDataProducer<List<CommonFoldingFeature>> {
private static final String DISPLAY_FEATURES = "display_features"; 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 = private final Uri mDisplayFeaturesUri =
Settings.Global.getUriFor(DISPLAY_FEATURES); Settings.Global.getUriFor(DISPLAY_FEATURES);
@@ -55,6 +60,15 @@ public final class SettingsDisplayFeatureProducer
mObserver = new SettingsObserver(); 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 @Override
@NonNull @NonNull
public Optional<List<CommonFoldingFeature>> getData() { public Optional<List<CommonFoldingFeature>> getData() {
@@ -66,7 +80,7 @@ public final class SettingsDisplayFeatureProducer
if (TextUtils.isEmpty(displayFeaturesString)) { if (TextUtils.isEmpty(displayFeaturesString)) {
return Optional.of(Collections.emptyList()); 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; mRegisteredObservers = true;
mResolver.registerContentObserver(mDisplayFeaturesUri, false /* notifyForDescendants */, mResolver.registerContentObserver(mDisplayFeaturesUri, false /* notifyForDescendants */,
mObserver /* ContentObserver */); mObserver /* ContentObserver */);
mResolver.registerContentObserver(mDevicePostureUri, false, mObserver);
} }
/** /**
@@ -101,7 +116,7 @@ public final class SettingsDisplayFeatureProducer
@Override @Override
public void onChange(boolean selfChange, Uri uri) { public void onChange(boolean selfChange, Uri uri) {
if (mDisplayFeaturesUri.equals(uri)) { if (mDisplayFeaturesUri.equals(uri) || mDevicePostureUri.equals(uri)) {
notifyDataChanged(); notifyDataChanged();
} }
} }