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

Commit ff6ca997 authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Use user context for the clipboard overlay window

The clipboard overlay uses TYPE_SCREENSHOT, which doesn't show across
users. The window context needs to be constructed for the current user.

Bug: 217922018
Test: manual via adding a secondary user, verified that text copied
shows the clipboard overlay
Flag: com.android.systemui.clipboard_overlay_multiuser

Change-Id: I7d1c8edb209890189b81646f8702bd07691d5abd
parent 6860d185
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.clipboardoverlay.dagger;

import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT;

import static com.android.systemui.Flags.clipboardOverlayMultiuser;
import static com.android.systemui.Flags.enableViewCaptureTracing;
import static com.android.systemui.util.ConvenienceExtensionsKt.toKotlinLazy;

@@ -34,6 +35,7 @@ import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.systemui.clipboardoverlay.ClipboardOverlayView;
import com.android.systemui.res.R;
import com.android.systemui.settings.DisplayTracker;
import com.android.systemui.settings.UserTracker;

import dagger.Lazy;
import dagger.Module;
@@ -54,18 +56,28 @@ public interface ClipboardOverlayModule {
    @Provides
    @OverlayWindowContext
    static Context provideWindowContext(DisplayManager displayManager,
            DisplayTracker displayTracker, Context context) {
            DisplayTracker displayTracker, Context context, UserTracker userTracker) {
        Display display = displayManager.getDisplay(displayTracker.getDefaultDisplayId());
        if (clipboardOverlayMultiuser()) {
            return userTracker.getUserContext().createWindowContext(display, TYPE_SCREENSHOT, null);
        } else {
            return context.createWindowContext(display, TYPE_SCREENSHOT, null);
        }
    }

    /**
     *
     */
    @Provides
    static ClipboardOverlayView provideClipboardOverlayView(@OverlayWindowContext Context context) {
    static ClipboardOverlayView provideClipboardOverlayView(
            @OverlayWindowContext Context overlayContext, Context context) {
        if (clipboardOverlayMultiuser()) {
            return (ClipboardOverlayView) LayoutInflater.from(context).inflate(
                    R.layout.clipboard_overlay, null);
        } else {
            return (ClipboardOverlayView) LayoutInflater.from(overlayContext).inflate(
                    R.layout.clipboard_overlay, null);
        }
    }

    /**