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

Commit 3a690ad0 authored by Miranda Kephart's avatar Miranda Kephart Committed by Automerger Merge Worker
Browse files

Merge "Add clipboard logging" into tm-dev am: da0303ee

parents cd1f7f6c da0303ee
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -17,11 +17,14 @@
package com.android.systemui.clipboardoverlay;

import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.CLIPBOARD_OVERLAY_ENABLED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_ENTERED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_UPDATED;

import android.content.ClipboardManager;
import android.content.Context;
import android.provider.DeviceConfig;

import com.android.internal.logging.UiEventLogger;
import com.android.systemui.CoreStartable;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.util.DeviceConfigProxy;
@@ -38,15 +41,18 @@ public class ClipboardListener extends CoreStartable
    private final DeviceConfigProxy mDeviceConfig;
    private final ClipboardOverlayControllerFactory mOverlayFactory;
    private final ClipboardManager mClipboardManager;
    private final UiEventLogger mUiEventLogger;
    private ClipboardOverlayController mClipboardOverlayController;

    @Inject
    public ClipboardListener(Context context, DeviceConfigProxy deviceConfigProxy,
            ClipboardOverlayControllerFactory overlayFactory, ClipboardManager clipboardManager) {
            ClipboardOverlayControllerFactory overlayFactory, ClipboardManager clipboardManager,
            UiEventLogger uiEventLogger) {
        super(context);
        mDeviceConfig = deviceConfigProxy;
        mOverlayFactory = overlayFactory;
        mClipboardManager = clipboardManager;
        mUiEventLogger = uiEventLogger;
    }

    @Override
