Merge "Cleanup communal mode shared app logic."
diff --git a/core/java/android/app/communal/CommunalManager.java b/core/java/android/app/communal/CommunalManager.java
index 22f07693..22bd9d1 100644
--- a/core/java/android/app/communal/CommunalManager.java
+++ b/core/java/android/app/communal/CommunalManager.java
@@ -23,9 +23,6 @@
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
-import android.compat.annotation.ChangeId;
-import android.compat.annotation.Disabled;
-import android.compat.annotation.Overridable;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.RemoteException;
@@ -46,31 +43,10 @@
     private final ICommunalManager mService;
     private final ArrayMap<CommunalModeListener, ICommunalModeListener> mCommunalModeListeners;
 
-    /**
-     * This change id is used to annotate packages which can run in communal mode by default,
-     * without requiring user opt-in.
-     *
-     * @hide
-     */
-    @ChangeId
-    @Overridable
-    @Disabled
-    public static final long ALLOW_COMMUNAL_MODE_BY_DEFAULT = 203673428L;
-
-    /**
-     * This change id is used to annotate packages which are allowed to run in communal mode.
-     *
-     * @hide
-     */
-    @ChangeId
-    @Overridable
-    @Disabled
-    public static final long ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT = 200324021L;
-
     /** @hide */
     public CommunalManager(ICommunalManager service) {
         mService = service;
-        mCommunalModeListeners = new ArrayMap<CommunalModeListener, ICommunalModeListener>();
+        mCommunalModeListeners = new ArrayMap<>();
     }
 
     /**
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index ea9540b..55ffdab 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -10490,13 +10490,6 @@
         public static final String COMMUNAL_MODE_ENABLED = "communal_mode_enabled";
 
         /**
-         * An array of all the packages which have been enabled for hub mode by the user.
-         *
-         * @hide
-         */
-        public static final String COMMUNAL_MODE_PACKAGES = "communal_mode_packages";
-
-        /**
          * An array of SSIDs of Wi-Fi networks that, when connected, are considered safe to enable
          * the communal mode.
          *
diff --git a/services/core/java/com/android/server/communal/CommunalManagerService.java b/services/core/java/com/android/server/communal/CommunalManagerService.java
index 1220391..2a6456d 100644
--- a/services/core/java/com/android/server/communal/CommunalManagerService.java
+++ b/services/core/java/com/android/server/communal/CommunalManagerService.java
@@ -16,117 +16,34 @@
 
 package com.android.server.communal;
 
-import static android.app.ActivityManager.INTENT_SENDER_ACTIVITY;
-import static android.app.communal.CommunalManager.ALLOW_COMMUNAL_MODE_BY_DEFAULT;
-import static android.app.communal.CommunalManager.ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT;
-import static android.content.Intent.ACTION_PACKAGE_REMOVED;
-
-import static com.android.server.wm.ActivityInterceptorCallback.COMMUNAL_MODE_ORDERED_ID;
-
 import android.Manifest;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
-import android.app.KeyguardManager;
-import android.app.PendingIntent;
 import android.app.communal.ICommunalManager;
 import android.app.communal.ICommunalModeListener;
-import android.app.compat.CompatChanges;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.IIntentSender;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.IntentSender;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.net.Uri;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.service.dreams.DreamManagerInternal;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.app.LaunchAfterAuthenticationActivity;
-import com.android.server.LocalServices;
 import com.android.server.SystemService;
-import com.android.server.wm.ActivityInterceptorCallback;
-import com.android.server.wm.ActivityTaskManagerInternal;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * System service for handling Communal Mode state.
  */
 public final class CommunalManagerService extends SystemService {
-    private static final String TAG = CommunalManagerService.class.getSimpleName();
-    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-    private static final String DELIMITER = ",";
     private final Context mContext;
-    private final ActivityTaskManagerInternal mAtmInternal;
-    private final KeyguardManager mKeyguardManager;
     private final AtomicBoolean mCommunalViewIsShowing = new AtomicBoolean(false);
     private final BinderService mBinderService;
-    private final PackageReceiver mPackageReceiver;
-    private final PackageManager mPackageManager;
-    private final DreamManagerInternal mDreamManagerInternal;
     private final RemoteCallbackList<ICommunalModeListener> mListeners =
             new RemoteCallbackList<>();
 
-    private final ActivityInterceptorCallback mActivityInterceptorCallback =
-            new ActivityInterceptorCallback() {
-                @Nullable
-                @Override
-                public ActivityInterceptResult intercept(ActivityInterceptorInfo info) {
-                    if (!shouldIntercept(info.aInfo)) {
-                        if (DEBUG) {
-                            Slog.d(TAG, "Activity allowed, not intercepting: "
-                                    + info.aInfo.getComponentName());
-                        }
-                        return null;
-                    }
-
-                    final IIntentSender target = mAtmInternal.getIntentSender(
-                            INTENT_SENDER_ACTIVITY,
-                            info.callingPackage,
-                            info.callingFeatureId,
-                            info.callingUid,
-                            info.userId,
-                            /* token= */null,
-                            /* resultWho= */ null,
-                            /* requestCode= */ 0,
-                            new Intent[]{info.intent},
-                            new String[]{info.resolvedType},
-                            PendingIntent.FLAG_IMMUTABLE,
-                            /* bOptions= */ null);
-
-                    return new ActivityInterceptResult(
-                            LaunchAfterAuthenticationActivity.createLaunchAfterAuthenticationIntent(
-                                    new IntentSender(target)),
-                            info.checkedOptions);
-
-                }
-            };
 
     public CommunalManagerService(Context context) {
         super(context);
         mContext = context;
-        mPackageManager = mContext.getPackageManager();
-        mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
-        mDreamManagerInternal = LocalServices.getService(DreamManagerInternal.class);
-        mKeyguardManager = mContext.getSystemService(KeyguardManager.class);
         mBinderService = new BinderService();
-        mPackageReceiver = new PackageReceiver(mContext);
     }
 
     @VisibleForTesting
@@ -139,116 +56,6 @@
         publishBinderService(Context.COMMUNAL_SERVICE, mBinderService);
     }
 
