am 1bc14ed9: am 76b76666: Merge "Need to explicitly disable scan-always when turning off wifi" into jb-mr2-dev

* commit '1bc14ed9c3bb0fae28c2cdf9319b2f5f892409eb':
  Need to explicitly disable scan-always when turning off wifi
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 0b85e70..3f04470 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -20,6 +20,7 @@
 import android.app.backup.BackupDataInput;
 import android.app.backup.BackupDataOutput;
 import android.app.backup.FullBackupDataOutput;
+import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
@@ -330,7 +331,16 @@
                 if (DEBUG_BACKUP) {
                     Log.v(TAG, "Starting deferred restore of wifi data");
                 }
+                final ContentResolver cr = getContentResolver();
+                final int scanAlways = Settings.Global.getInt(cr,
+                        Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
                 final int retainedWifiState = enableWifi(false);
+                if (scanAlways != 0) {
+                    Settings.Global.putInt(cr,
+                            Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+                    // !!! Give the wifi stack a moment to quiesce
+                    try { Thread.sleep(1000); } catch (InterruptedException e) {}
+                }
                 if (restoredSupplicantData != null) {
                     restoreWifiSupplicant(FILE_WIFI_SUPPLICANT,
                             restoredSupplicantData, restoredSupplicantData.length);
@@ -344,6 +354,10 @@
                             restoredWifiConfigFile, restoredWifiConfigFile.length);
                 }
                 // restore the previous WIFI state.
+                if (scanAlways != 0) {
+                    Settings.Global.putInt(cr,
+                            Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, scanAlways);
+                }
                 enableWifi(retainedWifiState == WifiManager.WIFI_STATE_ENABLED ||
                         retainedWifiState == WifiManager.WIFI_STATE_ENABLING);
             }