diff options
author | Selim Cinek <cinek@google.com> | 2021-08-16 11:40:26 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-08-16 11:40:26 +0000 |
commit | ab89e910bc569edfcf3294620d7ee10a3e2d5416 (patch) | |
tree | 9952274356953b34095af4de34fff657e3824b69 | |
parent | c0162a74b905d93098830f32b5fec9a317e8af37 (diff) | |
parent | 27da5b04d44e76e884f8148684eb36311923c651 (diff) | |
download | base-ab89e910bc569edfcf3294620d7ee10a3e2d5416.tar.gz |
Merge "Don't create one-handed-background-panel after rotation" into sc-dev
3 files changed, 36 insertions, 1 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java index 97461e607e66..d3274706631b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java @@ -16,6 +16,8 @@ package com.android.wm.shell.onehanded; +import static com.android.wm.shell.onehanded.OneHandedState.STATE_ACTIVE; + import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Color; @@ -46,7 +48,7 @@ import java.util.concurrent.Executor; * the screen has entered one handed mode. */ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer - implements OneHandedAnimationCallback { + implements OneHandedAnimationCallback, OneHandedState.OnStateChangedListener { private static final String TAG = "OneHandedBackgroundPanelOrganizer"; private static final int THEME_COLOR_OFFSET = 10; private static final int ALPHA_ANIMATION_DURATION = 200; @@ -56,6 +58,7 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer private final OneHandedSurfaceTransactionHelper.SurfaceControlTransactionFactory mTransactionFactory; + private @OneHandedState.State int mCurrentState; private ValueAnimator mAlphaAnimator; private float mTranslationFraction; @@ -180,6 +183,9 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer * Called when transition finished. */ public void onStopFinished() { + if (mAlphaAnimator == null) { + return; + } mAlphaAnimator.start(); } @@ -224,6 +230,10 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer */ public void onConfigurationChanged() { updateThemeColors(); + + if (mCurrentState != STATE_ACTIVE) { + return; + } showBackgroundPanelLayer(); } @@ -242,6 +252,11 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer return Math.max(origColor - THEME_COLOR_OFFSET, 0) / 255.0f; } + @Override + public void onStateChanged(int newState) { + mCurrentState = newState; + } + void dump(@NonNull PrintWriter pw) { final String innerPrefix = " "; pw.println(TAG); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java index b0fe856df7c8..954ca14b4960 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java @@ -307,6 +307,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController> mAccessibilityManager.addAccessibilityStateChangeListener( mAccessibilityStateChangeListener); + mState.addSListeners(mBackgroundPanelOrganizer); mState.addSListeners(mTutorialHandler); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizerTest.java index 99c610765c04..7b9553c5ef9b 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizerTest.java @@ -19,6 +19,9 @@ package com.android.wm.shell.onehanded; import static android.view.Display.DEFAULT_DISPLAY; import static android.window.DisplayAreaOrganizer.FEATURE_ONE_HANDED_BACKGROUND_PANEL; +import static com.android.wm.shell.onehanded.OneHandedState.STATE_ACTIVE; +import static com.android.wm.shell.onehanded.OneHandedState.STATE_NONE; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; @@ -109,4 +112,20 @@ public class OneHandedBackgroundPanelOrganizerTest extends OneHandedTestCase { assertThat(mSpiedBackgroundPanelOrganizer.mBackgroundSurface).isNull(); } + + @Test + public void testStateNone_onConfigurationChanged() { + mSpiedBackgroundPanelOrganizer.onStateChanged(STATE_NONE); + mSpiedBackgroundPanelOrganizer.onConfigurationChanged(); + + verify(mSpiedBackgroundPanelOrganizer, never()).showBackgroundPanelLayer(); + } + + @Test + public void testStateActivate_onConfigurationChanged() { + mSpiedBackgroundPanelOrganizer.onStateChanged(STATE_ACTIVE); + mSpiedBackgroundPanelOrganizer.onConfigurationChanged(); + + verify(mSpiedBackgroundPanelOrganizer).showBackgroundPanelLayer(); + } } |