Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java +22 −14 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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: Loading Loading @@ -354,12 +356,13 @@ public class ScreenshotController { mCameraSound.load(MediaActionSound.SHUTTER_CLICK); } void takeScreenshotFullscreen(Consumer<Uri> finisher, RequestCallback requestCallback) { void takeScreenshotFullscreen(ComponentName topComponent, Consumer<Uri> finisher, RequestCallback requestCallback) { mCurrentRequestCallback = requestCallback; DisplayMetrics displayMetrics = new DisplayMetrics(); getDefaultDisplay().getRealMetrics(displayMetrics); takeScreenshotInternal( finisher, topComponent, finisher, new Rect(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels)); } Loading @@ -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<Uri> finisher, RequestCallback requestCallback) { void takeScreenshotPartial(ComponentName topComponent, final Consumer<Uri> finisher, RequestCallback requestCallback) { mScreenshotView.reset(); mCurrentRequestCallback = requestCallback; Loading @@ -398,7 +403,7 @@ public class ScreenshotController { mScreenshotView.requestApplyInsets(); mScreenshotView.takePartialScreenshot( rect -> takeScreenshotInternal(finisher, rect)); rect -> takeScreenshotInternal(topComponent, finisher, rect)); } /** Loading Loading @@ -491,7 +496,8 @@ public class ScreenshotController { /** * Takes a screenshot of the current display and shows an animation. */ private void takeScreenshotInternal(Consumer<Uri> finisher, Rect crop) { private void takeScreenshotInternal(ComponentName topComponent, Consumer<Uri> finisher, Rect crop) { mScreenshotTakenInPortrait = mContext.getResources().getConfiguration().orientation == ORIENTATION_PORTRAIT; Loading @@ -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) { Loading Loading @@ -539,7 +545,7 @@ public class ScreenshotController { } private void saveScreenshot(Bitmap screenshot, Consumer<Uri> 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); Loading @@ -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. " Loading @@ -560,6 +566,8 @@ public class ScreenshotController { } mScreenshotView.reset(); } mPackageName = topComponent == null ? "" : topComponent.getPackageName(); mScreenshotView.setPackageName(mPackageName); mScreenshotView.updateOrientation( mWindowManager.getCurrentWindowMetrics().getWindowInsets()); Loading Loading @@ -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()); } Loading Loading @@ -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); } } Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +15 −7 Original line number Diff line number Diff line Loading @@ -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<ScreenshotActionChip> mSmartChips = new ArrayList<>(); private PendingInteraction mPendingInteraction; Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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(); }); } Loading Loading @@ -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); Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java +5 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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"); Loading Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java +22 −14 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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: Loading Loading @@ -354,12 +356,13 @@ public class ScreenshotController { mCameraSound.load(MediaActionSound.SHUTTER_CLICK); } void takeScreenshotFullscreen(Consumer<Uri> finisher, RequestCallback requestCallback) { void takeScreenshotFullscreen(ComponentName topComponent, Consumer<Uri> finisher, RequestCallback requestCallback) { mCurrentRequestCallback = requestCallback; DisplayMetrics displayMetrics = new DisplayMetrics(); getDefaultDisplay().getRealMetrics(displayMetrics); takeScreenshotInternal( finisher, topComponent, finisher, new Rect(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels)); } Loading @@ -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<Uri> finisher, RequestCallback requestCallback) { void takeScreenshotPartial(ComponentName topComponent, final Consumer<Uri> finisher, RequestCallback requestCallback) { mScreenshotView.reset(); mCurrentRequestCallback = requestCallback; Loading @@ -398,7 +403,7 @@ public class ScreenshotController { mScreenshotView.requestApplyInsets(); mScreenshotView.takePartialScreenshot( rect -> takeScreenshotInternal(finisher, rect)); rect -> takeScreenshotInternal(topComponent, finisher, rect)); } /** Loading Loading @@ -491,7 +496,8 @@ public class ScreenshotController { /** * Takes a screenshot of the current display and shows an animation. */ private void takeScreenshotInternal(Consumer<Uri> finisher, Rect crop) { private void takeScreenshotInternal(ComponentName topComponent, Consumer<Uri> finisher, Rect crop) { mScreenshotTakenInPortrait = mContext.getResources().getConfiguration().orientation == ORIENTATION_PORTRAIT; Loading @@ -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) { Loading Loading @@ -539,7 +545,7 @@ public class ScreenshotController { } private void saveScreenshot(Bitmap screenshot, Consumer<Uri> 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); Loading @@ -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. " Loading @@ -560,6 +566,8 @@ public class ScreenshotController { } mScreenshotView.reset(); } mPackageName = topComponent == null ? "" : topComponent.getPackageName(); mScreenshotView.setPackageName(mPackageName); mScreenshotView.updateOrientation( mWindowManager.getCurrentWindowMetrics().getWindowInsets()); Loading Loading @@ -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()); } Loading Loading @@ -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); } } Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +15 −7 Original line number Diff line number Diff line Loading @@ -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<ScreenshotActionChip> mSmartChips = new ArrayList<>(); private PendingInteraction mPendingInteraction; Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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(); }); } Loading Loading @@ -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); Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java +5 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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"); Loading