From e3e68f6a52d7cecbbd982eab25336e9d44cd4061 Mon Sep 17 00:00:00 2001 From: Beverly Date: Tue, 15 Sep 2020 09:23:54 -0400 Subject: Add telecom to priorityOnlyDndExemptPackages telecom plays dialer's ringtone, so we allow them to play sounds when DND is on in priority mode. We trust that telecom will abide by the DND rules and exceptions (ie: checking for starred contacts) Test: manual Bug: 163525045 Change-Id: I798f1d968821e7d1b0a97b9b034c1ef0726f8242 Merged-In: I798f1d968821e7d1b0a97b9b034c1ef0726f8242 (cherry picked from commit c384c930fd64e8c8e02b7bc28314b7f692ef8c9f) --- core/res/res/values/config.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 6ca5bf27f54c..46f2fdeb5e51 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3478,6 +3478,7 @@ mode --> com.android.dialer + com.android.server.telecom com.android.systemui android -- cgit v1.2.3 From cf36be8ab100a4d3891dcb02fa3978f90b509459 Mon Sep 17 00:00:00 2001 From: Jeff Chang Date: Mon, 21 Sep 2020 16:55:15 +0800 Subject: [RESTRICT AUTOMERGE]Don't finish noHistory activity while it is on the topmost. There was no top running activity in the target task result in the NPE. The CL makes sure the top running noHistory activity is not finished when launched again and have protection for getTopNonFinishingActivity. Bug: 159507052 Test: atest testNoHistoryActivityNotFinished Change-Id: Id582f28d79bec052115e07d98c097c7d50c11609 (cherry picked from commit 59a51c6ba9219835d0419b5e5b2cde80bd695b4b) --- services/core/java/com/android/server/wm/ActivityStack.java | 5 +++-- services/core/java/com/android/server/wm/ActivityStarter.java | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index e9768a26f571..2b785c57a61c 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -1704,8 +1704,9 @@ class ActivityStack extends Task { // If the most recent activity was noHistory but was only stopped rather // than stopped+finished because the device went to sleep, we need to make // sure to finish it as we're making a new activity topmost. - if (shouldSleepActivities() && mLastNoHistoryActivity != null && - !mLastNoHistoryActivity.finishing) { + if (shouldSleepActivities() && mLastNoHistoryActivity != null + && !mLastNoHistoryActivity.finishing + && mLastNoHistoryActivity != next) { if (DEBUG_STATES) Slog.d(TAG_STATES, "no-history finish of " + mLastNoHistoryActivity + " on new resume"); mLastNoHistoryActivity.finishIfPossible("resume-no-history", false /* oomAdj */); diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index b3786212ea72..35ccc4347e65 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1481,9 +1481,10 @@ class ActivityStarter { // anyone interested in this piece of information. final ActivityStack homeStack = targetTask.getDisplayArea().getRootHomeTask(); final boolean homeTaskVisible = homeStack != null && homeStack.shouldBeVisible(null); + final ActivityRecord top = targetTask.getTopNonFinishingActivity(); + final boolean visible = top != null && top.isVisible(); mService.getTaskChangeNotificationController().notifyActivityRestartAttempt( - targetTask.getTaskInfo(), homeTaskVisible, clearedTask, - targetTask.getTopNonFinishingActivity().isVisible()); + targetTask.getTaskInfo(), homeTaskVisible, clearedTask, visible); } } -- cgit v1.2.3 From 3ac4e62a75760b000cf243dd7d123decc70284da Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Mon, 28 Sep 2020 02:57:01 +0000 Subject: Revert "Require permission to create trusted displays" This reverts commit f21c885ca7e86f77c808ab17fe1de650474de487. Reason for revert: Have regression b/168268396. Needs to pull out from Nov. builds. Bug: 162627132 Change-Id: I29fa3937d1655a0cc7591abcfa2067f4fb2b2bcb (cherry picked from commit ac67bee2165e7762f969258d1c39445229d1068d) --- core/java/android/app/ActivityView.java | 15 ++------------- .../android/window/VirtualDisplayTaskEmbedder.java | 9 +-------- core/tests/coretests/AndroidManifest.xml | 1 - .../android/hardware/display/VirtualDisplayTest.java | 19 ------------------- .../android/systemui/bubbles/BubbleExpandedView.java | 2 +- .../android/server/display/DisplayManagerService.java | 15 ++++----------- 6 files changed, 8 insertions(+), 53 deletions(-) diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java index 3cb6293f0706..98a23f2b0075 100644 --- a/core/java/android/app/ActivityView.java +++ b/core/java/android/app/ActivityView.java @@ -105,8 +105,7 @@ public class ActivityView extends ViewGroup implements android.window.TaskEmbedd public ActivityView( @NonNull Context context, @NonNull AttributeSet attrs, int defStyle, boolean singleTaskInstance, boolean usePublicVirtualDisplay) { - this(context, attrs, defStyle, singleTaskInstance, usePublicVirtualDisplay, - false /* disableSurfaceViewBackgroundLayer */); + this(context, attrs, defStyle, singleTaskInstance, usePublicVirtualDisplay, false); } /** @hide */ @@ -114,22 +113,12 @@ public class ActivityView extends ViewGroup implements android.window.TaskEmbedd @NonNull Context context, @NonNull AttributeSet attrs, int defStyle, boolean singleTaskInstance, boolean usePublicVirtualDisplay, boolean disableSurfaceViewBackgroundLayer) { - this(context, attrs, defStyle, singleTaskInstance, usePublicVirtualDisplay, - disableSurfaceViewBackgroundLayer, false /* useTrustedDisplay */); - } - - // TODO(b/162901735): Refactor ActivityView with Builder - /** @hide */ - public ActivityView( - @NonNull Context context, @NonNull AttributeSet attrs, int defStyle, - boolean singleTaskInstance, boolean usePublicVirtualDisplay, - boolean disableSurfaceViewBackgroundLayer, boolean useTrustedDisplay) { super(context, attrs, defStyle); if (useTaskOrganizer()) { mTaskEmbedder = new TaskOrganizerTaskEmbedder(context, this); } else { mTaskEmbedder = new VirtualDisplayTaskEmbedder(context, this, singleTaskInstance, - usePublicVirtualDisplay, useTrustedDisplay); + usePublicVirtualDisplay); } mSurfaceView = new SurfaceView(context, null, 0, 0, disableSurfaceViewBackgroundLayer); // Since ActivityView#getAlpha has been overridden, we should use parent class's alpha diff --git a/core/java/android/window/VirtualDisplayTaskEmbedder.java b/core/java/android/window/VirtualDisplayTaskEmbedder.java index 9013da36007e..9ccb4c172158 100644 --- a/core/java/android/window/VirtualDisplayTaskEmbedder.java +++ b/core/java/android/window/VirtualDisplayTaskEmbedder.java @@ -19,7 +19,6 @@ package android.window; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC; -import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_TRUSTED; import static android.view.Display.INVALID_DISPLAY; import android.app.ActivityManager; @@ -64,7 +63,6 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { private int mDisplayDensityDpi; private final boolean mSingleTaskInstance; private final boolean mUsePublicVirtualDisplay; - private final boolean mUseTrustedDisplay; private VirtualDisplay mVirtualDisplay; private Insets mForwardedInsets; private DisplayMetrics mTmpDisplayMetrics; @@ -79,12 +77,10 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { * only applicable if virtual displays are used */ public VirtualDisplayTaskEmbedder(Context context, VirtualDisplayTaskEmbedder.Host host, - boolean singleTaskInstance, boolean usePublicVirtualDisplay, - boolean useTrustedDisplay) { + boolean singleTaskInstance, boolean usePublicVirtualDisplay) { super(context, host); mSingleTaskInstance = singleTaskInstance; mUsePublicVirtualDisplay = usePublicVirtualDisplay; - mUseTrustedDisplay = useTrustedDisplay; } /** @@ -107,9 +103,6 @@ public class VirtualDisplayTaskEmbedder extends TaskEmbedder { if (mUsePublicVirtualDisplay) { virtualDisplayFlags |= VIRTUAL_DISPLAY_FLAG_PUBLIC; } - if (mUseTrustedDisplay) { - virtualDisplayFlags |= VIRTUAL_DISPLAY_FLAG_TRUSTED; - } mVirtualDisplay = displayManager.createVirtualDisplay( DISPLAY_NAME + "@" + System.identityHashCode(this), mHost.getWidth(), diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml index 7597e8732153..5c2841aff1d8 100644 --- a/core/tests/coretests/AndroidManifest.xml +++ b/core/tests/coretests/AndroidManifest.xml @@ -129,7 +129,6 @@ - diff --git a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java index 0f6284d22d10..daf613976358 100644 --- a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java +++ b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java @@ -247,25 +247,6 @@ public class VirtualDisplayTest extends AndroidTestCase { assertDisplayUnregistered(display); } - /** - * Ensures that an application can create a trusted virtual display with the permission - * {@code ADD_TRUSTED_DISPLAY}. - */ - public void testTrustedVirtualDisplay() throws Exception { - VirtualDisplay virtualDisplay = mDisplayManager.createVirtualDisplay(NAME, - WIDTH, HEIGHT, DENSITY, mSurface, - DisplayManager.VIRTUAL_DISPLAY_FLAG_TRUSTED); - assertNotNull("virtual display must not be null", virtualDisplay); - - Display display = virtualDisplay.getDisplay(); - try { - assertDisplayRegistered(display, Display.FLAG_PRIVATE | Display.FLAG_TRUSTED); - } finally { - virtualDisplay.release(); - } - assertDisplayUnregistered(display); - } - private void assertDisplayRegistered(Display display, int flags) { assertNotNull("display object must not be null", display); assertTrue("display must be valid", display.isValid()); diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java index 110a5ab67f0d..3d3171208b15 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java @@ -301,7 +301,7 @@ public class BubbleExpandedView extends LinearLayout { mActivityView = new ActivityView(mContext, null /* attrs */, 0 /* defStyle */, true /* singleTaskInstance */, false /* usePublicVirtualDisplay*/, - true /* disableSurfaceViewBackgroundLayer */, true /* useTrustedDisplay */); + true /* disableSurfaceViewBackgroundLayer */); // Set ActivityView's alpha value as zero, since there is no view content to be shown. setContentVisibility(false); diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 9a8be287690f..1058000e0b68 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -86,7 +86,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.text.TextUtils; -import android.util.EventLog; import android.util.IntArray; import android.util.Pair; import android.util.Slog; @@ -2192,16 +2191,10 @@ public final class DisplayManagerService extends SystemService { } } - if (callingUid != Process.SYSTEM_UID && (flags & VIRTUAL_DISPLAY_FLAG_TRUSTED) != 0) { - if (!checkCallingPermission(ADD_TRUSTED_DISPLAY, "createVirtualDisplay()")) { - EventLog.writeEvent(0x534e4554, "162627132", callingUid, - "Attempt to create a trusted display without holding permission!"); - throw new SecurityException("Requires ADD_TRUSTED_DISPLAY permission to " - + "create a trusted virtual display."); - } - } - - if ((flags & VIRTUAL_DISPLAY_FLAG_TRUSTED) == 0) { + if (callingUid == Process.SYSTEM_UID + || checkCallingPermission(ADD_TRUSTED_DISPLAY, "createVirtualDisplay()")) { + flags |= VIRTUAL_DISPLAY_FLAG_TRUSTED; + } else { flags &= ~VIRTUAL_DISPLAY_FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS; } -- cgit v1.2.3