camera3: Make front cameras limited mode, back cameras full mode

Bug: 9111852
Change-Id: Iad7ba75adf603a7c2eda1fa07c10ce4aab1aa51b
diff --git a/camera/EmulatedFakeCamera3.cpp b/camera/EmulatedFakeCamera3.cpp
index a321218..ae4716c 100644
--- a/camera/EmulatedFakeCamera3.cpp
+++ b/camera/EmulatedFakeCamera3.cpp
@@ -129,6 +129,12 @@
     for (size_t i = 0; i < CAMERA3_TEMPLATE_COUNT; i++) {
         mDefaultTemplates[i] = NULL;
     }
+
+    /**
+     * Front cameras = limited mode
+     * Back cameras = full mode
+     */
+    mFullMode = facingBack;
 }
 
 EmulatedFakeCamera3::~EmulatedFakeCamera3() {
@@ -1323,6 +1329,14 @@
     info.update(ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
             availableVstabModes, sizeof(availableVstabModes));
 
+    // android.info
+    const uint8_t supportedHardwareLevel =
+        mFullMode ? ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL :
+                    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
+    info.update(ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
+                &supportedHardwareLevel,
+                /*count*/1);
+
     mCameraInfo = info.release();
 
     return OK;
diff --git a/camera/EmulatedFakeCamera3.h b/camera/EmulatedFakeCamera3.h
index e9ef184..0889813 100644
--- a/camera/EmulatedFakeCamera3.h
+++ b/camera/EmulatedFakeCamera3.h
@@ -159,6 +159,9 @@
     /* Facing back (true) or front (false) switch. */
     bool               mFacingBack;
 
+    /* Full mode (true) or limited mode (false) switch */
+    bool               mFullMode;
+
     /**
      * Cache for default templates. Once one is requested, the pointer must be
      * valid at least until close() is called on the device