Adding ViewCapture to NotificationShadeWindowView and NavigationBarView.
Bug: 336521992
Test: Tested locally
Flag: com.android.systemui.enable_view_capture_tracing DEVELOPMENT
Change-Id: Ie4ba1d6da3b3095c4e63af33f31b41c36739943f
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index f3e2272..0a36390 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -954,6 +954,13 @@
namespace: "systemui"
description: "Only dismiss media notifications when the control was removed by the user."
bug: "335875159"
+}
+
+flag {
+ namespace: "systemui"
+ name: "enable_view_capture_tracing"
+ description: "Enables view capture tracing in System UI."
+ bug: "336521992"
metadata {
purpose: PURPOSE_BUGFIX
}
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
index a73275c..2c6e297 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
@@ -19,6 +19,7 @@
import static android.inputmethodservice.InputMethodService.canImeRenderGesturalNavButtons;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
+import static com.android.systemui.Flags.enableViewCaptureTracing;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SEARCH_DISABLED;
@@ -37,6 +38,7 @@
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
+import android.media.permission.SafeCloseable;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.AttributeSet;
@@ -59,6 +61,7 @@
import androidx.annotation.Nullable;
import com.android.app.animation.Interpolators;
+import com.android.app.viewcapture.ViewCaptureFactory;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.Utils;
import com.android.systemui.Gefingerpoken;
@@ -177,6 +180,7 @@
private boolean mOverviewProxyEnabled;
private boolean mShowSwipeUpUi;
private UpdateActiveTouchRegionsCallback mUpdateActiveTouchRegionsCallback;
+ private SafeCloseable mViewCaptureCloseable;
private class NavTransitionListener implements TransitionListener {
private boolean mBackTransitioning;
@@ -1077,6 +1081,10 @@
}
updateNavButtonIcons();
+ if (enableViewCaptureTracing()) {
+ mViewCaptureCloseable = ViewCaptureFactory.getInstance(getContext())
+ .startCapture(getRootView(), ".NavigationBarView");
+ }
}
@Override
@@ -1089,6 +1097,9 @@
mFloatingRotationButton.hide();
mRotationButtonController.unregisterListeners();
}
+ if (mViewCaptureCloseable != null) {
+ mViewCaptureCloseable.close();
+ }
}
void dump(PrintWriter pw) {
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
index 903af61..64085fd 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
@@ -18,6 +18,7 @@
import static android.os.Trace.TRACE_TAG_APP;
+import static com.android.systemui.Flags.enableViewCaptureTracing;
import static com.android.systemui.statusbar.phone.CentralSurfaces.DEBUG;
import android.annotation.ColorInt;
@@ -29,6 +30,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.media.permission.SafeCloseable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Trace;
@@ -47,6 +49,7 @@
import android.view.Window;
import android.view.WindowInsetsController;
+import com.android.app.viewcapture.ViewCaptureFactory;
import com.android.internal.view.FloatingActionMode;
import com.android.internal.widget.floatingtoolbar.FloatingToolbar;
import com.android.systemui.scene.ui.view.WindowRootView;
@@ -68,6 +71,8 @@
private InteractionEventHandler mInteractionEventHandler;
+ private SafeCloseable mViewCaptureCloseable;
+
public NotificationShadeWindowView(Context context, AttributeSet attrs) {
super(context, attrs);
setMotionEventSplittingEnabled(false);
@@ -77,6 +82,18 @@
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setWillNotDraw(!DEBUG);
+ if (enableViewCaptureTracing()) {
+ mViewCaptureCloseable = ViewCaptureFactory.getInstance(getContext())
+ .startCapture(getRootView(), ".NotificationShadeWindowView");
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ if (mViewCaptureCloseable != null) {
+ mViewCaptureCloseable.close();
+ }
}
@Override