@@ -62,11 +68,15 @@ public class ClipboardListener extends CoreStartable
        if (!mClipboardManager.hasPrimaryClip()) {
            return;
        }
        String clipSource = mClipboardManager.getPrimaryClipSource();
        if (mClipboardOverlayController == null) {
            mClipboardOverlayController = mOverlayFactory.create(mContext);
            mUiEventLogger.log(CLIPBOARD_OVERLAY_ENTERED, 0, clipSource);
        } else {
            mUiEventLogger.log(CLIPBOARD_OVERLAY_UPDATED, 0, clipSource);
        }
        mClipboardOverlayController.setClipData(
                mClipboardManager.getPrimaryClip(), mClipboardManager.getPrimaryClipSource());
                mClipboardManager.getPrimaryClip(), clipSource);
        mClipboardOverlayController.setOnSessionCompleteListener(() -> {
            // Session is complete, free memory until it's needed again.
            mClipboardOverlayController = null;
+24 −3
Original line number Diff line number Diff line
@@ -21,6 +21,12 @@ import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT;

import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_ACTION_TAPPED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_EDIT_TAPPED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_SWIPE_DISMISSED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_TIMED_OUT;

import static java.util.Objects.requireNonNull;

import android.animation.Animator;
@@ -71,6 +77,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.PhoneWindow;
import com.android.systemui.R;
import com.android.systemui.screenshot.DraggableConstraintLayout;
@@ -97,6 +104,7 @@ public class ClipboardOverlayController {
    private static final int SWIPE_PADDING_DP = 12; // extra padding around views to allow swipe

    private final Context mContext;
    private final UiEventLogger mUiEventLogger;
    private final DisplayManager mDisplayManager;
    private final DisplayMetrics mDisplayMetrics;
    private final WindowManager mWindowManager;
@@ -129,11 +137,14 @@ public class ClipboardOverlayController {

    private boolean mBlockAttach = false;

    public ClipboardOverlayController(Context context, TimeoutHandler timeoutHandler) {
    public ClipboardOverlayController(
            Context context, TimeoutHandler timeoutHandler, UiEventLogger uiEventLogger) {
        mDisplayManager = requireNonNull(context.getSystemService(DisplayManager.class));
        final Context displayContext = context.createDisplayContext(getDefaultDisplay());
        mContext = displayContext.createWindowContext(TYPE_SCREENSHOT, null);

        mUiEventLogger = uiEventLogger;

        mAccessibilityManager = AccessibilityManager.getInstance(mContext);
        mTextClassifier = requireNonNull(context.getSystemService(TextClassificationManager.class))
                .getTextClassifier();
@@ -175,6 +186,7 @@ public class ClipboardOverlayController {

            @Override
            public void onSwipeDismissInitiated(Animator animator) {
                mUiEventLogger.log(CLIPBOARD_OVERLAY_SWIPE_DISMISSED);
                animator.addListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationStart(Animator animation) {
@@ -222,7 +234,10 @@ public class ClipboardOverlayController {
            mView.post(this::animateIn);
        });

        mTimeoutHandler.setOnTimeoutRunnable(this::animateOut);
        mTimeoutHandler.setOnTimeoutRunnable(() -> {
            mUiEventLogger.log(CLIPBOARD_OVERLAY_TIMED_OUT);
            animateOut();
        });

        mCloseDialogsReceiver = new BroadcastReceiver() {
            @Override
@@ -306,7 +321,10 @@ public class ClipboardOverlayController {
        chip.setText(action.getTitle());
        chip.setContentDescription(action.getTitle());
        chip.setIcon(action.getIcon(), false);
        chip.setPendingIntent(action.getActionIntent(), this::animateOut);
        chip.setPendingIntent(action.getActionIntent(), () -> {
            mUiEventLogger.log(CLIPBOARD_OVERLAY_ACTION_TAPPED);
            animateOut();
        });
        chip.setAlpha(1);
        return chip;
    }
@@ -350,6 +368,7 @@ public class ClipboardOverlayController {
    }

    private void editImage(Uri uri) {
        mUiEventLogger.log(CLIPBOARD_OVERLAY_EDIT_TAPPED);
        String editorPackage = mContext.getString(R.string.config_screenshotEditor);
        Intent editIntent = new Intent(Intent.ACTION_EDIT);
        if (!TextUtils.isEmpty(editorPackage)) {
@@ -363,6 +382,7 @@ public class ClipboardOverlayController {
    }

    private void editText() {
        mUiEventLogger.log(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);
@@ -370,6 +390,7 @@ public class ClipboardOverlayController {
    }

    private void showNearby() {
        mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED);
        mContext.startActivity(getRemoteCopyIntent());
        animateOut();
    }
+6 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.clipboardoverlay;

import android.content.Context;

import com.android.internal.logging.UiEventLogger;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.screenshot.TimeoutHandler;

@@ -28,14 +29,17 @@ import javax.inject.Inject;
 */
@SysUISingleton
public class ClipboardOverlayControllerFactory {
    private final UiEventLogger mUiEventLogger;

    @Inject
    public ClipboardOverlayControllerFactory() {}
    public ClipboardOverlayControllerFactory(UiEventLogger uiEventLogger) {
        mUiEventLogger = uiEventLogger;
    }

    /**
     * One new ClipboardOverlayController, coming right up!
     */
    public ClipboardOverlayController create(Context context) {
        return new ClipboardOverlayController(context, new TimeoutHandler(context));
        return new ClipboardOverlayController(context, new TimeoutHandler(context), mUiEventLogger);
    }
}
+50 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.clipboardoverlay;

import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;

public enum ClipboardOverlayEvent implements UiEventLogger.UiEventEnum {
    @UiEvent(doc = "clipboard overlay entered")
    CLIPBOARD_OVERLAY_ENTERED(949),
    @UiEvent(doc = "clipboard overlay updated")
    CLIPBOARD_OVERLAY_UPDATED(950),
    @UiEvent(doc = "clipboard edit tapped")
    CLIPBOARD_OVERLAY_EDIT_TAPPED(951),
    @UiEvent(doc = "clipboard action tapped")
    CLIPBOARD_OVERLAY_ACTION_TAPPED(952),
    @UiEvent(doc = "clipboard remote copy tapped")
    CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED(953),
    @UiEvent(doc = "clipboard overlay timed out")
    CLIPBOARD_OVERLAY_TIMED_OUT(954),
    @UiEvent(doc = "clipboard overlay dismiss tapped")
    CLIPBOARD_OVERLAY_DISMISS_TAPPED(955),
    @UiEvent(doc = "clipboard overlay swipe dismissed")
    CLIPBOARD_OVERLAY_SWIPE_DISMISSED(956);

    private final int mId;

    ClipboardOverlayEvent(int id) {
        mId = id;
    }

    @Override
    public int getId() {
        return mId;
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.view.IWindowManager;
import android.view.LayoutInflater;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.util.NotificationMessagingUtil;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -296,7 +297,8 @@ public class DependencyProvider {
    /***/
    @Provides
    @SysUISingleton
    public ClipboardOverlayControllerFactory provideClipboardOverlayControllerFactory() {
        return new ClipboardOverlayControllerFactory();
    public ClipboardOverlayControllerFactory provideClipboardOverlayControllerFactory(
            UiEventLogger uiEventLogger) {
        return new ClipboardOverlayControllerFactory(uiEventLogger);
    }
}
Loading