am 9a53339d: (-s ours) am e211fd11: (-s ours) Import translations. DO NOT MERGE

* commit '9a53339dd6ea5c683629a5fff8837e7e59581680':
  Import translations. DO NOT MERGE
diff --git a/Android.mk b/Android.mk
index c8b81dc..0663e85 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,7 +1,7 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_JAVA_LIBRARIES := bouncycastle telephony-common
+LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt telephony-common
 LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr305
 
 LOCAL_MODULE_TAGS := optional
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 67aa7ee..b489a89 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -262,7 +262,8 @@
         <activity android:name="ApnSettings"
                 android:label="@string/apn_settings"
                 android:configChanges="orientation|keyboardHidden|screenSize"
-                android:launchMode="singleTask">
+                android:launchMode="singleTask"
+                android:parentActivityName="Settings$WirelessSettingsActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APN_SETTINGS" />
@@ -794,6 +795,7 @@
                 android:value="com.android.settings.NotificationStation" />
         </activity>
 
+        <!--
         <activity android:name="Settings$AppOpsSummaryActivity"
                 android:label="@string/app_ops_settings"
                 android:taskAffinity=""
@@ -802,17 +804,15 @@
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APP_OPS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <!-- Not yet ready to expose.
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
-                -->
             </intent-filter>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                 android:value="com.android.settings.applications.AppOpsSummary" />
-            <!--
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
-                android:resource="@id/application_settings" /> -->
+                android:resource="@id/application_settings" />
         </activity>
+        -->
         
         <activity android:name="Settings$LocationSettingsActivity"
                 android:label="@string/location_settings_title"
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index eb94a69..021ef10 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1561,7 +1561,7 @@
     <string name="add_device_admin_msg" msgid="6246742476064507965">"Geräteadministrator aktivieren?"</string>
     <string name="add_device_admin" msgid="7133327675884827091">"Aktivieren"</string>
     <string name="device_admin_add_title" msgid="7705551449705676363">"Geräteadministrator"</string>
-    <string name="device_admin_warning" msgid="2026747446313628233">"Die Aktivierung dieses Administrators ermöglicht der App \"<xliff:g id="APP_NAME">%1$s</xliff:g>\", folgende Vorgänge auszuführen:"</string>
+    <string name="device_admin_warning" msgid="2026747446313628233">"Die Aktivierung dieses Administrators ermöglicht der App <xliff:g id="APP_NAME">%1$s</xliff:g>, folgende Vorgänge auszuführen:"</string>
     <string name="device_admin_status" msgid="4252975713178851910">"Dieser Administrator ist aktiv und ermöglicht der App <xliff:g id="APP_NAME">%1$s</xliff:g>, folgende Vorgänge auszuführen:"</string>
     <string name="untitled_apn" msgid="1230060359198685513">"Unbenannt"</string>
     <string name="sound_category_sound_title" msgid="1488759370067953996">"Allgemein"</string>
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index ab87527..6c6553b 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -39,6 +39,7 @@
 import android.widget.DatePicker;
 import android.widget.TimePicker;
 
