Merge "Import translations. DO NOT MERGE ANYWHERE" into sc-v2-dev
diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
index ce7ad24..c4bef25 100644
--- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
+++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
@@ -58,11 +58,25 @@
             return admin;
         }
         admin.component = intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+        int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+
+        Bundle adminDetails = null;
+        if (admin.component == null) {
+            DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+            adminDetails = devicePolicyManager.getEnforcingAdminAndUserDetails(userId,
+                    getRestrictionFromIntent(intent));
+            if (adminDetails != null) {
+                admin.component = adminDetails.getParcelable(
+                        DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+            }
+        }
 
         if (intent.hasExtra(Intent.EXTRA_USER)) {
             admin.user = intent.getParcelableExtra(Intent.EXTRA_USER);
         } else {
-            int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+            if (adminDetails != null) {
+                userId = adminDetails.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+            }
             if (userId == UserHandle.USER_NULL) {
                 admin.user = null;
             } else {
diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
index 2eb7cf4..0947938 100644
--- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
@@ -30,6 +30,7 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.utils.ThreadUtils;
 
 import java.util.HashMap;
 
@@ -38,8 +39,9 @@
 
     @VisibleForTesting
     protected boolean mIsBatteryPresent = true;
+    @VisibleForTesting
+    Preference mPreference;
     private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
-    private Preference mPreference;
     private BatteryInfo mBatteryInfo;
     private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
     private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
@@ -140,14 +142,26 @@
         }
 
         if (batteryStatusUpdate) {
-            if (!mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info)) {
-                mBatteryStatusLabel = null; // will generateLabel()
-            }
+            setSummaryAsync(info);
         }
 
         return (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel;
     }
 
+    private void setSummaryAsync(BatteryInfo info) {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            final boolean triggerBatteryStatusUpdate =
+                    mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info);
+            ThreadUtils.postOnMainThread(() -> {
+                if (!triggerBatteryStatusUpdate) {
+                    mBatteryStatusLabel = null; // will generateLabel()
+                }
+                mPreference.setSummary(
+                        (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel);
+            });
+        });
+    }
+
     private CharSequence generateLabel(BatteryInfo info) {
         if (!info.discharging && info.chargeLabel != null) {
             return info.chargeLabel;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
index 3201d82..eef6988 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
@@ -156,6 +156,7 @@
 
     @Test
     public void getDashboardLabel_returnsCorrectLabel() {
+        mController.mPreference = new Preference(mContext);
         BatteryInfo info = new BatteryInfo();
         info.batteryPercentString = "3%";
         assertThat(mController.getDashboardLabel(mContext, info, true))