Merge "Enable progress reporting for modules like HDR+." into ub-camera-glacier
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 3fb1063..a8cda78 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -24,12 +24,9 @@
    </string-array>
 
     <string-array name="pref_video_quality_entryvalues" translatable="false">
-        <!-- Large size is the default. -->
-        <item>@string/pref_video_quality_default</item>
-        <!-- A medium size -->
-        <item>medium</item>
-        <!-- Small size. -->
-        <item>small</item>
+        <item>@string/pref_video_quality_large</item>
+        <item>@string/pref_video_quality_medium</item>
+        <item>@string/pref_video_quality_small</item>
     </string-array>
 
     <!-- Camera Preferences Picture size dialog box entries -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f36f356..4ba7385 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -201,8 +201,12 @@
     <!-- The Video quality settings in preference [CHAR LIMIT=21] -->
     <string name="pref_video_quality_title">Video quality</string>
 
-    <!-- The default quality value is 'large'. -->
-    <string name="pref_video_quality_default" translatable="false">large</string>
+    <!-- The value of a camera preference indicating the video quality is 'large'. -->
+    <string name="pref_video_quality_large" translatable="false">large</string>
+    <!-- The value of a camera preference indicating the video quality is 'medium'. -->
+    <string name="pref_video_quality_medium" translatable="false">medium</string>
+    <!-- The value of a camera preference indicating the video quality is 'small'. -->
+    <string name="pref_video_quality_small" translatable="false">small</string>
 
     <!-- Describes the preference dialog for choosing interval between frame capture for
     time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] -->
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 5e3849e..3266cae 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -40,13 +40,13 @@
 
       <!-- BACK camera VIDEO resolution -->
       <ListPreference
-          android:defaultValue="@string/pref_camera_picturesize_default"
+          android:defaultValue="@string/pref_video_quality_large"
           android:entryValues="@array/pref_video_quality_entryvalues"
           android:key="pref_video_quality_back_key"
           android:title="@string/setting_back_camera_video" />
       <!-- FRONT camera VIDEO resolution -->
       <ListPreference
-          android:defaultValue="@string/pref_camera_picturesize_default"
+          android:defaultValue="@string/pref_video_quality_large"
           android:entryValues="@array/pref_video_quality_entryvalues"
           android:key="pref_video_quality_front_key"
           android:title="@string/setting_front_camera_video" />
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index c70f6e7..6fe83d2 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -722,6 +722,14 @@
                                    Keys.KEY_VIDEO_QUALITY_BACK)) {
             settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
                                          Keys.KEY_VIDEO_QUALITY_BACK);
+
+            // TODO: Remove this once 4k recording is stable enough on new devices.
+            // Don't set the default resolution to be large if the device supports 4k video.
+            if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_2160P)) {
+                settingsManager.set(SettingsManager.SCOPE_GLOBAL,
+                                    Keys.KEY_VIDEO_QUALITY_BACK,
+                                    mAppController.getAndroidContext().getString(R.string.pref_video_quality_medium));
+            }
         }
         if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL,
                                    Keys.KEY_VIDEO_QUALITY_FRONT)) {
diff --git a/src/com/android/camera/app/CameraController.java b/src/com/android/camera/app/CameraController.java
index 5f912f2..c83b67f 100644
--- a/src/com/android/camera/app/CameraController.java
+++ b/src/com/android/camera/app/CameraController.java
@@ -104,7 +104,8 @@
         if (mCameraProxy != null) {
             return mCameraProxy.getCameraId();
         } else {
-            return -1;
+            Log.v(TAG, "getCurrentCameraId without an open camera... returning requested id");
+            return mRequestingCameraId;
         }
     }
 
diff --git a/src/com/android/camera/settings/Keys.java b/src/com/android/camera/settings/Keys.java
index 09ba3ed..9490ef3 100644
--- a/src/com/android/camera/settings/Keys.java
+++ b/src/com/android/camera/settings/Keys.java
@@ -103,11 +103,11 @@
             context.getResources().getStringArray(R.array.pref_camera_focusmode_entryvalues));
 
         settingsManager.setDefaults(KEY_VIDEO_QUALITY_BACK,
-            context.getString(R.string.pref_video_quality_default),
+            context.getString(R.string.pref_video_quality_large),
             context.getResources().getStringArray(R.array.pref_video_quality_entryvalues));
 
         settingsManager.setDefaults(KEY_VIDEO_QUALITY_FRONT,
-            context.getString(R.string.pref_video_quality_default),
+            context.getString(R.string.pref_video_quality_large),
             context.getResources().getStringArray(R.array.pref_video_quality_entryvalues));
 
         settingsManager.setDefaults(KEY_JPEG_QUALITY,
diff --git a/src/com/android/camera/settings/SettingsManager.java b/src/com/android/camera/settings/SettingsManager.java
index 66c8342..a44693e 100644
--- a/src/com/android/camera/settings/SettingsManager.java
+++ b/src/com/android/camera/settings/SettingsManager.java
@@ -449,7 +449,7 @@
      * Set a setting to the default value stored in the DefaultsStore.
      */
     public void setToDefault(String scope, String key) {
-	set(scope, key, getStringDefault(key));
+        set(scope, key, getStringDefault(key));
     }
 
     /**