Keep screen bright until boot completed.

Fixes b/2262575 (device boots into darkness)

Change-Id: Ib1fb3fcfd4a389d8aa5803a60e07660cfbe4fe47
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index bde03f3..38269e1 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -154,6 +154,7 @@
     private final int MY_UID;
 
     private boolean mDoneBooting = false;
+    private boolean mBootCompleted = false;
     private int mStayOnConditions = 0;
     private int[] mBroadcastQueue = new int[] { -1, -1, -1 };
     private int[] mBroadcastWhy = new int[3];
@@ -351,6 +352,13 @@
         }
     }
 
+    private final class BootCompletedReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            bootCompleted();
+        }
+    }
+
     /**
      * Set the setting that determines whether the device stays on when plugged in.
      * The argument is a bit string, with each bit specifying a power source that,
@@ -498,6 +506,9 @@
         IntentFilter filter = new IntentFilter();
         filter.addAction(Intent.ACTION_BATTERY_CHANGED);
         mContext.registerReceiver(new BatteryReceiver(), filter);
+        filter = new IntentFilter();
+        filter.addAction(Intent.ACTION_BOOT_COMPLETED);
+        mContext.registerReceiver(new BootCompletedReceiver(), filter);
 
         // Listen for Gservices changes
         IntentFilter gservicesChangedFilter =
@@ -970,7 +981,7 @@
 
     private void setTimeoutLocked(long now, int nextState)
     {
-        if (mDoneBooting) {
+        if (mBootCompleted) {
             mHandler.removeCallbacks(mTimeoutTask);
             mTimeoutTask.nextState = nextState;
             long when = now;
@@ -1385,7 +1396,7 @@
                 return;
             }
 
-            if (!mDoneBooting && !mUseSoftwareAutoBrightness) {
+            if (!mBootCompleted && !mUseSoftwareAutoBrightness) {
                 newState |= ALL_BRIGHT;
             }
 
@@ -2343,6 +2354,13 @@
             } finally {
                 Binder.restoreCallingIdentity(identity);
             }
+        }
+    }
+
+    void bootCompleted() {
+        Log.d(TAG, "bootCompleted");
+        synchronized (mLocks) {
+            mBootCompleted = true;
             userActivity(SystemClock.uptimeMillis(), false, BUTTON_EVENT, true);
             updateWakeLockLocked();
             mLocks.notifyAll();