health: Select correct provider on init

Fixes the following crash on boot when trying to use deadline mode:

E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: android.display
E AndroidRuntime: java.lang.RuntimeException: Failed to boot service org.lineageos.platform.internal.health.HealthInterfaceService: onBootPhase threw an exception during phase 1000
E AndroidRuntime: 	at com.android.server.SystemServiceManager.startBootPhase(SystemServiceManager.java:321)
E AndroidRuntime: 	at com.android.server.am.ActivityManagerService.finishBooting(ActivityManagerService.java:5199)
E AndroidRuntime: 	at com.android.server.am.ActivityManagerService.bootAnimationComplete(ActivityManagerService.java:5330)
E AndroidRuntime: 	at com.android.server.wm.WindowManagerService.performEnableScreen(WindowManagerService.java:3970)
E AndroidRuntime: 	at com.android.server.wm.WindowManagerService.-$$Nest$mperformEnableScreen(WindowManagerService.java:0)
E AndroidRuntime: 	at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:5885)
E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:109)
E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:232)
E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:317)
E AndroidRuntime: 	at android.os.HandlerThread.run(HandlerThread.java:85)
E AndroidRuntime: 	at com.android.server.ServiceThread.run(ServiceThread.java:49)
E AndroidRuntime: Caused by: java.lang.RuntimeException: Unsupported operation
E AndroidRuntime: 	at org.lineageos.platform.internal.health.ccprovider.ChargingControlProvider.onBatteryChanged(ChargingControlProvider.java:107)
E AndroidRuntime: 	at org.lineageos.platform.internal.health.ccprovider.ChargingControlProvider.update(ChargingControlProvider.java:40)
E AndroidRuntime: 	at org.lineageos.platform.internal.health.ChargingControlController.updateChargeControl(ChargingControlController.java:412)
E AndroidRuntime: 	at org.lineageos.platform.internal.health.ChargingControlController.handleSettingChange(ChargingControlController.java:447)
E AndroidRuntime: 	at org.lineageos.platform.internal.health.ChargingControlController.onStart(ChargingControlController.java:265)
E AndroidRuntime: 	at org.lineageos.platform.internal.LineageBaseFeature.start(LineageBaseFeature.java:39)
E AndroidRuntime: 	at org.lineageos.platform.internal.health.HealthInterfaceService.onBootPhase(HealthInterfaceService.java:86)
E AndroidRuntime: 	at com.android.server.SystemServiceManager.startBootPhase(SystemServiceManager.java:318)
E AndroidRuntime: 	... 10 more
E Zygote  : System zygote died with fatal exception

Change-Id: Id177ec9fe814b4cf33d2853e7674463c5fd5b7ca
diff --git a/src/org/omnirom/omnilib/internal/health/ChargingControlController.java b/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
index e5f0735..359ff14 100644
--- a/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
+++ b/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
@@ -107,14 +107,18 @@
         mDeadline = new Deadline(mChargingControl, mContext);
         mLimit = new Limit(mChargingControl, mContext);
         mToggle = new Toggle(mChargingControl, mContext);
-        if (mLimit.isSupported()) {
-            mCurrentProvider = mLimit;
-        } else if (mToggle.isSupported()) {
-            mCurrentProvider = mToggle;
-        } else if (mDeadline.isSupported()) {
-            mCurrentProvider = mDeadline;
-        } else {
-            Log.wtf(TAG, "No charging control provider is supported");
+
+        mCurrentProvider = getProviderForMode(getMode());
+        if (mCurrentProvider == null) {
+            if (mLimit.isSupported()) {
+                mCurrentProvider = mLimit;
+            } else if (mToggle.isSupported()) {
+                mCurrentProvider = mToggle;
+            } else if (mDeadline.isSupported()) {
+                mCurrentProvider = mDeadline;
+            } else {
+                Log.wtf(TAG, "No charging control provider is supported");
+            }
         }
     }
 
@@ -144,18 +148,7 @@
             return false;
         }
 
-        mCurrentProvider = null;
-        if (mode == MODE_LIMIT) {
-            if (mLimit.isSupported()) {
-                mCurrentProvider = mLimit;
-            } else if (mToggle.isSupported()) {
-                mCurrentProvider = mToggle;
-            }
-        } else if (mode == MODE_AUTO || mode == MODE_MANUAL) {
-            if (mDeadline.isSupported()) {
-                mCurrentProvider = mDeadline;
-            }
-        }
+        mCurrentProvider = getProviderForMode(mode);
 
         if (mCurrentProvider == null) {
             return false;
@@ -165,6 +158,27 @@
         return true;
     }
 
+    ChargingControlProvider getProviderForMode(int mode) {
+        if (mode < MODE_NONE || mode > MODE_LIMIT) {
+            return null;
+        }
+
+        if (mode == MODE_LIMIT) {
+            if (mLimit.isSupported()) {
+                return mLimit;
+            }
+            if (mToggle.isSupported()) {
+                return mToggle;
+            }
+        } else if (mode == MODE_AUTO || mode == MODE_MANUAL) {
+            if (mDeadline.isSupported()) {
+                return mDeadline;
+            }
+        }
+
+        return null;
+    }
+
     public int getStartTime() {
         return Settings.System.getInt(mContentResolver,
                 OmniSettings.OMNI_CHARGING_CONTROL_START_TIME,