Add SCENE_MODE_BARCODE and FOCUS_MODE_EDOF.

bug:2544367
Change-Id: If122a7745e080f9e4bffb15dc4930d71f0421867
diff --git a/api/current.xml b/api/current.xml
index b256d3f..a2063b5 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -72876,6 +72876,17 @@
  visibility="public"
 >
 </field>
+<field name="FOCUS_MODE_EDOF"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;edof&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FOCUS_MODE_FIXED"
  type="java.lang.String"
  transient="false"
@@ -72931,6 +72942,17 @@
  visibility="public"
 >
 </field>
+<field name="SCENE_MODE_BARCODE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;barcode&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SCENE_MODE_BEACH"
  type="java.lang.String"
  transient="false"
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 2495619..8687a89 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -824,6 +824,12 @@
         public static final String SCENE_MODE_PARTY = "party";
         public static final String SCENE_MODE_CANDLELIGHT = "candlelight";
 
+        /**
+         * Applications are looking for a barcode. Camera driver will be
+         * optimized for barcode reading.
+         */
+        public static final String SCENE_MODE_BARCODE = "barcode";
+
         // Values for focus mode settings.
         /**
          * Auto-focus mode.
@@ -845,6 +851,13 @@
          */
         public static final String FOCUS_MODE_FIXED = "fixed";
 
+        /**
+         * Extended depth of field (EDOF). Focusing is done digitally and
+         * continuously. Applications should not call {@link
+         * #autoFocus(AutoFocusCallback)} in this mode.
+         */
+        public static final String FOCUS_MODE_EDOF = "edof";
+
         // Formats for setPreviewFormat and setPictureFormat.
         private static final String PIXEL_FORMAT_YUV422SP = "yuv422sp";
         private static final String PIXEL_FORMAT_YUV420SP = "yuv420sp";
@@ -1507,9 +1520,11 @@
         }
 
         /**
-         * Sets the scene mode. Other parameters may be changed after changing
-         * scene mode. For example, flash and supported flash mode may be
-         * changed to "off" in night scene mode. After setting scene mode,
+         * Sets the scene mode. Changing scene mode may override other
+         * parameters (such as flash mode, focus mode, white balance). For
+         * example, suppose originally flash mode is on and supported flash
+         * modes are on/off. In night scene mode, both flash mode and supported
+         * flash mode may be changed to off. After setting scene mode,
          * applications should call getParameters to know if some parameters are
          * changed.
          *
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index a7568d7..3b0e9e5 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -289,6 +289,9 @@
     static const char SCENE_MODE_SPORTS[];
     static const char SCENE_MODE_PARTY[];
     static const char SCENE_MODE_CANDLELIGHT[];
+    // Applications are looking for a barcode. Camera driver will be optimized
+    // for barcode reading.
+    static const char SCENE_MODE_BARCODE[];
 
     // Formats for setPreviewFormat and setPictureFormat.
     static const char PIXEL_FORMAT_YUV422SP[];
@@ -309,6 +312,10 @@
     // focus, which is usually at hyperfocal distance. Applications should
     // not call CameraHardwareInterface.autoFocus in this mode.
     static const char FOCUS_MODE_FIXED[];
+    // Extended depth of field (EDOF). Focusing is done digitally and
+    // continuously. Applications should not call
+    // CameraHardwareInterface.autoFocus in this mode.
+    static const char FOCUS_MODE_EDOF[];
 
 private:
     DefaultKeyedVector<String8,String8>    mMap;
diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp
index 76a9715..b50d4d2 100644
--- a/libs/camera/CameraParameters.cpp
+++ b/libs/camera/CameraParameters.cpp
@@ -122,6 +122,7 @@
 const char CameraParameters::SCENE_MODE_SPORTS[] = "sports";
 const char CameraParameters::SCENE_MODE_PARTY[] = "party";
 const char CameraParameters::SCENE_MODE_CANDLELIGHT[] = "candlelight";
+const char CameraParameters::SCENE_MODE_BARCODE[] = "barcode";
 
 // Formats for setPreviewFormat and setPictureFormat.
 const char CameraParameters::PIXEL_FORMAT_YUV422SP[] = "yuv422sp";
@@ -135,6 +136,7 @@
 const char CameraParameters::FOCUS_MODE_INFINITY[] = "infinity";
 const char CameraParameters::FOCUS_MODE_MACRO[] = "macro";
 const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed";
+const char CameraParameters::FOCUS_MODE_EDOF[] = "edof";
 
 CameraParameters::CameraParameters()
                 : mMap()