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

Commit ac31abc6 authored by archisha's avatar archisha Committed by Archisha Baranwal
Browse files

Using ViewCaptureAwareWindowManager for adding and removing windows in SystemUI instead of

WindowManager, to add view capture tracing.

Bug: 342100136
Flag: com.android.systemui.enable_view_capture_tracing
Test: Ran relevant unit tests locally.

Change-Id: Ia88f10a56b9fca5e801aa7f868413f96a691e87f
parent 5cf56a1c
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.view.accessibility.AccessibilityManager;

import androidx.annotation.MainThread;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -54,6 +55,7 @@ public class AccessibilityFloatingMenuController implements

    private Context mContext;
    private final WindowManager mWindowManager;
    private final ViewCaptureAwareWindowManager mViewCaptureAwareWindowManager;
    private final DisplayManager mDisplayManager;
    private final AccessibilityManager mAccessibilityManager;

@@ -97,6 +99,7 @@ public class AccessibilityFloatingMenuController implements
    @Inject
    public AccessibilityFloatingMenuController(Context context,
            WindowManager windowManager,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager,
            DisplayManager displayManager,
            AccessibilityManager accessibilityManager,
            AccessibilityButtonTargetsObserver accessibilityButtonTargetsObserver,
@@ -106,6 +109,7 @@ public class AccessibilityFloatingMenuController implements
            DisplayTracker displayTracker) {
        mContext = context;
        mWindowManager = windowManager;
        mViewCaptureAwareWindowManager = viewCaptureAwareWindowManager;
        mDisplayManager = displayManager;
        mAccessibilityManager = accessibilityManager;
        mAccessibilityButtonTargetsObserver = accessibilityButtonTargetsObserver;
@@ -187,7 +191,7 @@ public class AccessibilityFloatingMenuController implements
            final Context windowContext = mContext.createWindowContext(defaultDisplay,
                    TYPE_NAVIGATION_BAR_PANEL, /* options= */ null);
            mFloatingMenu = new MenuViewLayerController(windowContext, mWindowManager,
                    mAccessibilityManager, mSecureSettings);
                    mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings);
        }

        mFloatingMenu.show();
+4 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.graphics.PixelFormat;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.systemui.util.settings.SecureSettings;

/**
@@ -30,13 +31,14 @@ import com.android.systemui.util.settings.SecureSettings;
 * of {@link IAccessibilityFloatingMenu}.
 */
class MenuViewLayerController implements IAccessibilityFloatingMenu {
    private final WindowManager mWindowManager;
    private final ViewCaptureAwareWindowManager mWindowManager;
    private final MenuViewLayer mMenuViewLayer;
    private boolean mIsShowing;

