Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce993ec5 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge changes from topic "am-7babcd6bfc3741b280a7aad84c4e9c80"

* changes:
  Merge "Check target is empty before showing it in AccessibilityFloatingMenu" into tm-dev am: fc5c5e9a am: a1bc6f04 am: 251709c3
  Merge "Fix Accessibility Shortcut does not show up while SystemUI restart" into tm-dev am: f24ce1ca am: 030ed8c9 am: e7ea1715
parents 4de26a36 fa26be59
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -39,10 +39,13 @@ import android.text.TextUtils;

import androidx.annotation.NonNull;

import com.android.internal.accessibility.dialog.AccessibilityTarget;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Prefs;
import com.android.systemui.shared.system.SysUiStatsLog;

import java.util.List;

/**
 * Contains logic for an accessibility floating menu view.
 */
@@ -120,9 +123,13 @@ public class AccessibilityFloatingMenu implements IAccessibilityFloatingMenu {
        if (isShowing()) {
            return;
        }
        final List<AccessibilityTarget> targetList = getTargets(mContext, ACCESSIBILITY_BUTTON);
        if (targetList.isEmpty()) {
            return;
        }

        mMenuView.show();
        mMenuView.onTargetsChanged(getTargets(mContext, ACCESSIBILITY_BUTTON));
        mMenuView.onTargetsChanged(targetList);
        mMenuView.updateOpacityWith(isFadeEffectEnabled(mContext),
                getOpacityValue(mContext));
        mMenuView.setSizeType(getSizeType(mContext));
+2 −10
Original line number Diff line number Diff line
@@ -51,27 +51,20 @@ public class AccessibilityFloatingMenuController implements
    private int mBtnMode;
    private String mBtnTargets;
    private boolean mIsKeyguardVisible;
    private boolean mIsAccessibilityManagerServiceReady;

    @VisibleForTesting
    final KeyguardUpdateMonitorCallback mKeyguardCallback = new KeyguardUpdateMonitorCallback() {
        // Accessibility floating menu needs to retrieve information from
        // AccessibilityManagerService, and it would be ready before onUserUnlocked().

        @Override
        public void onUserUnlocked() {
            mIsAccessibilityManagerServiceReady = true;
            handleFloatingMenuVisibility(mIsKeyguardVisible, mBtnMode, mBtnTargets);
        }

        // Keyguard state would be changed before AccessibilityManagerService is ready to retrieve,
        // need to wait until receive onUserUnlocked().
        @Override
        public void onKeyguardVisibilityChanged(boolean showing) {
            mIsKeyguardVisible = showing;
            if (mIsAccessibilityManagerServiceReady) {
            handleFloatingMenuVisibility(mIsKeyguardVisible, mBtnMode, mBtnTargets);
        }
        }

        @Override
        public void onUserSwitching(int userId) {
@@ -99,7 +92,6 @@ public class AccessibilityFloatingMenuController implements
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;

        mIsKeyguardVisible = false;
        mIsAccessibilityManagerServiceReady = false;
    }

    /**
+11 −0
Original line number Diff line number Diff line
@@ -87,6 +87,17 @@ public class AccessibilityFloatingMenuTest extends SysuiTestCase {
        assertThat(mMenuView.isShowing()).isFalse();
    }

    @Test
    public void showMenuView_emptyTarget_notShow() {
        final List<String> emptyTargets = new ArrayList<>();
        doReturn(emptyTargets).when(mAccessibilityManager).getAccessibilityShortcutTargets(
                anyInt());

        mMenu.show();

        assertThat(mMenuView.isShowing()).isFalse();
    }

    @After
    public void tearDown() {
        mMenu.hide();