Loading src/com/android/settings/flashlight/FlashlightSlice.java +14 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading tests/robotests/src/com/android/settings/flashlight/FlashlightSliceTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading @@ -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(); } } Loading
src/com/android/settings/flashlight/FlashlightSlice.java +14 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading
tests/robotests/src/com/android/settings/flashlight/FlashlightSliceTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading @@ -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(); } }