    MenuViewLayerController(Context context, WindowManager windowManager,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager,
            AccessibilityManager accessibilityManager, SecureSettings secureSettings) {
        mWindowManager = windowManager;
        mWindowManager = viewCaptureAwareWindowManager;

        MenuViewModel menuViewModel = new MenuViewModel(
                context, accessibilityManager, secureSettings);
+6 −4
Original line number Diff line number Diff line
@@ -23,19 +23,20 @@ import android.os.SystemProperties
import android.view.Surface
import android.view.View
import android.view.WindowManager
import com.android.app.viewcapture.ViewCaptureAwareWindowManager
import com.android.internal.annotations.VisibleForTesting
import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger
import com.android.settingslib.Utils
import com.android.systemui.res.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.surfaceeffects.ripple.RippleView
import com.android.systemui.res.R
import com.android.systemui.statusbar.commandline.Command
import com.android.systemui.statusbar.commandline.CommandRegistry
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.surfaceeffects.ripple.RippleView
import com.android.systemui.util.time.SystemClock
import java.io.PrintWriter
import javax.inject.Inject
@@ -57,6 +58,7 @@ class WiredChargingRippleController @Inject constructor(
    featureFlags: FeatureFlags,
    private val context: Context,
    private val windowManager: WindowManager,
    private val viewCaptureAwareWindowManager: ViewCaptureAwareWindowManager,
    private val systemClock: SystemClock,
    private val uiEventLogger: UiEventLogger
) {
@@ -161,12 +163,12 @@ class WiredChargingRippleController @Inject constructor(
            override fun onViewAttachedToWindow(view: View) {
                layoutRipple()
                rippleView.startRipple(Runnable {
                    windowManager.removeView(rippleView)
                    viewCaptureAwareWindowManager.removeView(rippleView)
                })
                rippleView.removeOnAttachStateChangeListener(this)
            }
        })
        windowManager.addView(rippleView, windowLayoutParams)
        viewCaptureAwareWindowManager.addView(rippleView, windowLayoutParams)
        uiEventLogger.log(WiredChargingRippleEvent.CHARGING_RIPPLE_PLAYED)
    }

+8 −7
Original line number Diff line number Diff line
@@ -17,8 +17,8 @@
package com.android.systemui.media.taptotransfer.receiver

import android.animation.TimeInterpolator
import android.annotation.SuppressLint
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.StatusBarManager
import android.content.Context
import android.graphics.Rect
@@ -29,15 +29,15 @@ import android.os.Handler
import android.os.PowerManager
import android.view.Gravity
import android.view.View
import android.view.View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
import android.view.View.ACCESSIBILITY_LIVE_REGION_NONE
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.view.View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
import android.view.View.ACCESSIBILITY_LIVE_REGION_NONE
import com.android.internal.widget.CachingIconView
import com.android.systemui.res.R
import com.android.app.animation.Interpolators
import com.android.app.viewcapture.ViewCaptureAwareWindowManager
import com.android.internal.logging.InstanceId
import com.android.internal.widget.CachingIconView
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.ui.binder.TintedIconViewBinder
import com.android.systemui.dagger.SysUISingleton
@@ -46,6 +46,7 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.media.taptotransfer.MediaTttFlags
import com.android.systemui.media.taptotransfer.common.MediaTttIcon
import com.android.systemui.media.taptotransfer.common.MediaTttUtils
import com.android.systemui.res.R
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewDisplayController
@@ -71,7 +72,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
        private val commandQueue: CommandQueue,
        context: Context,
        logger: MediaTttReceiverLogger,
        windowManager: WindowManager,
        viewCaptureAwareWindowManager: ViewCaptureAwareWindowManager,
        @Main mainExecutor: DelayableExecutor,
        accessibilityManager: AccessibilityManager,
        configurationController: ConfigurationController,
@@ -88,7 +89,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
) : TemporaryViewDisplayController<ChipReceiverInfo, MediaTttReceiverLogger>(
        context,
        logger,
        windowManager,
        viewCaptureAwareWindowManager,
        mainExecutor,
        accessibilityManager,
        configurationController,
+4 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.view.Window
import android.view.WindowInsets
import android.view.WindowManager
import android.window.WindowContext
import com.android.app.viewcapture.ViewCaptureAwareWindowManager
import com.android.internal.policy.PhoneWindow
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@@ -41,6 +42,7 @@ class ScreenshotWindow
@AssistedInject
constructor(
    private val windowManager: WindowManager,
    private val viewCaptureAwareWindowManager: ViewCaptureAwareWindowManager,
    private val context: Context,
    @Assisted private val display: Display,
) {
@@ -95,7 +97,7 @@ constructor(
            Log.d(TAG, "attachWindow")
        }
        attachRequested = true
        windowManager.addView(decorView, params)
        viewCaptureAwareWindowManager.addView(decorView, params)

        decorView.requestApplyInsets()
        decorView.requireViewById<ViewGroup>(R.id.content).apply {
@@ -133,7 +135,7 @@ constructor(
            if (LogConfig.DEBUG_WINDOW) {
                Log.d(TAG, "Removing screenshot window")
            }
            windowManager.removeViewImmediate(decorView)
            viewCaptureAwareWindowManager.removeViewImmediate(decorView)
            detachRequested = false
        }
        if (attachRequested && !detachRequested) {
Loading