summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRebecca Silberstein <silberst@google.com>2017-04-04 22:16:08 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-04-04 22:16:09 +0000
commit9b5f1c811bbd6bffcf4367948cf87ecc9faac3bd (patch)
treea7c0f1558b0ba9fc06f261ca404a5bd88ed8cd40 /service
parentb8fe1431cebacad2acfe1f878e5226b1e07e50bd (diff)
parentef0b931720a26a0aa59e2aa6cf4dcab765c5de75 (diff)
Merge "WifiServiceImpl: check device encryption at boot"
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 757be2dac..03a88bc4e 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"));