+import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.TimeZone;
@@ -233,44 +234,38 @@
 
     @Override
     public Dialog onCreateDialog(int id) {
-        Dialog d;
-
+        final Calendar calendar = Calendar.getInstance();
         switch (id) {
-        case DIALOG_DATEPICKER: {
-            final Calendar calendar = Calendar.getInstance();
-            d = new DatePickerDialog(
-                getActivity(),
-                this,
-                calendar.get(Calendar.YEAR),
-                calendar.get(Calendar.MONTH),
-                calendar.get(Calendar.DAY_OF_MONTH));
-            // The system clock can't represent dates outside this range.
-            DatePickerDialog datePicker = (DatePickerDialog)d;
-            Calendar t = Calendar.getInstance();
-            t.clear();
-            t.set(1970, Calendar.JANUARY, 1);
-            datePicker.getDatePicker().setMinDate(t.getTimeInMillis());
-            t.clear();
-            t.set(2037, Calendar.DECEMBER, 31);
-            datePicker.getDatePicker().setMaxDate(t.getTimeInMillis());
-            break;
-        }
-        case DIALOG_TIMEPICKER: {
-            final Calendar calendar = Calendar.getInstance();
-            d = new TimePickerDialog(
+        case DIALOG_DATEPICKER:
+            DatePickerDialog d = new DatePickerDialog(
+                    getActivity(),
+                    this,
+                    calendar.get(Calendar.YEAR),
+                    calendar.get(Calendar.MONTH),
+                    calendar.get(Calendar.DAY_OF_MONTH));
+            configureDatePicker(d.getDatePicker());
+            return d;
+        case DIALOG_TIMEPICKER:
+            return new TimePickerDialog(
                     getActivity(),
                     this,
                     calendar.get(Calendar.HOUR_OF_DAY),
                     calendar.get(Calendar.MINUTE),
                     DateFormat.is24HourFormat(getActivity()));
-            break;
-        }
         default:
-            d = null;
-            break;
+            throw new IllegalArgumentException();
         }
+    }
 
-        return d;
+    static void configureDatePicker(DatePicker datePicker) {
+        // The system clock can't represent dates outside this range.
+        Calendar t = Calendar.getInstance();
+        t.clear();
+        t.set(1970, Calendar.JANUARY, 1);
+        datePicker.setMinDate(t.getTimeInMillis());
+        t.clear();
+        t.set(2037, Calendar.DECEMBER, 31);
+        datePicker.setMaxDate(t.getTimeInMillis());
     }
 
     /*
@@ -378,40 +373,10 @@
         }
     }
 
-    /*  Helper routines to format timezone */
-
-    /* package */ static String getTimeZoneText(TimeZone tz) {
-        // Similar to new SimpleDateFormat("'GMT'Z, zzzz").format(new Date()), but
-        // we want "GMT-03:00" rather than "GMT-0300".
-        Date now = new Date();
-        return formatOffset(new StringBuilder(), tz, now).
-            append(", ").
-            append(tz.getDisplayName(tz.inDaylightTime(now), TimeZone.LONG)).toString();
-    }
-
-    private static StringBuilder formatOffset(StringBuilder sb, TimeZone tz, Date d) {
-        int off = tz.getOffset(d.getTime()) / 1000 / 60;
-
-        sb.append("GMT");
-        if (off < 0) {
-            sb.append('-');
-            off = -off;
-        } else {
-            sb.append('+');
-        }
-
-        int hours = off / 60;
-        int minutes = off % 60;
-
-        sb.append((char) ('0' + hours / 10));
-        sb.append((char) ('0' + hours % 10));
-
-        sb.append(':');
-
-        sb.append((char) ('0' + minutes / 10));
-        sb.append((char) ('0' + minutes % 10));
-
-        return sb;
+    private static String getTimeZoneText(TimeZone tz) {
+        SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ, zzzz");
+        sdf.setTimeZone(tz);
+        return sdf.format(new Date());
     }
 
     private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
diff --git a/src/com/android/settings/DateTimeSettingsSetupWizard.java b/src/com/android/settings/DateTimeSettingsSetupWizard.java
index 05e0d4e..bb2c6da 100644
--- a/src/com/android/settings/DateTimeSettingsSetupWizard.java
+++ b/src/com/android/settings/DateTimeSettingsSetupWizard.java
@@ -121,7 +121,6 @@
         mSelectedTimeZone = tz;
         mTimeZoneButton = (Button)findViewById(R.id.time_zone_button);
         mTimeZoneButton.setText(tz.getDisplayName());
-        // mTimeZoneButton.setText(DateTimeSettings.getTimeZoneText(tz));
         mTimeZoneButton.setOnClickListener(this);
 
         final boolean autoDateTimeEnabled;
@@ -141,6 +140,7 @@
         mDatePicker = (DatePicker)findViewById(R.id.date_picker);
         mDatePicker.setEnabled(!autoDateTimeEnabled);
         mDatePicker.setCalendarViewShown(false);
+        DateTimeSettings.configureDatePicker(mDatePicker);
 
         mInputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 
@@ -244,7 +244,6 @@
             if (mTimeZoneButton != null) {
                 mTimeZoneButton.setText(tz.getDisplayName());
             }
-            // mTimeZoneButton.setText(DateTimeSettings.getTimeZoneText(tz));
             mDatePicker.updateDate(now.get(Calendar.YEAR), now.get(Calendar.MONTH),
                     now.get(Calendar.DAY_OF_MONTH));
             mTimePicker.setCurrentHour(now.get(Calendar.HOUR_OF_DAY));
diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java
index 687663a..cdfe7cd 100644
--- a/src/com/android/settings/TrustedCredentialsSettings.java
+++ b/src/com/android/settings/TrustedCredentialsSettings.java
@@ -45,7 +45,8 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
-import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore;
+
+import com.android.org.conscrypt.TrustedCertificateStore;
 
 public class TrustedCredentialsSettings extends Fragment {
 
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 64c4d4a..c14dbbe 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -115,7 +115,8 @@
                                 } catch (AuthenticatorException e) {
                                     // handled below
                                 }
-                                if (failed) {
+                                if (failed && getActivity() != null &&
+                                        !getActivity().isFinishing()) {
                                     showDialog(FAILED_REMOVAL_DIALOG);
                                 } else {
                                     finish();
diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java
index 6cdbdaf..39eefe2 100644
--- a/src/com/android/settings/applications/AppOpsState.java
+++ b/src/com/android/settings/applications/AppOpsState.java
@@ -525,7 +525,7 @@
                                 & PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0) {
                             if (DEBUG) Log.d(TAG, "Pkg " + appInfo.packageName + " perm "
                                     + appInfo.requestedPermissions[j] + " not granted; skipping");
-                            break;
+                            continue;
                         }
                     }
                     if (DEBUG) Log.d(TAG, "Pkg " + appInfo.packageName + ": requested perm "
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 587197b..90aef86 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -50,10 +50,10 @@
 import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
 import android.widget.EditText;
 import android.widget.Spinner;
 import android.widget.TextView;
-import android.widget.CompoundButton.OnCheckedChangeListener;
 
 import com.android.settings.ProxySelector;
 import com.android.settings.R;
@@ -66,7 +66,7 @@
  * share the logic for controlling buttons, text fields, etc.
  */
 public class WifiConfigController implements TextWatcher,
-        View.OnClickListener, AdapterView.OnItemSelectedListener {
+       AdapterView.OnItemSelectedListener, OnCheckedChangeListener {
     private final WifiConfigUiBase mConfigUi;
     private final View mView;
     private final AccessPoint mAccessPoint;
@@ -78,7 +78,6 @@
     // e.g. AccessPoint.SECURITY_NONE
     private int mAccessPointSecurity;
     private TextView mPasswordView;
-    private CheckBox mShowPassword;
 
     private String unspecifiedCert = "unspecified";
     private static final int unspecifiedCertIndex = 0;
@@ -194,7 +193,9 @@
             showIpConfigFields();
             showProxyFields();
             mView.findViewById(R.id.wifi_advanced_toggle).setVisibility(View.VISIBLE);
-            mView.findViewById(R.id.wifi_advanced_togglebox).setOnClickListener(this);
+            ((CheckBox)mView.findViewById(R.id.wifi_advanced_togglebox))
+                    .setOnCheckedChangeListener(this);
+
 
             mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
         } else {
@@ -248,9 +249,10 @@
                 showIpConfigFields();
                 showProxyFields();
                 mView.findViewById(R.id.wifi_advanced_toggle).setVisibility(View.VISIBLE);
-                mView.findViewById(R.id.wifi_advanced_togglebox).setOnClickListener(this);
+                ((CheckBox)mView.findViewById(R.id.wifi_advanced_togglebox))
+                    .setOnCheckedChangeListener(this);
                 if (showAdvancedFields) {
-                    ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox)).setChecked(true);
+                    ((CheckBox)mView.findViewById(R.id.wifi_advanced_togglebox)).setChecked(true);
                     mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.VISIBLE);
                 }
             }
@@ -558,13 +560,9 @@
         if (mPasswordView == null) {
             mPasswordView = (TextView) mView.findViewById(R.id.password);
             mPasswordView.addTextChangedListener(this);
-            mShowPassword = (CheckBox) mView.findViewById(R.id.show_password);
-            mShowPassword.setOnClickListener(this);
-            mShowPassword.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-                    updatePasswordVisibility(isChecked);
-                }
-            });
+            ((CheckBox) mView.findViewById(R.id.show_password))
+                .setOnCheckedChangeListener(this);
+
             if (mAccessPoint != null && mAccessPoint.networkId != INVALID_NETWORK_ID) {
                 mPasswordView.setHint(R.string.wifi_unchanged);
             }
