Merge "Limit length of SSID input string to 32"
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 434b9fc..653ad92 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -148,7 +148,7 @@
     <string name="bluetooth_ask_enablement_and_discovery" product="default" msgid="3040361003987241057">"Eine App auf Ihrem Telefon versucht, Bluetooth zu aktivieren und Ihr Telefon für <xliff:g id="TIMEOUT">%1$d</xliff:g> Sekunden für andere Telefone sichtbar zu machen. Möchten Sie dies zulassen?"</string>
     <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet" msgid="7254712987802497615">"Eine App auf Ihrem Tablet versucht, Bluetooth zu aktivieren und Ihr Tablet für andere Geräte erkennbar zu machen. Zulassen?"</string>
     <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default" msgid="3947789545028519103">"Eine App auf Ihrem Telefon versucht, Bluetooth zu aktivieren und Ihr Telefon für andere Geräte sichtbar zu machen. Möchten Sie dies zulassen?"</string>
-    <string name="bluetooth_turning_on" msgid="4850574877288036646">"Bluetooth aktivieren?"</string>
+    <string name="bluetooth_turning_on" msgid="4850574877288036646">"Bluetooth wird aktiviert..."</string>
     <string name="bluetooth_turning_off" msgid="2337747302892025192">"Bluetooth wird deaktiviert..."</string>
     <string name="bluetooth_auto_connect" msgid="40711424456733571">"Automatische Verbindung"</string>
     <string name="bluetooth_connection_permission_request" msgid="4747918249032890077">"Bluetooth-Verbindungsanfrage"</string>
@@ -492,7 +492,7 @@
     <string name="wifi_settings_category" msgid="2810363951104753710">"WLAN-Einstellungen"</string>
     <string name="wifi_settings_title" msgid="4351120897298124250">"WLAN"</string>
     <string name="wifi_settings_summary" msgid="668767638556052820">"WLAN-Zugangspunkte festlegen und verwalten"</string>
-    <string name="wifi_starting" msgid="6716593470710880000">"WLAN aktivieren?"</string>
+    <string name="wifi_starting" msgid="6716593470710880000">"WLAN wird aktiviert..."</string>
     <string name="wifi_stopping" msgid="244864762599017659">"WLAN wird deaktiviert..."</string>
     <string name="wifi_error" msgid="3207971103917128179">"Fehler"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Im Flugmodus"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6bbc8a4..cace7e5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -859,7 +859,7 @@
     <!-- Hint shown in dialog screen when password is too short -->
     <string name="lockpassword_password_too_short">Password must be at least %d characters</string>
     <!-- Hint shown in dialog screen when PIN is too short -->
-    <string name="lockpassword_pin_too_short">PIN must be at least %d characters</string>
+    <string name="lockpassword_pin_too_short">PIN must be at least %d digits</string>
 
     <!-- Hint shown after minimum password criteria is met -->
     <string name="lockpassword_press_continue">Touch Continue when done</string>
@@ -1398,6 +1398,10 @@
     <!-- Wifi AP settings-->
     <!-- Label for wifi tether checkbox. Toggles Access Point on/off -->
     <string name="wifi_tether_checkbox_text">Portable Wi-Fi hotspot</string>
+    <!-- Summary text when turning hotspot on -->
+    <string name="wifi_tether_starting">Turning hotspot on\u2026</string>
+    <!-- Summary text when turning hotspot off -->
+    <string name="wifi_tether_stopping">Turning off hotspot\u2026</string>
     <!-- Subtext for wifi tether checkbox on success -->
     <string name="wifi_tether_enabled_subtext">Portable hotspot <xliff:g id="network_ssid">%1$s</xliff:g> active</string>
     <!-- Subtext for wifi tether checkbox on failure -->
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 82f9844..6847607 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -81,7 +81,7 @@
     private Account[] mAccounts;
     private ArrayList<SyncStateCheckBoxPreference> mCheckBoxes =
                 new ArrayList<SyncStateCheckBoxPreference>();
