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

Commit e136ef56 authored by Youngtae Cha's avatar Youngtae Cha Committed by Automerger Merge Worker
Browse files

Merge "Wireless emergency message has to be run in pin app mode" into tm-dev...

Merge "Wireless emergency message has to be run in pin app mode" into tm-dev am: d353a5c5 am: 15a2346e am: 0311a18f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18330342



Change-Id: I08e5f3c2f6f97ba9f81847653a26f911c944b16d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 576e3340 0311a18f
Loading
Loading
Loading
Loading
+24 −0
Original line number Original line Diff line number Diff line
@@ -64,6 +64,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.protolog.common.ProtoLog;
import com.android.internal.protolog.common.ProtoLog;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.telephony.CellBroadcastUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.LocalServices;
import com.android.server.LocalServices;
import com.android.server.am.ActivityManagerService;
import com.android.server.am.ActivityManagerService;
@@ -392,6 +393,10 @@ public class LockTaskController {
            return false;
            return false;
        }
        }


        if (isWirelessEmergencyAlert(intent)) {
            return false;
        }

        return !(isTaskAuthAllowlisted(taskAuth) || mLockTaskModeTasks.isEmpty());
        return !(isTaskAuthAllowlisted(taskAuth) || mLockTaskModeTasks.isEmpty());
    }
    }


@@ -424,6 +429,25 @@ public class LockTaskController {
        return isPackageAllowlisted(userId, packageName);
        return isPackageAllowlisted(userId, packageName);
    }
    }


    private boolean isWirelessEmergencyAlert(Intent intent) {
        if (intent == null) {
            return false;
        }

        final ComponentName cellBroadcastAlertDialogComponentName =
                CellBroadcastUtils.getDefaultCellBroadcastAlertDialogComponent(mContext);

        if (cellBroadcastAlertDialogComponentName == null) {
            return false;
        }

        if (cellBroadcastAlertDialogComponentName.equals(intent.getComponent())) {
            return true;
        }

        return false;
    }

    private boolean isEmergencyCallIntent(Intent intent) {
    private boolean isEmergencyCallIntent(Intent intent) {
        if (intent == null) {
        if (intent == null) {
            return false;
            return false;
+17 −0
Original line number Original line Diff line number Diff line
@@ -82,6 +82,7 @@ import android.util.Pair;
import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;


import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.telephony.CellBroadcastUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.LocalServices;
import com.android.server.LocalServices;
import com.android.server.statusbar.StatusBarManagerInternal;
import com.android.server.statusbar.StatusBarManagerInternal;
@@ -296,6 +297,22 @@ public class LockTaskControllerTest {
        assertTrue(mLockTaskController.isLockTaskModeViolation(dialer));
        assertTrue(mLockTaskController.isLockTaskModeViolation(dialer));
    }
    }


    @Test
    public void testLockTaskViolation_wirelessEmergencyAlerts() {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // GIVEN cellbroadcast task necessary for emergency warning alerts
        Task cellbroadcastreceiver = getTask(
                new Intent().setComponent(
                        CellBroadcastUtils.getDefaultCellBroadcastAlertDialogComponent(mContext)),
                LOCK_TASK_AUTH_PINNABLE);

        // THEN the cellbroadcast task should all be allowed
        assertFalse(mLockTaskController.isLockTaskModeViolation(cellbroadcastreceiver));
    }

    @Test
    @Test
    public void testStopLockTaskMode() throws Exception {
    public void testStopLockTaskMode() throws Exception {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        // GIVEN one task record with allowlisted auth that is in lock task mode
+14 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.internal.telephony;
package com.android.internal.telephony;


import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
@@ -62,4 +63,17 @@ public class CellBroadcastUtils {


        return packageName;
        return packageName;
    }
    }

    /**
     * Utility method to get cellbroadcast alert dialog component name
     */
    public static ComponentName getDefaultCellBroadcastAlertDialogComponent(Context context) {
        String cellBroadcastReceiverPackageName =
                getDefaultCellBroadcastReceiverPackageName(context);
        if (TextUtils.isEmpty(cellBroadcastReceiverPackageName)) {
            return null;
        }
        return ComponentName.createRelative(cellBroadcastReceiverPackageName,
                "com.android.cellbroadcastreceiver.CellBroadcastAlertDialog");
    }
}
}