am c680ac44: am 5f348fc7: am 4fbef46a: Merge "Defer retrieval of camera ids and capabilities until in video call." into mnc-dev

* commit 'c680ac44bbb18dfbea7e183706f800b173d01e98':
  Defer retrieval of camera ids and capabilities until in video call.
diff --git a/InCallUI/src/com/android/incallui/InCallCameraManager.java b/InCallUI/src/com/android/incallui/InCallCameraManager.java
index b7ec079..53000f1 100644
--- a/InCallUI/src/com/android/incallui/InCallCameraManager.java
+++ b/InCallUI/src/com/android/incallui/InCallCameraManager.java
@@ -57,14 +57,15 @@
     private boolean mUseFrontFacingCamera;
 
     /**
-     * Aspect ratio of the front facing camera.
+     * Indicates whether the list of cameras has been initialized yet.  Initialization is delayed
+     * until a video call is present.
      */
-    private float mFrontFacingCameraAspectRatio;
+    private boolean mIsInitialized = false;
 
     /**
-     * Aspect ratio of the rear facing camera.
+     * The context.
      */
-    private float mRearFacingCameraAspectRatio;
+    private Context mContext;
 
     /**
      * Initializes the InCall CameraManager.
@@ -73,7 +74,7 @@
      */
     public InCallCameraManager(Context context) {
         mUseFrontFacingCamera = true;
-        initializeCameraList(context);
+        mContext = context;
     }
 
     /**
@@ -103,6 +104,8 @@
      * @return The active camera ID.
      */
     public String getActiveCameraId() {
+        maybeInitializeCameraList(mContext);
+
         if (mUseFrontFacingCamera) {
             return mFrontFacingCameraId;
         } else {
@@ -111,15 +114,17 @@
     }
 
     /**
-     * Get the camera ID and aspect ratio for the front and rear cameras.
+     * Get the list of cameras available for use.
      *
      * @param context The context.
      */
-    private void initializeCameraList(Context context) {
-        if (context == null) {
+    private void maybeInitializeCameraList(Context context) {
+        if (mIsInitialized || context == null) {
             return;
         }
 
+        Log.v(this, "initializeCameraList");
+
         CameraManager cameraManager = null;
         try {
             cameraManager = (CameraManager) context.getSystemService(
@@ -160,6 +165,9 @@
                 }
             }
         }
+
+        mIsInitialized = true;
+        Log.v(this, "initializeCameraList : done");
     }
 
     public void addCameraSelectionListener(Listener listener) {
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index e39d154..c1fb645 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -489,19 +489,21 @@
                 + " hasCallStateChanged=" +
                 hasCallStateChanged + " isVideoMode=" + isVideoMode());
 
-        if (!hasCallStateChanged) { return; }
+        if (!hasCallStateChanged) {
+            return;
+        }
 
-        final InCallCameraManager cameraManager = InCallPresenter.getInstance().
-                getInCallCameraManager();
+        if (isVideoCall) {
+            final InCallCameraManager cameraManager = InCallPresenter.getInstance().
+                    getInCallCameraManager();
 
-        String prevCameraId = cameraManager.getActiveCameraId();
+            String prevCameraId = cameraManager.getActiveCameraId();
+            updateCameraSelection(call);
+            String newCameraId = cameraManager.getActiveCameraId();
 
-        updateCameraSelection(call);
-
-        String newCameraId = cameraManager.getActiveCameraId();
-
-        if (!Objects.equals(prevCameraId, newCameraId) && CallUtils.isActiveVideoCall(call)) {
-            enableCamera(call.getVideoCall(), true);
+            if (!Objects.equals(prevCameraId, newCameraId) && CallUtils.isActiveVideoCall(call)) {
+                enableCamera(call.getVideoCall(), true);
+            }
         }
 
         // Make sure we hide or show the video UI if needed.