-    private ArrayList<String> mInvisibleAdapters = Lists.newArrayList();
+    private ArrayList<SyncAdapterType> mInvisibleAdapters = Lists.newArrayList();
 
     @Override
     public Dialog onCreateDialog(final int id) {
@@ -321,8 +321,11 @@
         }
         // plus whatever the system needs to sync, e.g., invisible sync adapters
         if (mAccount != null) {
-            for (String authority : mInvisibleAdapters) {
-                requestOrCancelSync(mAccount, authority, startSync);
+            for (SyncAdapterType syncAdapter : mInvisibleAdapters) {
+                // invisible sync adapters' account type should be same as current account type
+                if (syncAdapter.accountType.equals(mAccount.type)) {
+                    requestOrCancelSync(mAccount, syncAdapter.authority, startSync);
+                }
             }
         }
     }
@@ -449,7 +452,7 @@
             } else {
                 // keep track of invisible sync adapters, so sync now forces
                 // them to sync as well.
-                mInvisibleAdapters.add(sa.authority);
+                mInvisibleAdapters.add(sa);
             }
         }
 
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 4454389..aa2bcf4 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -172,6 +172,7 @@
     @Override
     public void onResume() {
         super.onResume();
+        mSettingsObserver.resume();
         if (!mIsOnlyImeSettings) {
             if (mLanguagePref != null) {
                 Configuration conf = getResources().getConfiguration();
@@ -207,6 +208,7 @@
     @Override
     public void onPause() {
         super.onPause();
+        mSettingsObserver.pause();
         if (SHOW_INPUT_METHOD_SWITCHER_SETTINGS) {
             mShowInputMethodSelectorPref.setOnPreferenceChangeListener(null);
         }
@@ -359,17 +361,27 @@
     }
 
     private class SettingsObserver extends ContentObserver {
+        private Context mContext;
+
         public SettingsObserver(Handler handler, Context context) {
             super(handler);
-            final ContentResolver cr = context.getContentResolver();
+            mContext = context;
+        }
+
+        @Override public void onChange(boolean selfChange) {
+            updateCurrentImeName();
+        }
+
+        public void resume() {
+            final ContentResolver cr = mContext.getContentResolver();
             cr.registerContentObserver(
                     Settings.Secure.getUriFor(Settings.Secure.DEFAULT_INPUT_METHOD), false, this);
             cr.registerContentObserver(Settings.Secure.getUriFor(
                     Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE), false, this);
         }
 
-        @Override public void onChange(boolean selfChange) {
-            updateCurrentImeName();
+        public void pause() {
+            mContext.getContentResolver().unregisterContentObserver(this);
         }
     }
 }
diff --git a/src/com/android/settings/wifi/WifiApEnabler.java b/src/com/android/settings/wifi/WifiApEnabler.java
index 92e1c92..86a7cb4 100644
--- a/src/com/android/settings/wifi/WifiApEnabler.java
+++ b/src/com/android/settings/wifi/WifiApEnabler.java
@@ -180,7 +180,7 @@
     private void handleWifiApStateChanged(int state) {
         switch (state) {
             case WifiManager.WIFI_AP_STATE_ENABLING:
-                mCheckBox.setSummary(R.string.wifi_starting);
+                mCheckBox.setSummary(R.string.wifi_tether_starting);
                 mCheckBox.setEnabled(false);
                 break;
             case WifiManager.WIFI_AP_STATE_ENABLED:
@@ -193,7 +193,7 @@
                 mCheckBox.setEnabled(true);
                 break;
             case WifiManager.WIFI_AP_STATE_DISABLING:
-                mCheckBox.setSummary(R.string.wifi_stopping);
+                mCheckBox.setSummary(R.string.wifi_tether_stopping);
                 mCheckBox.setEnabled(false);
                 break;
             case WifiManager.WIFI_AP_STATE_DISABLED: