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

Commit 979c9766 authored by Aran Ink's avatar Aran Ink
Browse files

Track and destroy inline URI grants separately from Notification URIs.

Bug: 142492493
Bug: 137398133

Test: Unit tests pass. Manual testing with an app configured to receive images via RemoteInput can access and display image URIs after the notification has been canceled, but before the notification entry has been removed from the shade.

Change-Id: If64ae7eff7293df3317a1f629977aaaccd866b32
parent 3e900e92
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.net.Uri;
import android.content.ComponentName;
import android.content.ComponentName;
import android.graphics.Rect;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Bundle;
import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import android.service.notification.StatusBarNotification;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;


@@ -78,7 +79,8 @@ interface IStatusBarService
    void onNotificationSettingsViewed(String key);
    void onNotificationSettingsViewed(String key);
    void setSystemUiVisibility(int displayId, int vis, int mask, String cause);
    void setSystemUiVisibility(int displayId, int vis, int mask, String cause);
    void onNotificationBubbleChanged(String key, boolean isBubble);
    void onNotificationBubbleChanged(String key, boolean isBubble);
    void grantInlineReplyUriPermission(String key, in Uri uri);
    void grantInlineReplyUriPermission(String key, in Uri uri, in UserHandle user, String packageName);
    void clearInlineReplyUriPermissions(String key);


    void onGlobalActionsShown();
    void onGlobalActionsShown();
    void onGlobalActionsHidden();
    void onGlobalActionsHidden();
+4 −1
Original line number Original line Diff line number Diff line
@@ -89,6 +89,7 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.tv.TvStatusBar;
import com.android.systemui.statusbar.tv.TvStatusBar;
@@ -277,7 +278,8 @@ public abstract class CarSystemUIBinder {
            DozeScrimController dozeScrimController,
            DozeScrimController dozeScrimController,
            CommandQueue commandQueue,
            CommandQueue commandQueue,
            PluginManager pluginManager,
            PluginManager pluginManager,
            CarNavigationBarController carNavigationBarController) {
            CarNavigationBarController carNavigationBarController,
            RemoteInputUriController remoteInputUriController) {
        return new CarStatusBar(
        return new CarStatusBar(
                context,
                context,
                featureFlags,
                featureFlags,
@@ -344,6 +346,7 @@ public abstract class CarSystemUIBinder {
                dozeScrimController,
                dozeScrimController,
                commandQueue,
                commandQueue,
                pluginManager,
                pluginManager,
                remoteInputUriController,
                carNavigationBarController);
                carNavigationBarController);
    }
    }
}
}
+4 −2
Original line number Original line Diff line number Diff line
@@ -128,6 +128,7 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.util.InjectionInflationController;
import com.android.systemui.util.InjectionInflationController;
@@ -301,7 +302,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
            DozeScrimController dozeScrimController,
            DozeScrimController dozeScrimController,
            CommandQueue commandQueue,
            CommandQueue commandQueue,
            PluginManager pluginManager,
            PluginManager pluginManager,

            RemoteInputUriController remoteInputUriController,
            /* Car Settings injected components. */
            /* Car Settings injected components. */
            CarNavigationBarController carNavigationBarController) {
            CarNavigationBarController carNavigationBarController) {
        super(
        super(
@@ -370,7 +371,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
                powerManager,
                powerManager,
                dozeScrimController,
                dozeScrimController,
                commandQueue,
                commandQueue,
                pluginManager);
                pluginManager,
                remoteInputUriController);
        mScrimController = scrimController;
        mScrimController = scrimController;
        mCarNavigationBarController = carNavigationBarController;
        mCarNavigationBarController = carNavigationBarController;
    }
    }
