Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java +15 −3 Original line number Diff line number Diff line Loading @@ -38,9 +38,9 @@ import android.widget.LinearLayout; import com.android.internal.policy.SystemBarUtils; import com.android.systemui.Dependency; import com.android.systemui.Gefingerpoken; import com.android.systemui.res.R; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.res.R; import com.android.systemui.statusbar.phone.userswitcher.StatusBarUserSwitcherContainer; import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.statusbar.window.StatusBarWindowController; Loading @@ -67,6 +67,8 @@ public class PhoneStatusBarView extends FrameLayout { private int mStatusBarHeight; @Nullable private Gefingerpoken mTouchEventHandler; private int mDensity; private float mFontScale; /** * Draw this many pixels into the left/right side of the cutout to optimally use the space Loading Loading @@ -167,13 +169,23 @@ public class PhoneStatusBarView extends FrameLayout { mDisplayCutout = getRootWindowInsets().getDisplayCutout(); } final Rect newSize = mContext.getResources().getConfiguration().windowConfiguration .getMaxBounds(); Configuration newConfiguration = mContext.getResources().getConfiguration(); final Rect newSize = newConfiguration.windowConfiguration.getMaxBounds(); if (!Objects.equals(newSize, mDisplaySize)) { changed = true; mDisplaySize = newSize; } int density = newConfiguration.densityDpi; if (density != mDensity) { changed = true; mDensity = density; } float fontScale = newConfiguration.fontScale; if (fontScale != mFontScale) { changed = true; mFontScale = fontScale; } return changed; } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt +66 −0 Original line number Diff line number Diff line Loading @@ -206,6 +206,72 @@ class PhoneStatusBarViewTest : SysuiTestCase() { assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onConfigurationChanged_noRelevantChange_doesNotUpdateInsets() { val previousInsets = Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10) whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(previousInsets) context.orCreateTestableResources.overrideConfiguration(Configuration()) view.onAttachedToWindow() val newInsets = Insets.NONE whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(newInsets) view.onConfigurationChanged(Configuration()) assertThat(view.paddingLeft).isEqualTo(previousInsets.left) assertThat(view.paddingTop).isEqualTo(previousInsets.top) assertThat(view.paddingRight).isEqualTo(previousInsets.right) assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onConfigurationChanged_densityChanged_updatesInsets() { val previousInsets = Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10) whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(previousInsets) val configuration = Configuration() configuration.densityDpi = 123 context.orCreateTestableResources.overrideConfiguration(configuration) view.onAttachedToWindow() val newInsets = Insets.NONE whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(newInsets) configuration.densityDpi = 456 view.onConfigurationChanged(configuration) assertThat(view.paddingLeft).isEqualTo(newInsets.left) assertThat(view.paddingTop).isEqualTo(newInsets.top) assertThat(view.paddingRight).isEqualTo(newInsets.right) assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onConfigurationChanged_fontScaleChanged_updatesInsets() { val previousInsets = Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10) whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(previousInsets) val configuration = Configuration() configuration.fontScale = 1f context.orCreateTestableResources.overrideConfiguration(configuration) view.onAttachedToWindow() val newInsets = Insets.NONE whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(newInsets) configuration.fontScale = 2f view.onConfigurationChanged(configuration) assertThat(view.paddingLeft).isEqualTo(newInsets.left) assertThat(view.paddingTop).isEqualTo(newInsets.top) assertThat(view.paddingRight).isEqualTo(newInsets.right) assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onApplyWindowInsets_updatesLeftTopRightPaddingsBasedOnInsets() { val insets = Insets.of(/* left = */ 90, /* top = */ 10, /* right = */ 45, /* bottom = */ 50) Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java +15 −3 Original line number Diff line number Diff line Loading @@ -38,9 +38,9 @@ import android.widget.LinearLayout; import com.android.internal.policy.SystemBarUtils; import com.android.systemui.Dependency; import com.android.systemui.Gefingerpoken; import com.android.systemui.res.R; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.res.R; import com.android.systemui.statusbar.phone.userswitcher.StatusBarUserSwitcherContainer; import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.statusbar.window.StatusBarWindowController; Loading @@ -67,6 +67,8 @@ public class PhoneStatusBarView extends FrameLayout { private int mStatusBarHeight; @Nullable private Gefingerpoken mTouchEventHandler; private int mDensity; private float mFontScale; /** * Draw this many pixels into the left/right side of the cutout to optimally use the space Loading Loading @@ -167,13 +169,23 @@ public class PhoneStatusBarView extends FrameLayout { mDisplayCutout = getRootWindowInsets().getDisplayCutout(); } final Rect newSize = mContext.getResources().getConfiguration().windowConfiguration .getMaxBounds(); Configuration newConfiguration = mContext.getResources().getConfiguration(); final Rect newSize = newConfiguration.windowConfiguration.getMaxBounds(); if (!Objects.equals(newSize, mDisplaySize)) { changed = true; mDisplaySize = newSize; } int density = newConfiguration.densityDpi; if (density != mDensity) { changed = true; mDensity = density; } float fontScale = newConfiguration.fontScale; if (fontScale != mFontScale) { changed = true; mFontScale = fontScale; } return changed; } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt +66 −0 Original line number Diff line number Diff line Loading @@ -206,6 +206,72 @@ class PhoneStatusBarViewTest : SysuiTestCase() { assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onConfigurationChanged_noRelevantChange_doesNotUpdateInsets() { val previousInsets = Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10) whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(previousInsets) context.orCreateTestableResources.overrideConfiguration(Configuration()) view.onAttachedToWindow() val newInsets = Insets.NONE whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(newInsets) view.onConfigurationChanged(Configuration()) assertThat(view.paddingLeft).isEqualTo(previousInsets.left) assertThat(view.paddingTop).isEqualTo(previousInsets.top) assertThat(view.paddingRight).isEqualTo(previousInsets.right) assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onConfigurationChanged_densityChanged_updatesInsets() { val previousInsets = Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10) whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(previousInsets) val configuration = Configuration() configuration.densityDpi = 123 context.orCreateTestableResources.overrideConfiguration(configuration) view.onAttachedToWindow() val newInsets = Insets.NONE whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(newInsets) configuration.densityDpi = 456 view.onConfigurationChanged(configuration) assertThat(view.paddingLeft).isEqualTo(newInsets.left) assertThat(view.paddingTop).isEqualTo(newInsets.top) assertThat(view.paddingRight).isEqualTo(newInsets.right) assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onConfigurationChanged_fontScaleChanged_updatesInsets() { val previousInsets = Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10) whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(previousInsets) val configuration = Configuration() configuration.fontScale = 1f context.orCreateTestableResources.overrideConfiguration(configuration) view.onAttachedToWindow() val newInsets = Insets.NONE whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(newInsets) configuration.fontScale = 2f view.onConfigurationChanged(configuration) assertThat(view.paddingLeft).isEqualTo(newInsets.left) assertThat(view.paddingTop).isEqualTo(newInsets.top) assertThat(view.paddingRight).isEqualTo(newInsets.right) assertThat(view.paddingBottom).isEqualTo(0) } @Test fun onApplyWindowInsets_updatesLeftTopRightPaddingsBasedOnInsets() { val insets = Insets.of(/* left = */ 90, /* top = */ 10, /* right = */ 45, /* bottom = */ 50) Loading