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

Commit 385e312d authored by archisha's avatar archisha
Browse files

Adding ViewCaptureAwareWindowManager to WindowMagnificationSettings window.

Bug: 357515563
Flag: com.android.systemui.enable_view_capture_tracing
Test: Ran relevant unit tests locally.
Change-Id: I4db1d672952964c2f5cca25d7b9dd7f503707521
parent 035470ae
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.window.InputTransferToken;

import androidx.annotation.NonNull;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import com.android.systemui.Flags;
@@ -193,15 +194,18 @@ public class MagnificationImpl implements Magnification, CommandQueue.Callbacks
        private final Context mContext;
        private final MagnificationSettingsController.Callback mSettingsControllerCallback;
        private final SecureSettings mSecureSettings;
        private final ViewCaptureAwareWindowManager mViewCaptureAwareWindowManager;

        SettingsSupplier(Context context,
                MagnificationSettingsController.Callback settingsControllerCallback,
                DisplayManager displayManager,
                SecureSettings secureSettings) {
                SecureSettings secureSettings,
                ViewCaptureAwareWindowManager viewCaptureAwareWindowManager) {
            super(displayManager);
            mContext = context;
            mSettingsControllerCallback = settingsControllerCallback;
            mSecureSettings = secureSettings;
            mViewCaptureAwareWindowManager = viewCaptureAwareWindowManager;
        }

        @Override
@@ -213,7 +217,8 @@ public class MagnificationImpl implements Magnification, CommandQueue.Callbacks
                    windowContext,
                    new SfVsyncFrameCallbackProvider(),
                    mSettingsControllerCallback,
                    mSecureSettings);
                    mSecureSettings,
                    mViewCaptureAwareWindowManager);
        }
    }

@@ -227,10 +232,12 @@ public class MagnificationImpl implements Magnification, CommandQueue.Callbacks
            SysUiState sysUiState, OverviewProxyService overviewProxyService,
            SecureSettings secureSettings, DisplayTracker displayTracker,
            DisplayManager displayManager, AccessibilityLogger a11yLogger,
            IWindowManager iWindowManager, AccessibilityManager accessibilityManager) {
            IWindowManager iWindowManager, AccessibilityManager accessibilityManager,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager) {
        this(context, mainHandler.getLooper(), executor, commandQueue,
                modeSwitchesController, sysUiState, overviewProxyService, secureSettings,
                displayTracker, displayManager, a11yLogger, iWindowManager, accessibilityManager);
                displayTracker, displayManager, a11yLogger, iWindowManager, accessibilityManager,
                viewCaptureAwareWindowManager);
    }

    @VisibleForTesting
