Shut down when the battery does not exist

Issue: FP3-A11#233
Change-Id: I3bb6fc55465d284a42b56979f4a53c59f6c77153
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index c9ba58a..2a29693 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -422,6 +422,25 @@
         }
     }
 
+    private void shutdownIfNoBatteryLocked() {
+        // If the battery does not exist, it will shut down immediately.
+        if (mHealthInfo.batteryPresent == false) {
+            mHandler.post(new Runnable() {
+                @Override
+                public void run() {
+                    if (mActivityManagerInternal.isSystemReady()) {
+                        Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
+                        intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
+                        intent.putExtra(Intent.EXTRA_REASON,
+                                PowerManager.SHUTDOWN_LOW_BATTERY);
+                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                        mContext.startActivityAsUser(intent, UserHandle.CURRENT);
+                    }
+                }
+            });
+        }
+    }
+
     private void update(android.hardware.health.V2_1.HealthInfo info) {
         traceBegin("HealthInfoUpdate");
 
@@ -500,6 +519,7 @@
 
         shutdownIfNoPowerLocked();
         shutdownIfOverTempLocked();
+        shutdownIfNoBatteryLocked();
 
         if (force || (mHealthInfo.batteryStatus != mLastBatteryStatus ||
                 mHealthInfo.batteryHealth != mLastBatteryHealth ||