diff options
| author | 2021-02-04 01:45:29 +0000 | |
|---|---|---|
| committer | 2021-02-04 01:45:29 +0000 | |
| commit | 951b54e2e0d7fc4173875027fffebb0e120f8be8 (patch) | |
| tree | b5dbd02bb5cdb71fd74971f43a5e0b88ef40b4fa | |
| parent | dfe7df31c93ce30fd6d0a81c44efcd3e85250615 (diff) | |
| parent | 66209fe3b22885747bcc722e9edab30cdce44030 (diff) | |
Merge "Allow multiple device states to be treated as folded." into sc-dev
4 files changed, 32 insertions, 12 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 416bc8447869..af78800cb001 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -663,9 +663,15 @@ The default is false. --> <bool name="config_lidControlsSleep">false</bool> - <!-- The device state (supplied by DeviceStateManager) that should be treated as folded by the - display fold controller. Default is DeviceStateManager.INVALID_DEVICE_STATE. --> - <integer name="config_foldedDeviceState">-1</integer> + <!-- The device states (supplied by DeviceStateManager) that should be treated as folded by the + display fold controller. Default is empty. --> + <integer-array name="config_foldedDeviceStates"> + <!-- Example: + <item>0</item> + <item>1</item> + <item>2</item> + --> + </integer-array> <!-- Indicate the display area rect for foldable devices in folded state. --> <string name="config_foldedArea"></string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 672aec62f6a6..36f10287bc61 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3731,7 +3731,7 @@ <java-symbol type="string" name="config_customCountryDetector" /> <!-- For Foldables --> - <java-symbol type="integer" name="config_foldedDeviceState" /> + <java-symbol type="array" name="config_foldedDeviceStates" /> <java-symbol type="string" name="config_foldedArea" /> <java-symbol type="array" name="config_disableApksUnlessMatchedSku_apk_list" /> diff --git a/services/core/java/com/android/server/display/LogicalDisplayMapper.java b/services/core/java/com/android/server/display/LogicalDisplayMapper.java index 8ee01bef8f54..16c4b2641433 100644 --- a/services/core/java/com/android/server/display/LogicalDisplayMapper.java +++ b/services/core/java/com/android/server/display/LogicalDisplayMapper.java @@ -107,7 +107,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { private final DisplayDeviceRepository mDisplayDeviceRepo; private final Listener mListener; - private final int mFoldedDeviceState; + private final int[] mFoldedDeviceStates; LogicalDisplayMapper(Context context, DisplayDeviceRepository repo, Listener listener) { mDisplayDeviceRepo = repo; @@ -115,8 +115,8 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { mSingleDisplayDemoMode = SystemProperties.getBoolean("persist.demo.singledisplay", false); mDisplayDeviceRepo.addListener(this); - mFoldedDeviceState = context.getResources().getInteger( - com.android.internal.R.integer.config_foldedDeviceState); + mFoldedDeviceStates = context.getResources().getIntArray( + com.android.internal.R.array.config_foldedDeviceStates); loadFoldedDisplayConfig(context); } @@ -232,7 +232,14 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { } void setDeviceStateLocked(int state) { - setDeviceFoldedLocked(state == mFoldedDeviceState); + boolean folded = false; + for (int i = 0; i < mFoldedDeviceStates.length; i++) { + if (state == mFoldedDeviceStates[i]) { + folded = true; + break; + } + } + setDeviceFoldedLocked(folded); } void setDeviceFoldedLocked(boolean isFolded) { diff --git a/services/core/java/com/android/server/policy/DisplayFoldController.java b/services/core/java/com/android/server/policy/DisplayFoldController.java index ff51237a900a..c10e828d8c3d 100644 --- a/services/core/java/com/android/server/policy/DisplayFoldController.java +++ b/services/core/java/com/android/server/policy/DisplayFoldController.java @@ -209,16 +209,23 @@ class DisplayFoldController { * resource. */ private class DeviceStateListener implements DeviceStateManager.DeviceStateListener { - private final int mFoldedDeviceState; + private final int[] mFoldedDeviceStates; DeviceStateListener(Context context) { - mFoldedDeviceState = context.getResources().getInteger( - com.android.internal.R.integer.config_foldedDeviceState); + mFoldedDeviceStates = context.getResources().getIntArray( + com.android.internal.R.array.config_foldedDeviceStates); } @Override public void onDeviceStateChanged(int deviceState) { - setDeviceFolded(deviceState == mFoldedDeviceState); + boolean folded = false; + for (int i = 0; i < mFoldedDeviceStates.length; i++) { + if (deviceState == mFoldedDeviceStates[i]) { + folded = true; + break; + } + } + setDeviceFolded(folded); } } } |