@@ -240,7 +247,8 @@ public class MagnificationImpl implements Magnification, CommandQueue.Callbacks
            SecureSettings secureSettings, DisplayTracker displayTracker,
            DisplayManager displayManager, AccessibilityLogger a11yLogger,
            IWindowManager iWindowManager,
            AccessibilityManager accessibilityManager) {
            AccessibilityManager accessibilityManager,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager) {
        mHandler = new Handler(looper) {
            @Override
            public void handleMessage(@NonNull Message msg) {
@@ -263,7 +271,8 @@ public class MagnificationImpl implements Magnification, CommandQueue.Callbacks
        mFullscreenMagnificationControllerSupplier = new FullscreenMagnificationControllerSupplier(
                context, displayManager, mHandler, mExecutor, iWindowManager);
        mMagnificationSettingsSupplier = new SettingsSupplier(context,
                mMagnificationSettingsControllerCallback, displayManager, secureSettings);
                mMagnificationSettingsControllerCallback, displayManager, secureSettings,
                viewCaptureAwareWindowManager);

        mModeSwitchesController.setClickListenerDelegate(
                displayId -> mHandler.post(() -> {
+8 −4
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.res.Configuration;
import android.util.Range;
import android.view.WindowManager;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.accessibility.common.MagnificationConstants;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -60,8 +61,10 @@ public class MagnificationSettingsController implements ComponentCallbacks {
            @UiContext Context context,
            SfVsyncFrameCallbackProvider sfVsyncFrameProvider,
            @NonNull Callback settingsControllerCallback,
            SecureSettings secureSettings) {
        this(context, sfVsyncFrameProvider, settingsControllerCallback,  secureSettings, null);
            SecureSettings secureSettings,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager) {
        this(context, sfVsyncFrameProvider, settingsControllerCallback,  secureSettings, null,
                viewCaptureAwareWindowManager);
    }

    @VisibleForTesting
@@ -70,7 +73,8 @@ public class MagnificationSettingsController implements ComponentCallbacks {
            SfVsyncFrameCallbackProvider sfVsyncFrameProvider,
            @NonNull Callback settingsControllerCallback,
            SecureSettings secureSettings,
            WindowMagnificationSettings windowMagnificationSettings) {
            WindowMagnificationSettings windowMagnificationSettings,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager) {
        mContext = context.createWindowContext(
                context.getDisplay(),
                WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
@@ -84,7 +88,7 @@ public class MagnificationSettingsController implements ComponentCallbacks {
        } else {
            mWindowMagnificationSettings = new WindowMagnificationSettings(mContext,
                    mWindowMagnificationSettingsCallback,
                    sfVsyncFrameProvider, secureSettings);
                    sfVsyncFrameProvider, secureSettings, viewCaptureAwareWindowManager);
        }
    }

+7 −3
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Switch;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import com.android.systemui.Flags;
@@ -75,6 +76,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
    private final Context mContext;
    private final AccessibilityManager mAccessibilityManager;
    private final WindowManager mWindowManager;
    private final ViewCaptureAwareWindowManager mViewCaptureAwareWindowManager;
    private final SecureSettings mSecureSettings;

    private final Runnable mWindowInsetChangeRunnable;
@@ -135,10 +137,12 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest

    @VisibleForTesting
    WindowMagnificationSettings(Context context, WindowMagnificationSettingsCallback callback,
            SfVsyncFrameCallbackProvider sfVsyncFrameProvider, SecureSettings secureSettings) {
            SfVsyncFrameCallbackProvider sfVsyncFrameProvider, SecureSettings secureSettings,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager) {
        mContext = context;
        mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
        mWindowManager = mContext.getSystemService(WindowManager.class);
        mViewCaptureAwareWindowManager = viewCaptureAwareWindowManager;
        mSfVsyncFrameProvider = sfVsyncFrameProvider;
        mCallback = callback;
        mSecureSettings = secureSettings;
@@ -320,7 +324,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest

        // Unregister observer before removing view
        mSecureSettings.unregisterContentObserverSync(mMagnificationCapabilityObserver);
        mWindowManager.removeView(mSettingView);
        mViewCaptureAwareWindowManager.removeView(mSettingView);
        mIsVisible = false;
        if (resetPosition) {
            mParams.x = 0;
@@ -378,7 +382,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
                mParams.y = mDraggableWindowBounds.bottom;
            }

            mWindowManager.addView(mSettingView, mParams);
            mViewCaptureAwareWindowManager.addView(mSettingView, mParams);

            mSecureSettings.registerContentObserverForUserSync(
                    Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
+5 −1
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import android.view.accessibility.IRemoteMagnificationAnimationCallback;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.model.SysUiState;
@@ -102,6 +103,8 @@ public class IMagnificationConnectionTest extends SysuiTestCase {
    private AccessibilityLogger mA11yLogger;
    @Mock
    private IWindowManager mIWindowManager;
    @Mock
    private ViewCaptureAwareWindowManager mViewCaptureAwareWindowManager;

    private IMagnificationConnection mIMagnificationConnection;
    private MagnificationImpl mMagnification;
@@ -123,7 +126,8 @@ public class IMagnificationConnectionTest extends SysuiTestCase {
                mTestableLooper.getLooper(), mContext.getMainExecutor(), mCommandQueue,
                mModeSwitchesController, mSysUiState, mOverviewProxyService, mSecureSettings,
                mDisplayTracker, getContext().getSystemService(DisplayManager.class),
                mA11yLogger, mIWindowManager, mAccessibilityManager);
                mA11yLogger, mIWindowManager, mAccessibilityManager,
                mViewCaptureAwareWindowManager);
        mMagnification.mWindowMagnificationControllerSupplier =
                new FakeWindowMagnificationControllerSupplier(
                        mContext.getSystemService(DisplayManager.class));
+4 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.testing.TestableLooper;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.WindowMagnificationSettings.MagnificationSize;
@@ -56,6 +57,8 @@ public class MagnificationSettingsControllerTest extends SysuiTestCase {
    private SfVsyncFrameCallbackProvider mSfVsyncFrameProvider;
    @Mock
    private SecureSettings mSecureSettings;
    @Mock
    private ViewCaptureAwareWindowManager mViewCaptureAwareWindowManager;

    @Before
    public void setUp() {
@@ -63,7 +66,7 @@ public class MagnificationSettingsControllerTest extends SysuiTestCase {
        mMagnificationSettingsController = new MagnificationSettingsController(
                mContext, mSfVsyncFrameProvider,
                mMagnificationSettingControllerCallback, mSecureSettings,
                mWindowMagnificationSettings);
                mWindowMagnificationSettings, mViewCaptureAwareWindowManager);
    }

    @After
Loading