summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRebecca Silberstein <silberst@google.com>2017-04-04 22:25:43 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-04-04 22:25:43 +0000
commit7b8a36d10b5f8b855854cbf344774c1d0a12a6ab (patch)
treea6bf35b9097ee539e6eef84189a6ed7df22ede8c /service
parent87160e59e366f16e94cc8aeebe5c7eafde0bbee2 (diff)
parentae66570add8d3dd6908d32da11776f9f4046217b (diff)
Merge "WifiServiceImpl: check device encryption at boot" am: 9b5f1c811b am: 21dea68199
am: ae66570add Change-Id: Ie55b9572e7fee79727d2b878fb43101328cb3e12
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/FrameworkFacade.java10
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java17
2 files changed, 23 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/FrameworkFacade.java b/service/java/com/android/server/wifi/FrameworkFacade.java
index 42f0161e9..2c3e5f7e0 100644
--- a/service/java/com/android/server/wifi/FrameworkFacade.java
+++ b/service/java/com/android/server/wifi/FrameworkFacade.java
@@ -29,6 +29,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.storage.StorageManager;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
@@ -151,4 +152,13 @@ public class FrameworkFacade {
public WifiAsyncChannel makeWifiAsyncChannel(String tag) {
return new WifiAsyncChannel(tag);
}
+
+ /**
+ * Check if the device will be restarting after decrypting during boot by calling {@link
+ * StorageManager.inCryptKeeperBounce}.
+ * @return true if the device will restart, false otherwise
+ */
+ public boolean inStorageManagerCryptKeeperBounce() {
+ return StorageManager.inCryptKeeperBounce();
+ }
}
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index b68301010..e24f720db 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -359,14 +359,23 @@ public class WifiServiceImpl extends IWifiManager.Stub {
public void setWifiHandlerLogForTest(WifiLog log) {
mClientHandler.setWifiLog(log);
}
+
/**
- * Check if Wi-Fi needs to be enabled and start
- * if needed
+ * Check if we are ready to start wifi.
+ *
+ * First check if we will be restarting system services to decrypt the device. If the device is
+ * not encrypted, check if Wi-Fi needs to be enabled and start if needed
*
- * This function is used only at boot time
+ * This function is used only at boot time.
*/
public void checkAndStartWifi() {
- /* Check if wi-fi needs to be enabled */
+ // First check if we will end up restarting WifiService
+ if (mFrameworkFacade.inStorageManagerCryptKeeperBounce()) {
+ Log.d(TAG, "Device still encrypted. Need to restart SystemServer. Do not start wifi.");
+ return;
+ }
+
+ // Check if wi-fi needs to be enabled
boolean wifiEnabled = mSettingsStore.isWifiToggleEnabled();
Slog.i(TAG, "WifiService starting up with Wi-Fi " +
(wifiEnabled ? "enabled" : "disabled"));