-    @Override
-    public void onBootPhase(int phase) {
-        if (phase != SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) return;
-        mAtmInternal.registerActivityStartInterceptor(
-                COMMUNAL_MODE_ORDERED_ID,
-                mActivityInterceptorCallback);
-        mPackageReceiver.register();
-        removeUninstalledPackagesFromSettings();
-    }
-
-    @Override
-    public void finalize() {
-        mPackageReceiver.unregister();
-    }
-
-    private Set<String> getUserEnabledApps() {
-        final String encodedApps = Settings.Secure.getStringForUser(
-                mContext.getContentResolver(),
-                Settings.Secure.COMMUNAL_MODE_PACKAGES,
-                UserHandle.USER_SYSTEM);
-
-        return TextUtils.isEmpty(encodedApps)
-                ? Collections.emptySet()
-                : new HashSet<>(Arrays.asList(encodedApps.split(DELIMITER)));
-    }
-
-    private void removeUninstalledPackagesFromSettings() {
-        for (String packageName : getUserEnabledApps()) {
-            if (!isPackageInstalled(packageName, mPackageManager)) {
-                removePackageFromSettings(packageName);
-            }
-        }
-    }
-
-    private void removePackageFromSettings(String packageName) {
-        Set<String> enabledPackages = getUserEnabledApps();
-        if (enabledPackages.remove(packageName)) {
-            Settings.Secure.putStringForUser(
-                    mContext.getContentResolver(),
-                    Settings.Secure.COMMUNAL_MODE_PACKAGES,
-                    String.join(DELIMITER, enabledPackages),
-                    UserHandle.USER_SYSTEM);
-        }
-    }
-
-    @VisibleForTesting
-    static boolean isPackageInstalled(String packageName, PackageManager packageManager) {
-        if (packageManager == null) return false;
-        try {
-            return packageManager.getPackageInfo(packageName, 0) != null;
-        } catch (PackageManager.NameNotFoundException e) {
-            return false;
-        }
-    }
-
-    private boolean isAppAllowed(ApplicationInfo appInfo) {
-        if (isActiveDream(appInfo) || isChangeEnabled(ALLOW_COMMUNAL_MODE_BY_DEFAULT, appInfo)) {
-            return true;
-        }
-
-        if (!isChangeEnabled(ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT, appInfo)) {
-            if (DEBUG) Slog.d(TAG, "App is not allowlisted: " + appInfo.packageName);
-            return false;
-        }
-
-        if (!getUserEnabledApps().contains(appInfo.packageName)) {
-            if (DEBUG) Slog.d(TAG, "App does not have user consent: " + appInfo.packageName);
-            return false;
-        }
-
-        return true;
-    }
-
-    private boolean isActiveDream(ApplicationInfo appInfo) {
-        final ComponentName activeDream = mDreamManagerInternal.getActiveDreamComponent(
-                /* doze= */ false);
-        final ComponentName activeDoze = mDreamManagerInternal.getActiveDreamComponent(
-                /* doze= */ true);
-        return isFromPackage(activeDream, appInfo) || isFromPackage(activeDoze, appInfo);
-    }
-
-    private static boolean isFromPackage(ComponentName componentName, ApplicationInfo appInfo) {
-        if (componentName == null) return false;
-        return TextUtils.equals(appInfo.packageName, componentName.getPackageName());
-    }
-
-    private static boolean isChangeEnabled(long changeId, ApplicationInfo appInfo) {
-        return CompatChanges.isChangeEnabled(changeId, appInfo.packageName, UserHandle.SYSTEM);
-    }
-
-    private boolean shouldIntercept(ActivityInfo activityInfo) {
-        if (!mCommunalViewIsShowing.get() || !mKeyguardManager.isKeyguardLocked()) return false;
-        ApplicationInfo appInfo = activityInfo.applicationInfo;
-        // Dreams are allowed to show, and don't require the showWhenLocked attribute.
-        if (isActiveDream(appInfo)) return false;
-
-        // If the activity doesn't have showWhenLocked enabled, disallow the activity.
-        final boolean showWhenLocked =
-                (activityInfo.flags & ActivityInfo.FLAG_SHOW_WHEN_LOCKED) != 0;
-        if (!showWhenLocked) {
-            if (DEBUG) {
-                Slog.d(TAG, "Activity does not contain showWhenLocked attribute: "
-                        + activityInfo.getComponentName());
-            }
-            return true;
-        }
-
-        return !isAppAllowed(appInfo);
-    }
-
     private void dispatchCommunalMode(boolean isShowing) {
         synchronized (mListeners) {
             int i = mListeners.beginBroadcast();
@@ -319,50 +126,4 @@
             }
         }
     }
