Merge "Import translations. DO NOT MERGE ANYWHERE" into udc-dev
diff --git a/res/values-bn/arrays.xml b/res/values-bn/arrays.xml
index ead6ea6..d977a18 100644
--- a/res/values-bn/arrays.xml
+++ b/res/values-bn/arrays.xml
@@ -121,7 +121,7 @@
   <string-array name="wifi_proxy_settings">
     <item msgid="4669222334822978847">"কোনও কিছুই নয়"</item>
     <item msgid="6242198071587397280">"ম্যানুয়াল"</item>
-    <item msgid="464383874780058242">"প্রক্সি স্বতঃ-কনফিগারেশন"</item>
+    <item msgid="464383874780058242">"প্রক্সি অটো-কনফিগারেশন"</item>
   </string-array>
   <string-array name="apn_auth_entries">
     <item msgid="2900892411844440682">"কোনো কিছুই নয়"</item>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index f3f3e13..2884bf0 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -121,7 +121,7 @@
   <string-array name="wifi_proxy_settings">
     <item msgid="4669222334822978847">"Κανένας"</item>
     <item msgid="6242198071587397280">"Μη αυτόματος"</item>
-    <item msgid="464383874780058242">"Αυτ. διαμ.διακομ.μεσολ."</item>
+    <item msgid="464383874780058242">"Αυτόματη διαμόρφωση"</item>
   </string-array>
   <string-array name="apn_auth_entries">
     <item msgid="2900892411844440682">"Κανένας"</item>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
index 787630e..5651324 100644
--- a/res/values-hu/arrays.xml
+++ b/res/values-hu/arrays.xml
@@ -404,7 +404,7 @@
     <item msgid="2047166446768045816">"Kezelje nem forgalomkorlátosként"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
-    <item msgid="3485945604919292489">"Véletlenszerű MAC-cím használata (alapértelmezett)"</item>
+    <item msgid="3485945604919292489">"Véletlenszerű MAC-cím (alapért.)"</item>
     <item msgid="741680937828608749">"Az eszköz MAC-címének használata"</item>
   </string-array>
   <string-array name="wifi_hidden_entries">
diff --git a/res/values-km/arrays.xml b/res/values-km/arrays.xml
index 5923c84..e460e2f 100644
--- a/res/values-km/arrays.xml
+++ b/res/values-km/arrays.xml
@@ -120,7 +120,7 @@
   </string-array>
   <string-array name="wifi_proxy_settings">
     <item msgid="4669222334822978847">"គ្មាន"</item>
-    <item msgid="6242198071587397280">"ដោយ​ដៃ"</item>
+    <item msgid="6242198071587397280">"ដោយផ្ទាល់​ដៃ"</item>
     <item msgid="464383874780058242">"រចនាសម្ព័ន្ធប្រូកស៊ីស្វ័យប្រវត្តិ"</item>
   </string-array>
   <string-array name="apn_auth_entries">
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index cf1f77d..e8bd555 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -400,7 +400,7 @@
   </string-array>
   <string-array name="wifi_metered_entries">
     <item msgid="3237321077949659241">"자동 감지"</item>
-    <item msgid="3779092145391320375">"종량제 Wi-Fi로 취급"</item>
+    <item msgid="3779092145391320375">"제한이 있는 Wi-Fi로 취급"</item>
     <item msgid="2047166446768045816">"무제한 Wi-Fi로 취급"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index 7315f49..9c66346 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -404,7 +404,7 @@
     <item msgid="2047166446768045816">"Laikyti nematuojamu"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
-    <item msgid="3485945604919292489">"Naudoti atsitiktine tvarka parinktą MAC (numatyta)"</item>
+    <item msgid="3485945604919292489">"Atsitiktinai parinktas MAC (numatyta)"</item>
     <item msgid="741680937828608749">"Naudoti įrenginio MAC"</item>
   </string-array>
   <string-array name="wifi_hidden_entries">
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 0086582..a51b5c4 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -404,7 +404,7 @@
     <item msgid="2047166446768045816">"Traktuj jako sieć bez pomiaru użycia danych"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
-    <item msgid="3485945604919292489">"Używaj randomizowanego adresu MAC (domyślnie)"</item>
+    <item msgid="3485945604919292489">"Randomizowany MAC (domyślnie)"</item>
     <item msgid="741680937828608749">"Używaj adresu MAC urządzenia"</item>
   </string-array>
   <string-array name="wifi_hidden_entries">
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index 62384de..02b5f3d 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -119,7 +119,7 @@
     <item msgid="6215795691318745695">"Static"</item>
   </string-array>
   <string-array name="wifi_proxy_settings">
-    <item msgid="4669222334822978847">"Niciuna"</item>
+    <item msgid="4669222334822978847">"Fără"</item>
     <item msgid="6242198071587397280">"Manual"</item>
     <item msgid="464383874780058242">"Configurare automată proxy"</item>
   </string-array>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