@@ -872,11 +870,18 @@
     }
 
     @Override
-    public void onClick(View view) {
+    public void onCheckedChanged(CompoundButton view, boolean isChecked) {
         if (view.getId() == R.id.show_password) {
-            updatePasswordVisibility(((CheckBox) view).isChecked());
+            int pos = mPasswordView.getSelectionEnd();
+            mPasswordView.setInputType(
+                    InputType.TYPE_CLASS_TEXT | (isChecked ?
+                            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD :
+                                InputType.TYPE_TEXT_VARIATION_PASSWORD));
+            if (pos >= 0) {
+                ((EditText)mPasswordView).setSelection(pos);
+            }
         } else if (view.getId() == R.id.wifi_advanced_togglebox) {
-            if (((CheckBox) view).isChecked()) {
+            if (isChecked) {
                 mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.VISIBLE);
             } else {
                 mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.GONE);
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 846c324..7ce3b8d 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -110,6 +110,7 @@
             Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
             // Reset switch to off. No infinite check/listenenr loop.
             buttonView.setChecked(false);
+            return;
         }
 
         // Disable tethering if enabling Wifi
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index cb35e10..24f56c1 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -646,6 +646,8 @@
                         ap = new AccessPoint(getActivity(), mAccessPointSavedState);
                         // For repeated orientation changes
                         mDlgAccessPoint = ap;
+                        // Reset the saved access point data
+                        mAccessPointSavedState = null;
                     }
                 }
                 // If it's still null, fine, it's for Add Network