-
-    /**
-     * A {@link BroadcastReceiver} that listens on package removed events and updates any stored
-     * package state in Settings.
-     */
-    private final class PackageReceiver extends BroadcastReceiver {
-        private final Context mContext;
-        private final IntentFilter mIntentFilter;
-
-        private PackageReceiver(Context context) {
-            mContext = context;
-            mIntentFilter = new IntentFilter();
-            mIntentFilter.addAction(ACTION_PACKAGE_REMOVED);
-            mIntentFilter.addDataScheme("package");
-        }
-
-        private void register() {
-            mContext.registerReceiverAsUser(
-                    this,
-                    UserHandle.SYSTEM,
-                    mIntentFilter,
-                    /* broadcastPermission= */null,
-                    /* scheduler= */ null,
-                    Context.RECEIVER_EXPORTED_UNAUDITED);
-        }
-
-        private void unregister() {
-            mContext.unregisterReceiver(this);
-        }
-
-        @Override
-        public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
-            final Uri data = intent.getData();
-            if (data == null) {
-                Slog.w(TAG, "Failed to get package name in package receiver");
-                return;
-            }
-            final String packageName = data.getSchemeSpecificPart();
-            final String action = intent.getAction();
-            if (ACTION_PACKAGE_REMOVED.equals(action)) {
-                removePackageFromSettings(packageName);
-            } else {
-                Slog.w(TAG, "Unsupported action in package receiver: " + action);
-            }
-        }
-    }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java
index 7ebf014..c46884f 100644
--- a/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java
@@ -16,58 +16,28 @@
 
 package com.android.server.communal;
 