index ab20e55..b867c38 100644
--- a/res/values-sk/arrays.xml
+++ b/res/values-sk/arrays.xml
@@ -404,7 +404,7 @@
     <item msgid="2047166446768045816">"Považovať za nemeranú sieť"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
-    <item msgid="3485945604919292489">"Používať náhodnú adresu MAC (predvolené)"</item>
+    <item msgid="3485945604919292489">"Náhodná adresa MAC (predvol.)"</item>
     <item msgid="741680937828608749">"Používať adresu MAC zariadenia"</item>
   </string-array>
   <string-array name="wifi_hidden_entries">
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index 8ecdc84..dd07c77 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -404,7 +404,7 @@
     <item msgid="2047166446768045816">"ถือว่าไม่มีการจำกัดปริมาณอินเทอร์เน็ต"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
-    <item msgid="3485945604919292489">"ใช้ MAC แบบสุ่ม (ค่าเริ่มต้น)"</item>
+    <item msgid="3485945604919292489">"ใช้ที่อยู่ MAC แบบสุ่ม (ค่าเริ่มต้น)"</item>
     <item msgid="741680937828608749">"ใช้ที่อยู่ MAC ของอุปกรณ์"</item>
   </string-array>
   <string-array name="wifi_hidden_entries">
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
index 1d45c51..c43bde6 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java
@@ -66,6 +66,7 @@
 import android.util.EventLog;
 import android.util.Log;
 import android.view.Display;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -155,12 +156,12 @@
 
         mHandler = new Handler(getMainLooper());
 
-        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
-        mAppOps = (AppOpsManager)getSystemService(Context.APP_OPS_SERVICE);
+        mDPM = getSystemService(DevicePolicyManager.class);
+        mAppOps = getSystemService(AppOpsManager.class);
         mLayoutInflaternflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         PackageManager packageManager = getPackageManager();
 
-        if ((getIntent().getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
+        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
             Log.w(TAG, "Cannot start ADD_DEVICE_ADMIN as a new task");
             finish();
             return;
@@ -170,7 +171,7 @@
                 EXTRA_CALLED_FROM_SUPPORT_DIALOG, false);
 
         String action = getIntent().getAction();
-        ComponentName who = (ComponentName)getIntent().getParcelableExtra(
+        ComponentName who = (ComponentName) getIntent().getParcelableExtra(
                 DevicePolicyManager.EXTRA_DEVICE_ADMIN);
         if (who == null) {
             String packageName = getIntent().getStringExtra(EXTRA_DEVICE_ADMIN_PACKAGE_NAME);
@@ -226,7 +227,7 @@
                     PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS);
             int count = avail == null ? 0 : avail.size();
             boolean found = false;
-            for (int i=0; i<count; i++) {
+            for (int i = 0; i < count; i++) {
                 ResolveInfo ri = avail.get(i);
                 if (ai.packageName.equals(ri.activityInfo.packageName)
                         && ai.name.equals(ri.activityInfo.name)) {
@@ -345,21 +346,21 @@
             mAdminWarning.setText(
                     mDPM.getResources().getString(NEW_DEVICE_ADMIN_WARNING_SIMPLIFIED, () ->
                             getString(R.string.device_admin_warning_simplified,
-                            profileOwnerName), profileOwnerName));
+                                    profileOwnerName), profileOwnerName));
             return;
         }
         setContentView(R.layout.device_admin_add);
 
-        mAdminIcon = (ImageView)findViewById(R.id.admin_icon);
-        mAdminName = (TextView)findViewById(R.id.admin_name);
-        mAdminDescription = (TextView)findViewById(R.id.admin_description);
+        mAdminIcon = (ImageView) findViewById(R.id.admin_icon);
+        mAdminName = (TextView) findViewById(R.id.admin_name);
+        mAdminDescription = (TextView) findViewById(R.id.admin_description);
         mProfileOwnerWarning = (TextView) findViewById(R.id.profile_owner_warning);
 
         mProfileOwnerWarning.setText(
                 mDPM.getResources().getString(SET_PROFILE_OWNER_POSTSETUP_WARNING,
                         () -> getString(R.string.adding_profile_owner_warning)));
 
-        mAddMsg = (TextView)findViewById(R.id.add_msg);
+        mAddMsg = (TextView) findViewById(R.id.add_msg);
         mAddMsgExpander = (ImageView) findViewById(R.id.add_msg_expander);
         final View.OnClickListener onClickListener = new View.OnClickListener() {
             @Override
@@ -380,7 +381,7 @@
                         boolean hideMsgExpander = mAddMsg.getLineCount() <= maxLines;
                         mAddMsgExpander.setVisibility(hideMsgExpander ? View.GONE : View.VISIBLE);
                         if (hideMsgExpander) {
-                            ((View)mAddMsgExpander.getParent()).invalidate();
+                            ((View) mAddMsgExpander.getParent()).invalidate();
                         }
                         mAddMsg.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                     }
@@ -398,7 +399,7 @@
         mCancelButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_DECLINED_BY_USER,
-                    mDeviceAdmin.getActivityInfo().applicationInfo.uid);
+                        mDeviceAdmin.getActivityInfo().applicationInfo.uid);
                 finish();
             }
         });
