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

Commit 32b62ff1 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6332289 from e6b4c38f to qt-qpr3-release

Change-Id: I897994787611fa6bfe7168d953968ea144872556
parents 286efaa5 e6b4c38f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -505,6 +505,10 @@
    <!--  ID for the camera that needs extra protection -->
    <string translatable="false" name="config_protectedCameraId"></string>

    <!-- Comma-separated list of packages to exclude from camera protection e.g.
    "com.android.systemui,com.android.xyz" -->
    <string translatable="false" name="config_cameraProtectionExcludedPackages"></string>

    <!--  Flag to turn on the rendering of the above path or not  -->
    <bool name="config_enableDisplayCutoutProtection">false</bool>

+13 −5
Original line number Diff line number Diff line
@@ -37,20 +37,22 @@ class CameraAvailabilityListener(
    private val cameraManager: CameraManager,
    private val cutoutProtectionPath: Path,
    private val targetCameraId: String,
    excludedPackages: String,
    private val executor: Executor
) {
    private var cutoutBounds = Rect()
    private val excludedPackageIds: Set<String>
    private val listeners = mutableListOf<CameraTransitionCallback>()
    private val availabilityCallback: CameraManager.AvailabilityCallback =
            object : CameraManager.AvailabilityCallback() {
                override fun onCameraAvailable(cameraId: String) {
                override fun onCameraClosed(cameraId: String) {
                    if (targetCameraId == cameraId) {
                        notifyCameraInactive()
                    }
                }

                override fun onCameraUnavailable(cameraId: String) {
                    if (targetCameraId == cameraId) {
                override fun onCameraOpened(cameraId: String, packageId: String) {
                    if (targetCameraId == cameraId && !isExcluded(packageId)) {
                        notifyCameraActive()
                    }
                }
@@ -64,6 +66,7 @@ class CameraAvailabilityListener(
                computed.top.roundToInt(),
                computed.right.roundToInt(),
                computed.bottom.roundToInt())
        excludedPackageIds = excludedPackages.split(",").toSet()
    }

    /**
@@ -87,6 +90,10 @@ class CameraAvailabilityListener(
        listeners.remove(callback)
    }

    private fun isExcluded(packageId: String): Boolean {
        return excludedPackageIds.contains(packageId)
    }

    private fun registerCameraListener() {
        cameraManager.registerAvailabilityCallback(executor, availabilityCallback)
    }
@@ -118,9 +125,10 @@ class CameraAvailabilityListener(
            val res = context.resources
            val pathString = res.getString(R.string.config_frontBuiltInDisplayCutoutProtection)
            val cameraId = res.getString(R.string.config_protectedCameraId)
            val excluded = res.getString(R.string.config_cameraProtectionExcludedPackages)

            return CameraAvailabilityListener(
                    manager, pathFromString(pathString), cameraId, executor)
                    manager, pathFromString(pathString), cameraId, excluded, executor)
        }

        private fun pathFromString(pathString: String): Path {
+4 −3
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.PowerManager;
import android.os.PowerManagerInternal;
import android.os.RemoteException;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
@@ -49,6 +48,7 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.atLeastOnce;

@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@@ -76,6 +76,7 @@ public class UiModeManagerServiceTest extends UiServiceTestCase {
        mUiManagerService = new UiModeManagerService(mContext, mWindowManager, mWakeLock,
                mTwilightManager, mPowerManager, true);
        mScreenOffRecievers = new HashSet<>();
        when(mPowerManager.isInteractive()).thenReturn(true);
        mService = mUiManagerService.getService();
        when(mContext.checkCallingOrSelfPermission(anyString()))
                .thenReturn(PackageManager.PERMISSION_GRANTED);
@@ -93,7 +94,7 @@ public class UiModeManagerServiceTest extends UiServiceTestCase {
            mService.setNightMode(MODE_NIGHT_NO);
        } catch (SecurityException e) { /* we should ignore this update config exception*/ }
        mService.setNightMode(MODE_NIGHT_AUTO);
        verify(mContext).registerReceiver(any(BroadcastReceiver.class), any());
        verify(mContext, atLeastOnce()).registerReceiver(any(BroadcastReceiver.class), any());
    }

    @Test
@@ -105,7 +106,7 @@ public class UiModeManagerServiceTest extends UiServiceTestCase {
            mService.setNightMode(MODE_NIGHT_NO);
        } catch (SecurityException e) { /*we should ignore this update config exception*/ }
        given(mContext.registerReceiver(any(), any())).willThrow(SecurityException.class);
        verify(mContext).unregisterReceiver(any(BroadcastReceiver.class));
        verify(mContext, atLeastOnce()).unregisterReceiver(any(BroadcastReceiver.class));
    }

    @Test