-import static android.app.communal.CommunalManager.ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT;
-import static android.content.Intent.ACTION_PACKAGE_REMOVED;
-import static android.content.pm.ActivityInfo.FLAG_SHOW_WHEN_LOCKED;
-
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
-import static com.android.server.wm.ActivityInterceptorCallback.COMMUNAL_MODE_ORDERED_ID;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.spy;
 
 import android.Manifest;
-import android.annotation.Nullable;
-import android.app.KeyguardManager;
 import android.app.communal.ICommunalManager;
-import android.app.compat.CompatChanges;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.net.Uri;
 import android.os.RemoteException;
-import android.os.UserHandle;
 import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.service.dreams.DreamManagerInternal;
-import android.test.mock.MockContentResolver;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
 
-import com.android.internal.util.test.FakeSettingsProvider;
-import com.android.server.LocalServices;
-import com.android.server.SystemService;
-import com.android.server.wm.ActivityInterceptorCallback;
-import com.android.server.wm.ActivityTaskManagerInternal;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
 import org.mockito.MockitoSession;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.mockito.quality.Strictness;
@@ -82,25 +52,9 @@
 @SmallTest
 @Presubmit
 public class CommunalManagerServiceTest {
-    private static final int TEST_USER_ID = 1;
-    private static final int TEST_REAL_CALLING_UID = 2;
-    private static final int TEST_REAL_CALLING_PID = 3;
-    private static final String TEST_CALLING_PACKAGE = "com.test.caller";
-    private static final String TEST_PACKAGE_NAME = "com.test.package";
-
     private MockitoSession mMockingSession;
     private CommunalManagerService mService;
 
-    @Mock
-    private ActivityTaskManagerInternal mAtmInternal;
-    @Mock
-    private KeyguardManager mKeyguardManager;
-    @Mock
-    private DreamManagerInternal mDreamManagerInternal;
-
-    private ActivityInterceptorCallback mActivityInterceptorCallback;
-    private BroadcastReceiver mPackageReceiver;
-    private ActivityInfo mAInfo;
     private ICommunalManager mBinder;
     private ContextWrapper mContextSpy;
 
@@ -108,19 +62,10 @@
     public final void setUp() {
         mMockingSession = mockitoSession()
                 .initMocks(this)
-                .spyStatic(CommunalManagerService.class)
-                .mockStatic(CompatChanges.class)
                 .strictness(Strictness.WARN)
                 .startMocking();
 
         mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getContext()));
-        MockContentResolver cr = new MockContentResolver(mContextSpy);
-        cr.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
-        when(mContextSpy.getContentResolver()).thenReturn(cr);
-
-        when(mContextSpy.getSystemService(KeyguardManager.class)).thenReturn(mKeyguardManager);
-        addLocalServiceMock(ActivityTaskManagerInternal.class, mAtmInternal);
-        addLocalServiceMock(DreamManagerInternal.class, mDreamManagerInternal);
 
         doNothing().when(mContextSpy).enforceCallingPermission(
                 eq(Manifest.permission.WRITE_COMMUNAL_STATE), anyString());
@@ -128,83 +73,16 @@
                 eq(Manifest.permission.READ_COMMUNAL_STATE), anyString());
 
         mService = new CommunalManagerService(mContextSpy);
