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

Commit e5584cd3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make the default value of flashlight availibility to true."

parents 9b320108 8235ed14
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import androidx.slice.builders.ListBuilder;
import androidx.slice.builders.ListBuilder.RowBuilder;
import androidx.slice.builders.SliceAction;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.slices.CustomSliceRegistry;
@@ -131,10 +132,19 @@ public class FlashlightSlice implements CustomSliceable {
        return null;
    }


    private static boolean isFlashlightAvailable(Context context) {
        return Settings.Secure.getInt(
                context.getContentResolver(), Secure.FLASHLIGHT_AVAILABLE, 0) == 1;
    @VisibleForTesting
    static boolean isFlashlightAvailable(Context context) {
        int defaultAvailability = 0;
        try {
            // check if there is a flash unit
            if (getCameraId(context) != null) {
                defaultAvailability = 1;
            }
        } catch (CameraAccessException e) {
            Log.e(TAG, "Error getting camera id.", e);
        }
        return Secure.getInt(context.getContentResolver(),
                Secure.FLASHLIGHT_AVAILABLE, defaultAvailability) == 1;
    }

    private static boolean isFlashlightEnabled(Context context) {
+27 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ package com.android.settings.flashlight;
import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.provider.Settings;

import androidx.slice.Slice;
@@ -35,6 +37,11 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowCameraCharacteristics;
import org.robolectric.shadows.ShadowCameraManager;

import java.util.List;

@@ -42,10 +49,12 @@ import java.util.List;
public class FlashlightSliceTest {

    private Context mContext;
    private ShadowCameraManager mShadowCameraManager;

    @Before
    public void setUp() {
        mContext = RuntimeEnvironment.application;
        mShadowCameraManager = Shadows.shadowOf(mContext.getSystemService(CameraManager.class));

        // Set-up specs for SliceMetadata.
        SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
@@ -64,4 +73,22 @@ public class FlashlightSliceTest {
        final List<SliceAction> toggles = metadata.getToggles();
        assertThat(toggles).hasSize(1);
    }

    @Test
    public void isFlashlightAvailable_nullSecureAttr_noFlashUnit_returnFalse() {
        assertThat(FlashlightSlice.isFlashlightAvailable(mContext)).isFalse();
    }

    @Test
    public void isFlashlightAvailable_nullSecureAttr_hasFlashUnit_returnTrue() {
        final CameraCharacteristics characteristics =
                ShadowCameraCharacteristics.newCameraCharacteristics();
        final ShadowCameraCharacteristics shadowCharacteristics = Shadow.extract(characteristics);
        shadowCharacteristics.set(CameraCharacteristics.FLASH_INFO_AVAILABLE, true);
        shadowCharacteristics
                .set(CameraCharacteristics.LENS_FACING, CameraCharacteristics.LENS_FACING_BACK);
        mShadowCameraManager.addCamera("camera_id", characteristics);

        assertThat(FlashlightSlice.isFlashlightAvailable(mContext)).isTrue();
    }
}