+5 −2
Original line number Original line Diff line number Diff line
@@ -95,6 +95,7 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.statusbar.tv.TvStatusBar;
import com.android.systemui.statusbar.tv.TvStatusBar;
@@ -273,7 +274,8 @@ public abstract class SystemUIBinder {
            PowerManager powerManager,
            PowerManager powerManager,
            DozeScrimController dozeScrimController,
            DozeScrimController dozeScrimController,
            CommandQueue commandQueue,
            CommandQueue commandQueue,
            PluginManager pluginManager) {
            PluginManager pluginManager,
            RemoteInputUriController remoteInputUriController) {
        return new StatusBar(
        return new StatusBar(
                context,
                context,
                featureFlags,
                featureFlags,
@@ -340,7 +342,8 @@ public abstract class SystemUIBinder {
                powerManager,
                powerManager,
                dozeScrimController,
                dozeScrimController,
                commandQueue,
                commandQueue,
                pluginManager);
                pluginManager,
                remoteInputUriController);
    }
    }


}
}
+6 −2
Original line number Original line Diff line number Diff line
@@ -59,6 +59,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry.
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.statusbar.policy.RemoteInputView;
import com.android.systemui.statusbar.policy.RemoteInputView;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -121,6 +122,7 @@ public class NotificationRemoteInputManager implements Dumpable {
    private final UserManager mUserManager;
    private final UserManager mUserManager;
    private final KeyguardManager mKeyguardManager;
    private final KeyguardManager mKeyguardManager;
    private final StatusBarStateController mStatusBarStateController;
    private final StatusBarStateController mStatusBarStateController;
    private final RemoteInputUriController mRemoteInputUriController;


    protected RemoteInputController mRemoteInputController;
    protected RemoteInputController mRemoteInputController;
    protected NotificationLifetimeExtender.NotificationSafeToRemoveCallback
    protected NotificationLifetimeExtender.NotificationSafeToRemoveCallback
@@ -260,7 +262,8 @@ public class NotificationRemoteInputManager implements Dumpable {
            NotificationEntryManager notificationEntryManager,
            NotificationEntryManager notificationEntryManager,
            Lazy<ShadeController> shadeController,
            Lazy<ShadeController> shadeController,
            StatusBarStateController statusBarStateController,
            StatusBarStateController statusBarStateController,
            @MainHandler Handler mainHandler) {
            @MainHandler Handler mainHandler,
            RemoteInputUriController remoteInputUriController) {
        mContext = context;
        mContext = context;
        mLockscreenUserManager = lockscreenUserManager;
        mLockscreenUserManager = lockscreenUserManager;
        mSmartReplyController = smartReplyController;
        mSmartReplyController = smartReplyController;
@@ -273,6 +276,7 @@ public class NotificationRemoteInputManager implements Dumpable {
        addLifetimeExtenders();
        addLifetimeExtenders();
        mKeyguardManager = context.getSystemService(KeyguardManager.class);
        mKeyguardManager = context.getSystemService(KeyguardManager.class);
        mStatusBarStateController = statusBarStateController;
        mStatusBarStateController = statusBarStateController;
        mRemoteInputUriController = remoteInputUriController;


        notificationEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
        notificationEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
            @Override
            @Override
@@ -300,7 +304,7 @@ public class NotificationRemoteInputManager implements Dumpable {
    /** Initializes this component with the provided dependencies. */
    /** Initializes this component with the provided dependencies. */
    public void setUpWithCallback(Callback callback, RemoteInputController.Delegate delegate) {
    public void setUpWithCallback(Callback callback, RemoteInputController.Delegate delegate) {
        mCallback = callback;
        mCallback = callback;
        mRemoteInputController = new RemoteInputController(delegate);
        mRemoteInputController = new RemoteInputController(delegate, mRemoteInputUriController);
        mRemoteInputController.addCallback(new RemoteInputController.Callback() {
        mRemoteInputController.addCallback(new RemoteInputController.Callback() {
            @Override
            @Override
            public void onRemoteInputSent(NotificationEntry entry) {
            public void onRemoteInputSent(NotificationEntry entry) {
Loading