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

Commit da5f66b1 authored by Minche Li's avatar Minche Li Committed by Android (Google) Code Review
Browse files

Merge "Implement magnification switch button (2/n)"

parents 6f843d42 085d5998
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ public class ModeSwitchesController {
    private final WindowManager.LayoutParams mParams;
    private final int mPadding;

    ModeSwitchesController(Context context) {
    public ModeSwitchesController(Context context) {
        mContext = context;
        mDisplayManager = mContext.getSystemService(DisplayManager.class);

@@ -193,7 +193,7 @@ public class ModeSwitchesController {
                    mMagnificationMode ^ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL;
            mMagnificationMode = newMode;
            Settings.Secure.putInt(mContext.getContentResolver(),
                    Settings.Secure.WINDOW_MAGNIFICATION, newMode);
                    Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, newMode);
        }
    }
}
+11 −7
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall

    @VisibleForTesting
    protected WindowMagnificationController mWindowMagnificationController;
    protected final ModeSwitchesController mModeSwitchesController;
    private final Handler mHandler;
    private final AccessibilityManager mAccessibilityManager;
    private final CommandQueue mCommandQueue;
@@ -61,13 +62,14 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall

    @Inject
    public WindowMagnification(Context context, @Main Handler mainHandler,
            CommandQueue commandQueue) {
            CommandQueue commandQueue, ModeSwitchesController modeSwitchesController) {
        super(context);
        mHandler = mainHandler;
        mLastConfiguration = new Configuration(context.getResources().getConfiguration());
        mAccessibilityManager = (AccessibilityManager) mContext.getSystemService(
                Context.ACCESSIBILITY_SERVICE);
        mCommandQueue = commandQueue;
        mModeSwitchesController = modeSwitchesController;
    }

    @Override
@@ -142,7 +144,7 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall
    private void setWindowMagnificationConnection() {
        if (mWindowMagnificationConnectionImpl == null) {
            mWindowMagnificationConnectionImpl = new WindowMagnificationConnectionImpl(this,
                    mHandler);
                    mHandler, mModeSwitchesController);
        }
        mAccessibilityManager.setWindowMagnificationConnection(
                mWindowMagnificationConnectionImpl);
@@ -161,11 +163,13 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall
        private IWindowMagnificationConnectionCallback mConnectionCallback;
        private final WindowMagnification mWindowMagnification;
        private final Handler mHandler;
        private final ModeSwitchesController mModeSwitchesController;

        WindowMagnificationConnectionImpl(@NonNull WindowMagnification windowMagnification,
                @Main Handler mainHandler) {
                @Main Handler mainHandler, ModeSwitchesController modeSwitchesController) {
            mWindowMagnification = windowMagnification;
            mHandler = mainHandler;
            mModeSwitchesController = modeSwitchesController;
        }

        @Override
@@ -194,14 +198,14 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall

        @Override
        public void showMagnificationButton(int displayId, int magnificationMode) {
            // TODO(b/145780606): show magnification button UI when the magnification capability
            //  or scale changed.
            mHandler.post(
                    () -> mModeSwitchesController.showButton(displayId, magnificationMode));
        }

        @Override
        public void removeMagnificationButton(int displayId) {
            // TODO(b/145780606): remove magnification button UI when the magnification
            //  capability changed.
            mHandler.post(
                    () -> mModeSwitchesController.removeButton(displayId));
        }

        @Override
+9 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.internal.util.NotificationMessagingUtil;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.Prefs;
import com.android.systemui.accessibility.ModeSwitchesController;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
@@ -227,4 +228,12 @@ public class DependencyProvider {
    static UiEventLogger provideUiEventLogger() {
        return new UiEventLoggerImpl();
    }

    /** */
    @Singleton
    @Provides
    public ModeSwitchesController providesModeSwitchesController(Context context) {
        return new ModeSwitchesController(context);
    }

}
+22 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static org.mockito.Mockito.verify;

import android.content.Context;
import android.os.RemoteException;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import android.view.Display;
import android.view.accessibility.AccessibilityManager;
@@ -57,6 +58,8 @@ public class IWindowMagnificationConnectionTest extends SysuiTestCase {
    private IWindowMagnificationConnectionCallback mConnectionCallback;
    @Mock
    private WindowMagnificationController mWindowMagnificationController;
    @Mock
    private ModeSwitchesController mModeSwitchesController;
    private IWindowMagnificationConnection mIWindowMagnificationConnection;
    private WindowMagnification mWindowMagnification;

@@ -70,7 +73,7 @@ public class IWindowMagnificationConnectionTest extends SysuiTestCase {
        }).when(mAccessibilityManager).setWindowMagnificationConnection(
                any(IWindowMagnificationConnection.class));
        mWindowMagnification = new WindowMagnification(getContext(),
                getContext().getMainThreadHandler(), mCommandQueue);
                getContext().getMainThreadHandler(), mCommandQueue, mModeSwitchesController);
        mWindowMagnification.mWindowMagnificationController = mWindowMagnificationController;
        mWindowMagnification.requestWindowMagnificationConnection(true);
        assertNotNull(mIWindowMagnificationConnection);
@@ -114,5 +117,23 @@ public class IWindowMagnificationConnectionTest extends SysuiTestCase {

        verify(mWindowMagnificationController).moveWindowMagnifier(100f, 200f);
    }

    @Test
    public void showMagnificationButton() throws RemoteException {
        mIWindowMagnificationConnection.showMagnificationButton(TEST_DISPLAY,
                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
        waitForIdleSync();

        verify(mModeSwitchesController).showButton(TEST_DISPLAY,
                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
    }

    @Test
    public void removeMagnificationButton() throws RemoteException {
        mIWindowMagnificationConnection.removeMagnificationButton(TEST_DISPLAY);
        waitForIdleSync();

        verify(mModeSwitchesController).removeButton(TEST_DISPLAY);
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ public class WindowMagnificationTest extends SysuiTestCase {

    @Mock
    private AccessibilityManager mAccessibilityManager;
    @Mock
    private ModeSwitchesController mModeSwitchesController;
    private CommandQueue mCommandQueue;
    private WindowMagnification mWindowMagnification;

@@ -57,7 +59,7 @@ public class WindowMagnificationTest extends SysuiTestCase {

        mCommandQueue = new CommandQueue(getContext());
        mWindowMagnification = new WindowMagnification(getContext(),
                getContext().getMainThreadHandler(), mCommandQueue);
                getContext().getMainThreadHandler(), mCommandQueue, mModeSwitchesController);
        mWindowMagnification.start();
    }