diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java index 5b4db1449b34b..4d364e1b1fc7c 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java @@ -266,6 +266,7 @@ public class ScreenshotController { private Animator mScreenshotAnimation; private RequestCallback mCurrentRequestCallback; + private String mPackageName = ""; private final Handler mScreenshotHandler = new Handler(Looper.getMainLooper()) { @Override @@ -275,7 +276,8 @@ public class ScreenshotController { if (DEBUG_UI) { Log.d(TAG, "Corner timeout hit"); } - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_INTERACTION_TIMEOUT); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_INTERACTION_TIMEOUT, 0, + mPackageName); ScreenshotController.this.dismissScreenshot(false); break; default: @@ -354,12 +356,13 @@ public class ScreenshotController { mCameraSound.load(MediaActionSound.SHUTTER_CLICK); } - void takeScreenshotFullscreen(Consumer finisher, RequestCallback requestCallback) { + void takeScreenshotFullscreen(ComponentName topComponent, Consumer finisher, + RequestCallback requestCallback) { mCurrentRequestCallback = requestCallback; DisplayMetrics displayMetrics = new DisplayMetrics(); getDefaultDisplay().getRealMetrics(displayMetrics); takeScreenshotInternal( - finisher, + topComponent, finisher, new Rect(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels)); } @@ -383,13 +386,15 @@ public class ScreenshotController { screenshotScreenBounds.set(0, 0, screenshot.getWidth(), screenshot.getHeight()); } mCurrentRequestCallback = requestCallback; - saveScreenshot(screenshot, finisher, screenshotScreenBounds, visibleInsets, showFlash); + saveScreenshot(screenshot, finisher, screenshotScreenBounds, visibleInsets, topComponent, + showFlash); } /** * Displays a screenshot selector */ - void takeScreenshotPartial(final Consumer finisher, RequestCallback requestCallback) { + void takeScreenshotPartial(ComponentName topComponent, + final Consumer finisher, RequestCallback requestCallback) { mScreenshotView.reset(); mCurrentRequestCallback = requestCallback; @@ -398,7 +403,7 @@ public class ScreenshotController { mScreenshotView.requestApplyInsets(); mScreenshotView.takePartialScreenshot( - rect -> takeScreenshotInternal(finisher, rect)); + rect -> takeScreenshotInternal(topComponent, finisher, rect)); } /** @@ -491,7 +496,8 @@ public class ScreenshotController { /** * Takes a screenshot of the current display and shows an animation. */ - private void takeScreenshotInternal(Consumer finisher, Rect crop) { + private void takeScreenshotInternal(ComponentName topComponent, Consumer finisher, + Rect crop) { mScreenshotTakenInPortrait = mContext.getResources().getConfiguration().orientation == ORIENTATION_PORTRAIT; @@ -509,7 +515,7 @@ public class ScreenshotController { return; } - saveScreenshot(screenshot, finisher, screenRect, Insets.NONE, true); + saveScreenshot(screenshot, finisher, screenRect, Insets.NONE, topComponent, true); } private Bitmap captureScreenshot(Rect crop) { @@ -539,7 +545,7 @@ public class ScreenshotController { } private void saveScreenshot(Bitmap screenshot, Consumer finisher, Rect screenRect, - Insets screenInsets, boolean showFlash) { + Insets screenInsets, ComponentName topComponent, boolean showFlash) { if (mAccessibilityManager.isEnabled()) { AccessibilityEvent event = new AccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); @@ -552,7 +558,7 @@ public class ScreenshotController { if (mScreenshotView.isAttachedToWindow()) { // if we didn't already dismiss for another reason if (!mScreenshotView.isDismissing()) { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_REENTERED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_REENTERED, 0, mPackageName); } if (DEBUG_WINDOW) { Log.d(TAG, "saveScreenshot: screenshotView is already attached, resetting. " @@ -560,6 +566,8 @@ public class ScreenshotController { } mScreenshotView.reset(); } + mPackageName = topComponent == null ? "" : topComponent.getPackageName(); + mScreenshotView.setPackageName(mPackageName); mScreenshotView.updateOrientation( mWindowManager.getCurrentWindowMetrics().getWindowInsets()); @@ -790,11 +798,11 @@ public class ScreenshotController { } finisher.accept(imageData.uri); if (imageData.uri == null) { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_NOT_SAVED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_NOT_SAVED, 0, mPackageName); mNotificationsController.notifyScreenshotError( R.string.screenshot_failed_to_save_text); } else { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, mPackageName); mScreenshotHandler.post(() -> Toast.makeText(mContext, R.string.screenshot_saved_title, Toast.LENGTH_SHORT).show()); } @@ -959,11 +967,11 @@ public class ScreenshotController { */ private void logSuccessOnActionsReady(ScreenshotController.SavedImageData imageData) { if (imageData.uri == null) { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_NOT_SAVED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_NOT_SAVED, 0, mPackageName); mNotificationsController.notifyScreenshotError( R.string.screenshot_failed_to_save_text); } else { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, mPackageName); } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java index 7222b0313fb47..da4be65a835a6 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java @@ -163,6 +163,7 @@ public class ScreenshotView extends FrameLayout implements private SwipeDismissHandler mSwipeDismissHandler; private InputMonitorCompat mInputMonitor; private boolean mShowScrollablePreview; + private String mPackageName = ""; private final ArrayList mSmartChips = new ArrayList<>(); private PendingInteraction mPendingInteraction; @@ -409,6 +410,10 @@ public class ScreenshotView extends FrameLayout implements mScreenshotPreview.setImageDrawable(createScreenDrawable(mResources, bitmap, screenInsets)); } + void setPackageName(String packageName) { + mPackageName = packageName; + } + void updateInsets(WindowInsets insets) { int orientation = mContext.getResources().getConfiguration().orientation; mOrientationPortrait = (orientation == ORIENTATION_PORTRAIT); @@ -585,7 +590,8 @@ public class ScreenshotView extends FrameLayout implements if (DEBUG_INPUT) { Log.d(TAG, "dismiss button clicked"); } - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_EXPLICIT_DISMISSAL); + mUiEventLogger.log( + ScreenshotEvent.SCREENSHOT_EXPLICIT_DISMISSAL, 0, mPackageName); animateDismissal(); }); mDismissButton.setAlpha(1); @@ -698,24 +704,25 @@ public class ScreenshotView extends FrameLayout implements void setChipIntents(ScreenshotController.SavedImageData imageData) { mShareChip.setOnClickListener(v -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SHARE_TAPPED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SHARE_TAPPED, 0, mPackageName); startSharedTransition( imageData.shareTransition.get()); }); mEditChip.setOnClickListener(v -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_EDIT_TAPPED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_EDIT_TAPPED, 0, mPackageName); startSharedTransition( imageData.editTransition.get()); }); mScreenshotPreview.setOnClickListener(v -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_PREVIEW_TAPPED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_PREVIEW_TAPPED, 0, mPackageName); startSharedTransition( imageData.editTransition.get()); }); if (mQuickShareChip != null) { mQuickShareChip.setPendingIntent(imageData.quickShareAction.actionIntent, () -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SMART_ACTION_TAPPED); + mUiEventLogger.log( + ScreenshotEvent.SCREENSHOT_SMART_ACTION_TAPPED, 0, mPackageName); animateDismissal(); }); } @@ -745,7 +752,8 @@ public class ScreenshotView extends FrameLayout implements actionChip.setIcon(smartAction.getIcon(), false); actionChip.setPendingIntent(smartAction.actionIntent, () -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SMART_ACTION_TAPPED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SMART_ACTION_TAPPED, + 0, mPackageName); animateDismissal(); }); actionChip.setAlpha(1); @@ -1121,7 +1129,7 @@ public class ScreenshotView extends FrameLayout implements if (DEBUG_INPUT) { Log.d(TAG, "dismiss triggered via swipe gesture"); } - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SWIPE_DISMISSED); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SWIPE_DISMISSED, 0, mPackageName); animateDismissal(createSwipeDismissAnimation()); } else { // if we've moved, but not past the threshold, start the return animation diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java index daa9d099de861..f380911b64032 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java @@ -186,20 +186,22 @@ public class TakeScreenshotService extends Service { ScreenshotHelper.ScreenshotRequest screenshotRequest = (ScreenshotHelper.ScreenshotRequest) msg.obj; - mUiEventLogger.log(ScreenshotEvent.getScreenshotSource(screenshotRequest.getSource())); + ComponentName topComponent = screenshotRequest.getTopComponent(); + mUiEventLogger.log(ScreenshotEvent.getScreenshotSource(screenshotRequest.getSource()), 0, + topComponent == null ? "" : topComponent.getPackageName()); switch (msg.what) { case WindowManager.TAKE_SCREENSHOT_FULLSCREEN: if (DEBUG_SERVICE) { Log.d(TAG, "handleMessage: TAKE_SCREENSHOT_FULLSCREEN"); } - mScreenshot.takeScreenshotFullscreen(uriConsumer, requestCallback); + mScreenshot.takeScreenshotFullscreen(topComponent, uriConsumer, requestCallback); break; case WindowManager.TAKE_SCREENSHOT_SELECTED_REGION: if (DEBUG_SERVICE) { Log.d(TAG, "handleMessage: TAKE_SCREENSHOT_SELECTED_REGION"); } - mScreenshot.takeScreenshotPartial(uriConsumer, requestCallback); + mScreenshot.takeScreenshotPartial(topComponent, uriConsumer, requestCallback); break; case WindowManager.TAKE_SCREENSHOT_PROVIDED_IMAGE: if (DEBUG_SERVICE) { @@ -211,7 +213,6 @@ public class TakeScreenshotService extends Service { Insets insets = screenshotRequest.getInsets(); int taskId = screenshotRequest.getTaskId(); int userId = screenshotRequest.getUserId(); - ComponentName topComponent = screenshotRequest.getTopComponent(); if (screenshot == null) { Log.e(TAG, "Got null bitmap from screenshot message");