Loading packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +37 −14 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.view.ViewCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; Loading Loading @@ -132,7 +133,7 @@ public class ClipboardOverlayController { private static final int FONT_SEARCH_STEP_PX = 4; private final Context mContext; private final UiEventLogger mUiEventLogger; private final ClipboardLogger mClipboardLogger; private final BroadcastDispatcher mBroadcastDispatcher; private final DisplayManager mDisplayManager; private final DisplayMetrics mDisplayMetrics; Loading Loading @@ -181,7 +182,7 @@ public class ClipboardOverlayController { final Context displayContext = context.createDisplayContext(getDefaultDisplay()); mContext = displayContext.createWindowContext(TYPE_SCREENSHOT, null); mUiEventLogger = uiEventLogger; mClipboardLogger = new ClipboardLogger(uiEventLogger); mAccessibilityManager = AccessibilityManager.getInstance(mContext); mTextClassifier = requireNonNull(context.getSystemService(TextClassificationManager.class)) Loading Loading @@ -231,7 +232,7 @@ public class ClipboardOverlayController { @Override public void onSwipeDismissInitiated(Animator animator) { mUiEventLogger.log(CLIPBOARD_OVERLAY_SWIPE_DISMISSED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_SWIPE_DISMISSED); mExitAnimator = animator; } Loading @@ -249,7 +250,7 @@ public class ClipboardOverlayController { }); mDismissButton.setOnClickListener(view -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISS_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_DISMISS_TAPPED); animateOut(); }); Loading Loading @@ -285,7 +286,8 @@ public class ClipboardOverlayController { int newDisplayId) { if (mContext.getResources().getConfiguration().orientation != mOrientation) { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER); mClipboardLogger.logSessionComplete( CLIPBOARD_OVERLAY_DISMISSED_OTHER); hideImmediate(); } } Loading @@ -300,7 +302,7 @@ public class ClipboardOverlayController { }); mTimeoutHandler.setOnTimeoutRunnable(() -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_TIMED_OUT); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_TIMED_OUT); animateOut(); }); Loading @@ -308,7 +310,7 @@ public class ClipboardOverlayController { @Override public void onReceive(Context context, Intent intent) { if (ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_DISMISSED_OTHER); animateOut(); } } Loading @@ -320,7 +322,7 @@ public class ClipboardOverlayController { @Override public void onReceive(Context context, Intent intent) { if (SCREENSHOT_ACTION.equals(intent.getAction())) { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_DISMISSED_OTHER); animateOut(); } } Loading Loading @@ -390,7 +392,7 @@ public class ClipboardOverlayController { mContext.getString(R.string.clipboard_send_nearby_description)); mRemoteCopyChip.setVisibility(View.VISIBLE); mRemoteCopyChip.setOnClickListener((v) -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED); mContext.startActivity(remoteCopyIntent); animateOut(); }); Loading Loading @@ -450,7 +452,7 @@ public class ClipboardOverlayController { chip.setContentDescription(action.getTitle()); chip.setIcon(action.getIcon(), false); chip.setPendingIntent(action.getActionIntent(), () -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_ACTION_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_ACTION_TAPPED); animateOut(); }); chip.setAlpha(1); Loading Loading @@ -486,7 +488,7 @@ public class ClipboardOverlayController { touchRegion.op(tmpRect, Region.Op.UNION); if (!touchRegion.contains( (int) motionEvent.getRawX(), (int) motionEvent.getRawY())) { mUiEventLogger.log(CLIPBOARD_OVERLAY_TAP_OUTSIDE); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_TAP_OUTSIDE); animateOut(); } } Loading @@ -497,7 +499,7 @@ public class ClipboardOverlayController { } private void editImage(Uri uri) { mUiEventLogger.log(CLIPBOARD_OVERLAY_EDIT_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_EDIT_TAPPED); String editorPackage = mContext.getString(R.string.config_screenshotEditor); Intent editIntent = new Intent(Intent.ACTION_EDIT); if (!TextUtils.isEmpty(editorPackage)) { Loading @@ -512,7 +514,7 @@ public class ClipboardOverlayController { } private void editText() { mUiEventLogger.log(CLIPBOARD_OVERLAY_EDIT_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_EDIT_TAPPED); Intent editIntent = new Intent(mContext, EditTextActivity.class); editIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); mContext.startActivity(editIntent); Loading @@ -520,7 +522,7 @@ public class ClipboardOverlayController { } private void shareContent(ClipData clip) { mUiEventLogger.log(CLIPBOARD_OVERLAY_SHARE_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_SHARE_TAPPED); Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setDataAndType( clip.getItemAt(0).getUri(), clip.getDescription().getMimeType(0)); Loading Loading @@ -866,6 +868,7 @@ public class ClipboardOverlayController { mRemoteCopyChip.setVisibility(View.GONE); resetActionChips(); mTimeoutHandler.cancelTimeout(); mClipboardLogger.reset(); } @MainThread Loading Loading @@ -971,4 +974,24 @@ public class ClipboardOverlayController { mWindowManager.updateViewLayout(decorView, mWindowLayoutParams); } } static class ClipboardLogger { private final UiEventLogger mUiEventLogger; private boolean mGuarded = false; ClipboardLogger(UiEventLogger uiEventLogger) { mUiEventLogger = uiEventLogger; } void logSessionComplete(@NonNull UiEventLogger.UiEventEnum event) { if (!mGuarded) { mGuarded = true; mUiEventLogger.log(event); } } void reset() { mGuarded = false; } } } Loading
packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +37 −14 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.view.ViewCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; Loading Loading @@ -132,7 +133,7 @@ public class ClipboardOverlayController { private static final int FONT_SEARCH_STEP_PX = 4; private final Context mContext; private final UiEventLogger mUiEventLogger; private final ClipboardLogger mClipboardLogger; private final BroadcastDispatcher mBroadcastDispatcher; private final DisplayManager mDisplayManager; private final DisplayMetrics mDisplayMetrics; Loading Loading @@ -181,7 +182,7 @@ public class ClipboardOverlayController { final Context displayContext = context.createDisplayContext(getDefaultDisplay()); mContext = displayContext.createWindowContext(TYPE_SCREENSHOT, null); mUiEventLogger = uiEventLogger; mClipboardLogger = new ClipboardLogger(uiEventLogger); mAccessibilityManager = AccessibilityManager.getInstance(mContext); mTextClassifier = requireNonNull(context.getSystemService(TextClassificationManager.class)) Loading Loading @@ -231,7 +232,7 @@ public class ClipboardOverlayController { @Override public void onSwipeDismissInitiated(Animator animator) { mUiEventLogger.log(CLIPBOARD_OVERLAY_SWIPE_DISMISSED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_SWIPE_DISMISSED); mExitAnimator = animator; } Loading @@ -249,7 +250,7 @@ public class ClipboardOverlayController { }); mDismissButton.setOnClickListener(view -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISS_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_DISMISS_TAPPED); animateOut(); }); Loading Loading @@ -285,7 +286,8 @@ public class ClipboardOverlayController { int newDisplayId) { if (mContext.getResources().getConfiguration().orientation != mOrientation) { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER); mClipboardLogger.logSessionComplete( CLIPBOARD_OVERLAY_DISMISSED_OTHER); hideImmediate(); } } Loading @@ -300,7 +302,7 @@ public class ClipboardOverlayController { }); mTimeoutHandler.setOnTimeoutRunnable(() -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_TIMED_OUT); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_TIMED_OUT); animateOut(); }); Loading @@ -308,7 +310,7 @@ public class ClipboardOverlayController { @Override public void onReceive(Context context, Intent intent) { if (ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_DISMISSED_OTHER); animateOut(); } } Loading @@ -320,7 +322,7 @@ public class ClipboardOverlayController { @Override public void onReceive(Context context, Intent intent) { if (SCREENSHOT_ACTION.equals(intent.getAction())) { mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_DISMISSED_OTHER); animateOut(); } } Loading Loading @@ -390,7 +392,7 @@ public class ClipboardOverlayController { mContext.getString(R.string.clipboard_send_nearby_description)); mRemoteCopyChip.setVisibility(View.VISIBLE); mRemoteCopyChip.setOnClickListener((v) -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED); mContext.startActivity(remoteCopyIntent); animateOut(); }); Loading Loading @@ -450,7 +452,7 @@ public class ClipboardOverlayController { chip.setContentDescription(action.getTitle()); chip.setIcon(action.getIcon(), false); chip.setPendingIntent(action.getActionIntent(), () -> { mUiEventLogger.log(CLIPBOARD_OVERLAY_ACTION_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_ACTION_TAPPED); animateOut(); }); chip.setAlpha(1); Loading Loading @@ -486,7 +488,7 @@ public class ClipboardOverlayController { touchRegion.op(tmpRect, Region.Op.UNION); if (!touchRegion.contains( (int) motionEvent.getRawX(), (int) motionEvent.getRawY())) { mUiEventLogger.log(CLIPBOARD_OVERLAY_TAP_OUTSIDE); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_TAP_OUTSIDE); animateOut(); } } Loading @@ -497,7 +499,7 @@ public class ClipboardOverlayController { } private void editImage(Uri uri) { mUiEventLogger.log(CLIPBOARD_OVERLAY_EDIT_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_EDIT_TAPPED); String editorPackage = mContext.getString(R.string.config_screenshotEditor); Intent editIntent = new Intent(Intent.ACTION_EDIT); if (!TextUtils.isEmpty(editorPackage)) { Loading @@ -512,7 +514,7 @@ public class ClipboardOverlayController { } private void editText() { mUiEventLogger.log(CLIPBOARD_OVERLAY_EDIT_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_EDIT_TAPPED); Intent editIntent = new Intent(mContext, EditTextActivity.class); editIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); mContext.startActivity(editIntent); Loading @@ -520,7 +522,7 @@ public class ClipboardOverlayController { } private void shareContent(ClipData clip) { mUiEventLogger.log(CLIPBOARD_OVERLAY_SHARE_TAPPED); mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_SHARE_TAPPED); Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setDataAndType( clip.getItemAt(0).getUri(), clip.getDescription().getMimeType(0)); Loading Loading @@ -866,6 +868,7 @@ public class ClipboardOverlayController { mRemoteCopyChip.setVisibility(View.GONE); resetActionChips(); mTimeoutHandler.cancelTimeout(); mClipboardLogger.reset(); } @MainThread Loading Loading @@ -971,4 +974,24 @@ public class ClipboardOverlayController { mWindowManager.updateViewLayout(decorView, mWindowLayoutParams); } } static class ClipboardLogger { private final UiEventLogger mUiEventLogger; private boolean mGuarded = false; ClipboardLogger(UiEventLogger uiEventLogger) { mUiEventLogger = uiEventLogger; } void logSessionComplete(@NonNull UiEventLogger.UiEventEnum event) { if (!mGuarded) { mGuarded = true; mUiEventLogger.log(event); } } void reset() { mGuarded = false; } } }