-        mService.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
-
-        ArgumentCaptor<ActivityInterceptorCallback> activityInterceptorCaptor =
-                ArgumentCaptor.forClass(ActivityInterceptorCallback.class);
-        verify(mAtmInternal).registerActivityStartInterceptor(eq(COMMUNAL_MODE_ORDERED_ID),
-                activityInterceptorCaptor.capture());
-        mActivityInterceptorCallback = activityInterceptorCaptor.getValue();
-
-        ArgumentCaptor<BroadcastReceiver> packageReceiverCaptor =
-                ArgumentCaptor.forClass(BroadcastReceiver.class);
-        verify(mContextSpy).registerReceiverAsUser(packageReceiverCaptor.capture(),
-                eq(UserHandle.SYSTEM), any(), any(), any(), anyInt());
-        mPackageReceiver = packageReceiverCaptor.getValue();
-
         mBinder = mService.getBinderServiceInstance();
-
-        mAInfo = new ActivityInfo();
-        mAInfo.applicationInfo = new ApplicationInfo();
-        mAInfo.packageName = mAInfo.applicationInfo.packageName = TEST_PACKAGE_NAME;
     }
 
     @After
     public void tearDown() {
-        FakeSettingsProvider.clearSettingsProvider();
         if (mMockingSession != null) {
             mMockingSession.finishMocking();
         }
     }
 
-    /**
-     * Creates a mock and registers it to {@link LocalServices}.
-     */
-    private static <T> void addLocalServiceMock(Class<T> clazz, T mock) {
-        LocalServices.removeServiceForTest(clazz);
-        LocalServices.addService(clazz, mock);
-    }
-
-    private ActivityInterceptorCallback.ActivityInterceptorInfo buildActivityInfo(Intent intent) {
-        return new ActivityInterceptorCallback.ActivityInterceptorInfo(
-                TEST_REAL_CALLING_UID,
-                TEST_REAL_CALLING_PID,
-                TEST_USER_ID,
-                TEST_CALLING_PACKAGE,
-                "featureId",
-                intent,
-                null,
-                mAInfo,
-                "resolvedType",
-                TEST_REAL_CALLING_PID,
-                TEST_REAL_CALLING_UID,
-                null);
-    }
-
-    private void allowPackages(String packages) {
-        Settings.Secure.putStringForUser(mContextSpy.getContentResolver(),
-                Settings.Secure.COMMUNAL_MODE_PACKAGES, packages, UserHandle.USER_SYSTEM);
-    }
-
-    private String getAllowedPackages() {
-        return Settings.Secure.getStringForUser(mContextSpy.getContentResolver(),
-                Settings.Secure.COMMUNAL_MODE_PACKAGES, UserHandle.USER_SYSTEM);
-    }
-
-    private void assertDoesIntercept() {
-        final Intent intent = new Intent(Intent.ACTION_MAIN);
-        assertThat(mActivityInterceptorCallback.intercept(buildActivityInfo(intent))).isNotNull();
-    }
-
-    private void assertDoesNotIntercept() {
-        final Intent intent = new Intent(Intent.ACTION_MAIN);
-        assertThat(mActivityInterceptorCallback.intercept(buildActivityInfo(intent))).isNull();
-    }
-
-    private Intent createPackageIntent(String packageName, @Nullable String action) {
-        return new Intent(action, Uri.parse("package:" + packageName));
-    }
-
     @Test
     public void testIsCommunalMode_isTrue() throws RemoteException {
         mBinder.setCommunalViewShowing(true);
@@ -216,149 +94,4 @@
         mBinder.setCommunalViewShowing(false);
         assertThat(mBinder.isCommunalMode()).isFalse();
     }
