am 3c2f216b: am 4636af18: am 04554021: Fixing NPE in InCallCameraManager.

* commit '3c2f216b2820a9555520797e0e79e4c7635f40cd':
  Fixing NPE in InCallCameraManager.
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 8a5170c..1f7a36f 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -41,7 +41,6 @@
     private boolean mAutomaticallyMuted = false;
     private boolean mPreviousMuteState = false;
     private boolean mShowManageConference = false;
-    private InCallCameraManager mInCallCameraManager;
 
     public CallButtonPresenter() {
     }
@@ -55,7 +54,6 @@
         // register for call state changes last
         InCallPresenter.getInstance().addListener(this);
         InCallPresenter.getInstance().addIncomingCallListener(this);
-        mInCallCameraManager = InCallPresenter.getInstance().getInCallCameraManager();
     }
 
     @Override
@@ -65,7 +63,6 @@
         InCallPresenter.getInstance().removeListener(this);
         AudioModeProvider.getInstance().removeListener(this);
         InCallPresenter.getInstance().removeIncomingCallListener(this);
-        mInCallCameraManager = null;
     }
 
     @Override
@@ -236,14 +233,15 @@
      *     false if we should switch to using the back-facing camera.
      */
     public void switchCameraClicked(boolean useFrontFacingCamera) {
-        mInCallCameraManager.setUseFrontFacingCamera(useFrontFacingCamera);
+        InCallCameraManager cameraManager = InCallPresenter.getInstance().getInCallCameraManager();
+        cameraManager.setUseFrontFacingCamera(useFrontFacingCamera);
 
         VideoCall videoCall = mCall.getVideoCall();
         if (videoCall == null) {
             return;
         }
 
-        String cameraId = mInCallCameraManager.getActiveCameraId();
+        String cameraId = cameraManager.getActiveCameraId();
         if (cameraId != null) {
             videoCall.setCamera(cameraId);
             videoCall.requestCameraCapabilities();
@@ -268,7 +266,9 @@
                     mCall.getVideoState() | VideoProfile.VideoState.PAUSED);
             videoCall.sendSessionModifyRequest(videoProfile);
         } else {
-            videoCall.setCamera(mInCallCameraManager.getActiveCameraId());
+            InCallCameraManager cameraManager = InCallPresenter.getInstance().
+                    getInCallCameraManager();
+            videoCall.setCamera(cameraManager.getActiveCameraId());
             VideoProfile videoProfile = new VideoProfile(
                     mCall.getVideoState() & ~VideoProfile.VideoState.PAUSED);
             videoCall.sendSessionModifyRequest(videoProfile);
diff --git a/InCallUI/src/com/android/incallui/InCallCameraManager.java b/InCallUI/src/com/android/incallui/InCallCameraManager.java
index 084a98f..ded9387 100644
--- a/InCallUI/src/com/android/incallui/InCallCameraManager.java
+++ b/InCallUI/src/com/android/incallui/InCallCameraManager.java
@@ -103,8 +103,22 @@
      * @param context The context.
      */
     private void initializeCameraList(Context context) {
-        CameraManager cameraManager = (CameraManager) context.getSystemService(
-                Context.CAMERA_SERVICE);
+        if (context == null) {
+            return;
+        }
+
+        CameraManager cameraManager = null;
+        try {
+            cameraManager = (CameraManager) context.getSystemService(
+                    Context.CAMERA_SERVICE);
+        } catch (Exception e) {
+            Log.e(this, "Could not get camera service.");
+            return;
+        }
+
+        if (cameraManager == null) {
+            return;
+        }
 
         String[] cameraIds = {};
         try {
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index f218de2..4523605 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -125,11 +125,6 @@
     private boolean mIsVideoCall;
 
     /**
-     * Determines the active camera for transmitted video.
-     */
-    private InCallCameraManager mInCallCameraManager;
-
-    /**
      * Determines the device orientation (portrait/lanscape).
      */
     private int mDeviceOrientation;
@@ -183,8 +178,6 @@
         InCallVideoCallListenerNotifier.getInstance().addSurfaceChangeListener(this);
         InCallVideoCallListenerNotifier.getInstance().addVideoEventListener(this);
         InCallVideoCallListenerNotifier.getInstance().addSessionModificationListener(this);
-
-        mInCallCameraManager = InCallPresenter.getInstance().getInCallCameraManager();
         mIsVideoCall = false;
     }
 
@@ -203,8 +196,6 @@
         InCallVideoCallListenerNotifier.getInstance().removeSurfaceChangeListener(this);
         InCallVideoCallListenerNotifier.getInstance().removeVideoEventListener(this);
         InCallVideoCallListenerNotifier.getInstance().removeSessionModificationListener(this);
-
-        mInCallCameraManager = null;
     }
 
     /**
@@ -425,7 +416,9 @@
             }
 
             mPreviewSurfaceState = PreviewSurfaceState.CAMERA_SET;
-            mVideoCall.setCamera(mInCallCameraManager.getActiveCameraId());
+            InCallCameraManager cameraManager = InCallPresenter.getInstance().
+                    getInCallCameraManager();
+            mVideoCall.setCamera(cameraManager.getActiveCameraId());
             mVideoCall.requestCameraCapabilities();
 
             if (ui.isDisplayVideoSurfaceCreated()) {