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

Commit c983c638 authored by Achim Thesmann's avatar Achim Thesmann
Browse files

Opt in SysUI code to allow BAL

We see some calls from android.uid.systemui being blocked in our logs. Unfortunately we cannot exactly identify the source of these calls, but in a manual review we identified some invocations that may be affected. To avoid activities being blocked and functionality regression, this change will revert those code paths back to T behavior by opting into allowing the launch if the PI sender (systemUI) is in the foreground. Maybe not all these changes are required, but any missed change might cause functionality to break, while extra changes have no functional impact.

The change is relatively safe since it won't block anything, only allow the launch, as it was allowed by default in T.

Bug: 284486752
Test: compile + presubmit
Change-Id: I78f838ba762e7d41d908aff6f003e081ab9b4b7c
parent 08abe7a6
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -162,7 +162,11 @@ class DetailDialog(
                    broadcastSender.closeSystemDialogs()
                    // not sent as interactive, lest the higher-importance activity launch
                    // be impacted
                    pendingIntent.send()
                    val options = ActivityOptions.makeBasic()
                            .setPendingIntentBackgroundActivityStartMode(
                                    ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
                            .toBundle()
                    pendingIntent.send(options)
                    false
                }
                if (keyguardStateController.isUnlocked()) {
+6 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.controls.ui

import android.app.ActivityOptions
import android.app.AlertDialog
import android.app.PendingIntent
import android.content.DialogInterface
@@ -74,7 +75,11 @@ class StatusBehavior : Behavior {
                R.string.controls_open_app,
                DialogInterface.OnClickListener { dialog, _ ->
                    try {
                        cws.control?.getAppIntent()?.send()
                        val options = ActivityOptions.makeBasic()
                                .setPendingIntentBackgroundActivityStartMode(
                                        ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
                                .toBundle()
                        cws.control?.getAppIntent()?.send(options)
                        context.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
                    } catch (e: PendingIntent.CanceledException) {
                        cvh.setErrorStatus()
+6 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.systemui.smartspace.dagger

import android.app.ActivityOptions
import android.app.PendingIntent
import android.content.Intent
import android.view.View
@@ -81,7 +82,11 @@ interface SmartspaceViewComponent {
                        showOnLockscreen: Boolean
                ) {
                    if (showOnLockscreen) {
                        pi.send()
                        val options = ActivityOptions.makeBasic()
                                .setPendingIntentBackgroundActivityStartMode(
                                        ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
                                .toBundle()
                        pi.send(options)
                    } else {
                        activityStarter.startPendingIntentDismissingKeyguard(pi)
                    }
+6 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.lockscreen

import android.app.ActivityOptions
import android.app.PendingIntent
import android.app.smartspace.SmartspaceConfig
import android.app.smartspace.SmartspaceManager
@@ -358,7 +359,11 @@ constructor(
                    showOnLockscreen: Boolean
            ) {
                if (showOnLockscreen) {
                    pi.send()
                    val options = ActivityOptions.makeBasic()
                            .setPendingIntentBackgroundActivityStartMode(
                                    ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
                            .toBundle()
                    pi.send(options)
                } else {
                    activityStarter.postStartActivityDismissingKeyguard(pi)
                }
+3 −0
Original line number Diff line number Diff line
@@ -572,6 +572,9 @@ constructor(
                                    // TODO b/221255671: restrict this to only be set for
                                    // notifications
                                    options.isEligibleForLegacyPermissionPrompt = true
                                    options.setPendingIntentBackgroundActivityStartMode(
                                        ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
                                    )
                                    return intent.sendAndReturnResult(
                                        null,
                                        0,
Loading