-
-    @Test
-    public void testIntercept_unlocked_communalOff_appNotEnabled_showWhenLockedOff() {
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(false);
-        mAInfo.flags = 0;
-        assertDoesNotIntercept();
-    }
-
-    @Test
-    public void testIntercept_unlocked_communalOn_appNotEnabled_showWhenLockedOff()
-            throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(false);
-        mAInfo.flags = 0;
-        assertDoesNotIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOff_appNotEnabled_showWhenLockedOff() {
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        mAInfo.flags = 0;
-        assertDoesNotIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOn_appNotEnabled_showWhenLockedOff_allowlistEnabled()
-            throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        when(CompatChanges.isChangeEnabled(ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT, TEST_PACKAGE_NAME,
-                UserHandle.SYSTEM)).thenReturn(true);
-        mAInfo.flags = 0;
-        assertDoesIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOn_appNotEnabled_showWhenLockedOn_allowlistEnabled()
-            throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        when(CompatChanges.isChangeEnabled(ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT, TEST_PACKAGE_NAME,
-                UserHandle.SYSTEM)).thenReturn(true);
-        mAInfo.flags = FLAG_SHOW_WHEN_LOCKED;
-
-        allowPackages("package1,package2");
-        assertDoesIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOn_appEnabled_showWhenLockedOff_allowlistEnabled()
-            throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        when(CompatChanges.isChangeEnabled(ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT, TEST_PACKAGE_NAME,
-                UserHandle.SYSTEM)).thenReturn(true);
-        mAInfo.flags = 0;
-
-        allowPackages(TEST_PACKAGE_NAME);
-        assertDoesIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOn_appEnabled_showWhenLockedOn_allowlistEnabled()
-            throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        when(CompatChanges.isChangeEnabled(ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT, TEST_PACKAGE_NAME,
-                UserHandle.SYSTEM)).thenReturn(true);
-
-        mAInfo.flags = FLAG_SHOW_WHEN_LOCKED;
-
-        allowPackages(TEST_PACKAGE_NAME);
-        assertDoesNotIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOn_appEnabled_showWhenLockedOn_allowlistDisabled()
-            throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        when(CompatChanges.isChangeEnabled(ALLOW_COMMUNAL_MODE_WITH_USER_CONSENT, TEST_PACKAGE_NAME,
-                UserHandle.SYSTEM)).thenReturn(false);
-
-        mAInfo.flags = FLAG_SHOW_WHEN_LOCKED;
-
-        allowPackages(TEST_PACKAGE_NAME);
-        assertDoesIntercept();
-    }
-
-    @Test
-    public void testIntercept_locked_communalOn_dream() throws RemoteException {
-        mBinder.setCommunalViewShowing(true);
-        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
-        when(mDreamManagerInternal.getActiveDreamComponent(false)).thenReturn(
-                new ComponentName(TEST_PACKAGE_NAME, "SomeClass"));
-
-        allowPackages(TEST_PACKAGE_NAME);
-        assertDoesNotIntercept();
-    }
-
-    @Test
-    public void testUpdateSettings_packageUninstalled() {
-        allowPackages("package1,package2");
-        assertThat(getAllowedPackages()).isEqualTo("package1,package2");
-
-        mPackageReceiver.onReceive(mContextSpy,
-                createPackageIntent("package1", ACTION_PACKAGE_REMOVED));
-
-        assertThat(getAllowedPackages()).isEqualTo("package2");
-    }
-
-    @Test
-    public void testUpdateSettings_nullAction_doesNothing() {
-        allowPackages("package1,package2");
-        assertThat(getAllowedPackages()).isEqualTo("package1,package2");
-
-        mPackageReceiver.onReceive(mContextSpy,
-                createPackageIntent("package1", null));
-
-        assertThat(getAllowedPackages()).isEqualTo("package1,package2");
-    }
-
-    @Test
-    public void testUpdateSettings_invalidPackage_doesNothing() {
-        allowPackages("package1,package2");
-        assertThat(getAllowedPackages()).isEqualTo("package1,package2");
-
-        mPackageReceiver.onReceive(mContextSpy,
-                createPackageIntent("package3", ACTION_PACKAGE_REMOVED));
-
-        assertThat(getAllowedPackages()).isEqualTo("package1,package2");
-    }
-
-    @Test
-    public void testUpdateSettings_onBoot() {
-        allowPackages("package1,package2");
-        assertThat(getAllowedPackages()).isEqualTo("package1,package2");
-
-        when(CommunalManagerService.isPackageInstalled(eq("package1"), any())).thenReturn(true);
-        when(CommunalManagerService.isPackageInstalled(eq("package2"), any())).thenReturn(false);
-
-        mService.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
-
-        assertThat(getAllowedPackages()).isEqualTo("package1");
-    }
 }