@@ -420,58 +421,64 @@
 
         final View restrictedAction = findViewById(R.id.restricted_action);
         restrictedAction.setFilterTouchesWhenObscured(true);
-        restrictedAction.setOnClickListener(new View.OnClickListener() {
-            public void onClick(View v) {
-                if (!mActionButton.isEnabled()) {
-                    showPolicyTransparencyDialogIfRequired();
-                    return;
-                }
-                if (mAdding) {
-                    addAndFinish();
-                } else if (isManagedProfile(mDeviceAdmin)
-                        && mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) {
-                    final int userId = UserHandle.myUserId();
-                    UserDialogs.createRemoveDialog(DeviceAdminAdd.this, userId,
-                            new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int which) {
-                                    UserManager um = UserManager.get(DeviceAdminAdd.this);
-                                    um.removeUser(userId);
-                                    finish();
-                                }
-                            }
-                    ).show();
-                } else if (mUninstalling) {
-                    mDPM.uninstallPackageWithActiveAdmins(mDeviceAdmin.getPackageName());
-                    finish();
-                } else if (!mWaitingForRemoveMsg) {
-                    try {
-                        // Don't allow the admin to put a dialog up in front
-                        // of us while we interact with the user.
-                        ActivityManager.getService().stopAppSwitches();
-                    } catch (RemoteException e) {
-                    }
-                    mWaitingForRemoveMsg = true;
-                    mDPM.getRemoveWarning(mDeviceAdmin.getComponent(),
-                            new RemoteCallback(new RemoteCallback.OnResultListener() {
-                                @Override
-                                public void onResult(Bundle result) {
-                                    CharSequence msg = result != null
-                                            ? result.getCharSequence(
-                                            DeviceAdminReceiver.EXTRA_DISABLE_WARNING)
-                                            : null;
-                                    continueRemoveAction(msg);
-                                }
-                            }, mHandler));
-                    // Don't want to wait too long.
-                    getWindow().getDecorView().getHandler().postDelayed(new Runnable() {
-                        @Override public void run() {
-                            continueRemoveAction(null);
-                        }
-                    }, 2*1000);
-                }
+
+        final View.OnClickListener restrictedActionClickListener = v -> {
+            if (!mActionButton.isEnabled()) {
+                showPolicyTransparencyDialogIfRequired();
+                return;
             }
+            if (mAdding) {
+                addAndFinish();
+            } else if (isManagedProfile(mDeviceAdmin)
+                    && mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) {
+                final int userId = UserHandle.myUserId();
+                UserDialogs.createRemoveDialog(DeviceAdminAdd.this, userId,
+                        new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                UserManager um = UserManager.get(DeviceAdminAdd.this);
+                                um.removeUser(userId);
+                                finish();
+                            }
+                        }
+                ).show();
+            } else if (mUninstalling) {
+                mDPM.uninstallPackageWithActiveAdmins(mDeviceAdmin.getPackageName());
+                finish();
+            } else if (!mWaitingForRemoveMsg) {
+                try {
+                    // Don't allow the admin to put a dialog up in front
+                    // of us while we interact with the user.
+                    ActivityManager.getService().stopAppSwitches();
+                } catch (RemoteException e) {
+                }
+                mWaitingForRemoveMsg = true;
+                mDPM.getRemoveWarning(mDeviceAdmin.getComponent(),
+                        new RemoteCallback(new RemoteCallback.OnResultListener() {
+                            @Override
+                            public void onResult(Bundle result) {
+                                CharSequence msg = result != null
+                                        ? result.getCharSequence(
+                                        DeviceAdminReceiver.EXTRA_DISABLE_WARNING)
+                                        : null;
+                                continueRemoveAction(msg);
+                            }
+                        }, mHandler));
+                // Don't want to wait too long.
+                getWindow().getDecorView().getHandler().postDelayed(
+                        () -> continueRemoveAction(null), 2 * 1000);
+            }
+        };
+        restrictedAction.setOnKeyListener((view, keyCode, keyEvent) -> {
+            if ((keyEvent.getFlags() & KeyEvent.FLAG_FROM_SYSTEM) == 0) {
+                Log.e(TAG, "Can not activate device-admin with KeyEvent from non-system app.");
+                // Consume event to suppress click.
+                return true;
+            }
+            // Fallback to view click handler.
+            return false;
         });
+        restrictedAction.setOnClickListener(restrictedActionClickListener);
     }
 
     /**
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
index b3e190f..7f86b7c 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
@@ -172,7 +172,6 @@
                     mName = mDefaultPackageName;
                 }
             }
-            getQuickNameIconForUid(uid, packages, loadDataInBackground);
             mTimeInForegroundMs =
                     uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND);
             mTimeInBackgroundMs =