Merge "Fix UI janky in privacy settings"
diff --git a/src/com/android/settings/wifi/qrcode/QrCamera.java b/src/com/android/settings/wifi/qrcode/QrCamera.java
index 3e9c0b2..21be399 100644
--- a/src/com/android/settings/wifi/qrcode/QrCamera.java
+++ b/src/com/android/settings/wifi/qrcode/QrCamera.java
@@ -80,14 +80,16 @@
HINTS.put(DecodeHintType.POSSIBLE_FORMATS, FORMATS);
}
- private Camera mCamera;
+ @VisibleForTesting
+ Camera mCamera;
private Size mPreviewSize;
private WeakReference<Context> mContext;
private ScannerCallback mScannerCallback;
private MultiFormatReader mReader;
private DecodingTask mDecodeTask;
private int mCameraOrientation;
- private Camera.Parameters mParameters;
+ @VisibleForTesting
+ Camera.Parameters mParameters;
public QrCamera(Context context, ScannerCallback callback) {
mContext = new WeakReference<Context>(context);
@@ -171,12 +173,13 @@
boolean isValid(String qrCode);
}
- private void setCameraParameter() {
+ @VisibleForTesting
+ void setCameraParameter() {
mParameters = mCamera.getParameters();
mPreviewSize = getBestPreviewSize(mParameters);
mParameters.setPreviewSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
Size pictureSize = getBestPictureSize(mParameters);
- mParameters.setPreviewSize(pictureSize.getWidth(), pictureSize.getHeight());
+ mParameters.setPictureSize(pictureSize.getWidth(), pictureSize.getHeight());
if (mParameters.getSupportedFlashModes().contains(Parameters.FLASH_MODE_OFF)) {
mParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
diff --git a/tests/robotests/src/com/android/settings/wifi/qrcode/QrCameraTest.java b/tests/robotests/src/com/android/settings/wifi/qrcode/QrCameraTest.java
index 3f67137..de0df73 100644
--- a/tests/robotests/src/com/android/settings/wifi/qrcode/QrCameraTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/qrcode/QrCameraTest.java
@@ -18,14 +18,19 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
-import android.util.Size;
+import android.hardware.Camera;
+import android.hardware.Camera.Parameters;
+import android.hardware.Camera.Size;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
@@ -33,9 +38,6 @@
import com.google.zxing.WriterException;
import com.google.zxing.common.HybridBinarizer;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -43,6 +45,12 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
@RunWith(RobolectricTestRunner.class)
public class QrCameraTest {
@@ -58,12 +66,12 @@
private class ScannerTestCallback implements QrCamera.ScannerCallback {
@Override
- public Size getViewSize() {
- return new Size(0, 0);
+ public android.util.Size getViewSize() {
+ return new android.util.Size(0, 0);
}
@Override
- public Rect getFramePosition(Size previewSize, int cameraOrientation) {
+ public Rect getFramePosition(android.util.Size previewSize, int cameraOrientation) {
return new Rect(0,0,0,0);
}
@@ -147,4 +155,22 @@
assertThat(mQrCode).isEqualTo(unicodeTest);
}
+
+ @Test
+ public void setCameraParameter_shouldSetParameters() {
+ mCamera.mCamera = mock(Camera.class);
+ Parameters parameters = mock(Camera.Parameters.class);
+ Size size = mCamera.mCamera.new Size(1920, 1440);
+ List<Camera.Size> sizes = new ArrayList<>(Arrays.asList(size));
+ when(parameters.getPreviewSize()).thenReturn(size);
+ when(parameters.getSupportedPreviewSizes()).thenReturn(sizes);
+ when(parameters.getSupportedPictureSizes()).thenReturn(sizes);
+ when(mCamera.mCamera.getParameters()).thenReturn(parameters);
+
+ mCamera.setCameraParameter();
+
+ verify(mCamera.mParameters).setPreviewSize(anyInt(), anyInt());
+ verify(mCamera.mParameters).setPictureSize(anyInt(), anyInt());
+ verify(mCamera.mCamera).setParameters(mCamera.mParameters);
+ }
}