Merge "Clear static icon and label cache if ui mode is changed" into sc-dev
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -39,6 +40,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
|
|||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnCreate;
|
import com.android.settingslib.core.lifecycle.events.OnCreate;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
|
|
||||||
@@ -53,7 +55,7 @@ import java.util.Map;
|
|||||||
/** Controls the update for chart graph and the list items. */
|
/** Controls the update for chart graph and the list items. */
|
||||||
public class BatteryChartPreferenceController extends AbstractPreferenceController
|
public class BatteryChartPreferenceController extends AbstractPreferenceController
|
||||||
implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnDestroy,
|
implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnDestroy,
|
||||||
OnSaveInstanceState, BatteryChartView.OnSelectListener,
|
OnSaveInstanceState, BatteryChartView.OnSelectListener, OnResume,
|
||||||
ExpandDividerPreference.OnExpandListener {
|
ExpandDividerPreference.OnExpandListener {
|
||||||
private static final String TAG = "BatteryChartPreferenceController";
|
private static final String TAG = "BatteryChartPreferenceController";
|
||||||
/** Desired battery history size for timestamp slots. */
|
/** Desired battery history size for timestamp slots. */
|
||||||
@@ -67,6 +69,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
private static final String KEY_EXPAND_SYSTEM_INFO = "expand_system_info";
|
private static final String KEY_EXPAND_SYSTEM_INFO = "expand_system_info";
|
||||||
private static final String KEY_CURRENT_TIME_SLOT = "current_time_slot";
|
private static final String KEY_CURRENT_TIME_SLOT = "current_time_slot";
|
||||||
|
|
||||||
|
private static int sUiMode = Configuration.UI_MODE_NIGHT_UNDEFINED;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Map<Integer, List<BatteryDiffEntry>> mBatteryIndexedMap;
|
Map<Integer, List<BatteryDiffEntry>> mBatteryIndexedMap;
|
||||||
|
|
||||||
@@ -124,6 +128,18 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
mTrapezoidIndex, mIsExpanded));
|
mTrapezoidIndex, mIsExpanded));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
final int currentUiMode =
|
||||||
|
mContext.getResources().getConfiguration().uiMode
|
||||||
|
& Configuration.UI_MODE_NIGHT_MASK;
|
||||||
|
if (sUiMode != currentUiMode) {
|
||||||
|
sUiMode = currentUiMode;
|
||||||
|
BatteryDiffEntry.clearCache();
|
||||||
|
Log.d(TAG, "clear icon and label cache since uiMode is changed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle savedInstance) {
|
public void onSaveInstanceState(Bundle savedInstance) {
|
||||||
if (savedInstance == null) {
|
if (savedInstance == null) {
|
||||||
|
@@ -29,6 +29,8 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
@@ -76,6 +78,8 @@ public final class BatteryChartPreferenceControllerTest {
|
|||||||
@Mock private PowerGaugePreference mPowerGaugePreference;
|
@Mock private PowerGaugePreference mPowerGaugePreference;
|
||||||
@Mock private ExpandDividerPreference mExpandDividerPreference;
|
@Mock private ExpandDividerPreference mExpandDividerPreference;
|
||||||
@Mock private BatteryUtils mBatteryUtils;
|
@Mock private BatteryUtils mBatteryUtils;
|
||||||
|
@Mock private Configuration mConfiguration;
|
||||||
|
@Mock private Resources mResources;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private BatteryDiffEntry mBatteryDiffEntry;
|
private BatteryDiffEntry mBatteryDiffEntry;
|
||||||
@@ -104,6 +108,33 @@ public final class BatteryChartPreferenceControllerTest {
|
|||||||
createBatteryHistoryMap());
|
createBatteryHistoryMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnResume_uiModeIsChanged_clearBatteryDiffEntryCache() {
|
||||||
|
doReturn(mResources).when(mContext).getResources();
|
||||||
|
doReturn(mConfiguration).when(mResources).getConfiguration();
|
||||||
|
mConfiguration.uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED;
|
||||||
|
// Ensures the testing environment is correct.
|
||||||
|
assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
|
||||||
|
mBatteryChartPreferenceController.onResume();
|
||||||
|
// Changes the uiMode in the configuration.
|
||||||
|
mConfiguration.uiMode = Configuration.UI_MODE_NIGHT_YES;
|
||||||
|
|
||||||
|
mBatteryChartPreferenceController.onResume();
|
||||||
|
assertThat(BatteryDiffEntry.sResourceCache).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnResume_uiModeIsNotChanged_notClearBatteryDiffEntryCache() {
|
||||||
|
doReturn(mResources).when(mContext).getResources();
|
||||||
|
doReturn(mConfiguration).when(mResources).getConfiguration();
|
||||||
|
mConfiguration.uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED;
|
||||||
|
// Ensures the testing environment is correct.
|
||||||
|
assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
|
||||||
|
|
||||||
|
mBatteryChartPreferenceController.onResume();
|
||||||
|
assertThat(BatteryDiffEntry.sResourceCache).isNotEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnDestroy_activityIsChanging_clearBatteryEntryCache() {
|
public void testOnDestroy_activityIsChanging_clearBatteryEntryCache() {
|
||||||
doReturn(true).when(mSettingsActivity).isChangingConfigurations();
|
doReturn(true).when(mSettingsActivity).isChangingConfigurations();
|
||||||
|
Reference in New Issue
Block a user