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

Commit 73f80740 authored by Lingyu Feng's avatar Lingyu Feng Committed by Android (Google) Code Review
Browse files

Merge "Prevent toast being shown on a display that cannot host tasks" into main

parents a4e62033 3d94ad46
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -279,6 +279,7 @@ import android.content.pm.VersionedPackage;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.drawable.Icon;
import android.hardware.display.DisplayManager;
import android.metrics.LogMaker;
import android.net.Uri;
import android.os.Binder;
@@ -335,6 +336,8 @@ import android.service.notification.ZenModeProto;
import android.service.notification.ZenPolicy;
import android.telecom.TelecomManager;
import android.telephony.TelephonyManager;
import android.text.Annotation;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.ArrayMap;
@@ -353,8 +356,7 @@ import android.view.Display;
import android.view.accessibility.AccessibilityManager;
import android.widget.RemoteViews;
import android.widget.Toast;
import android.text.Spanned;
import android.text.Annotation;
import android.window.DesktopExperienceFlags;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -684,6 +686,7 @@ public class NotificationManagerService extends SystemService {
    // Can be null for wear
    @Nullable StatusBarManagerInternal mStatusBar;
    private DisplayManager mDisplayManager;
    private WindowManagerInternal mWindowManagerInternal;
    private AlarmManager mAlarmManager;
    @VisibleForTesting
@@ -3467,6 +3470,7 @@ public class NotificationManagerService extends SystemService {
    @VisibleForTesting
    void onBootPhase(int phase, Looper mainLooper) {
        if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
            mDisplayManager = getContext().getSystemService(DisplayManager.class);
            mWindowManagerInternal = LocalServices.getService(WindowManagerInternal.class);
            mZenModeHelper.onSystemReady();
            RoleObserver roleObserver = new RoleObserver(getContext(),
@@ -4160,6 +4164,20 @@ public class NotificationManagerService extends SystemService {
                }
            }
            // If the display cannot host tasks (such as a display used for mirroring), show the
            // toast on default display instead.
            if (DesktopExperienceFlags.ENABLE_MIRROR_DISPLAY_NO_ACTIVITY.isTrue()) {
                Display display = mDisplayManager.getDisplay(displayId);
                if (display != null && !display.canHostTasks()) {
                    if (DBG) {
                        Slogf.d(TAG, "Changing display id from %d to %d, because display %d "
                                        + "cannot host tasks",
                                displayId, Display.DEFAULT_DISPLAY, displayId);
                    }
                    displayId = Display.DEFAULT_DISPLAY;
                }
            }
            checkCallerIsSameApp(pkg);
            final boolean isSystemToast = isCallerSystemOrSystemUi()
                    || PackageManagerService.PLATFORM_PACKAGE_NAME.equals(pkg);