Snap for 9227242 from f5a9766041 to tm-qpr2-release

Change-Id: I14be7c0f7fffad7913e32ef6529a0a258859ff49
This commit is contained in:
Android Build Coastguard Worker
2022-10-27 23:26:33 +00:00
5 changed files with 100 additions and 19 deletions

View File

@@ -108,6 +108,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
private boolean mIs24HourFormat; private boolean mIs24HourFormat;
private boolean mIsFooterPrefAdded = false; private boolean mIsFooterPrefAdded = false;
private boolean mHourlyChartVisible = true;
private View mBatteryChartViewGroup; private View mBatteryChartViewGroup;
private View mCategoryTitleView; private View mCategoryTitleView;
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
@@ -690,9 +691,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
} }
private void animateBatteryHourlyChartView(final boolean visible) { private void animateBatteryHourlyChartView(final boolean visible) {
if (mHourlyChartView == null) { if (mHourlyChartView == null || mHourlyChartVisible == visible) {
return; return;
} }
mHourlyChartVisible = visible;
if (visible) { if (visible) {
mHourlyChartView.setVisibility(View.VISIBLE); mHourlyChartView.setVisibility(View.VISIBLE);

View File

@@ -34,6 +34,7 @@ import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -598,10 +599,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
return; return;
} }
if (mSelectedWifiEntry.isSaved() && mSelectedWifiEntry.getConnectedState() addModifyMenuIfSuitable(menu, mSelectedWifiEntry);
!= WifiEntry.CONNECTED_STATE_CONNECTED) {
menu.add(Menu.NONE, MENU_ID_MODIFY, 0 /* order */, R.string.wifi_modify);
}
} }
@VisibleForTesting @VisibleForTesting
@@ -621,6 +619,14 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
} }
} }
@VisibleForTesting
void addModifyMenuIfSuitable(ContextMenu menu, WifiEntry wifiEntry) {
if (mIsAdmin && wifiEntry.isSaved()
&& wifiEntry.getConnectedState() != WifiEntry.CONNECTED_STATE_CONNECTED) {
menu.add(Menu.NONE, MENU_ID_MODIFY, 0 /* order */, R.string.wifi_modify);
}
}
private boolean canForgetNetwork() { private boolean canForgetNetwork() {
return mSelectedWifiEntry.canForget() && !WifiUtils.isNetworkLockedDown(getActivity(), return mSelectedWifiEntry.canForget() && !WifiUtils.isNetworkLockedDown(getActivity(),
mSelectedWifiEntry.getWifiConfiguration()); mSelectedWifiEntry.getWifiConfiguration());
@@ -643,6 +649,12 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
() -> launchWifiDppConfiguratorActivity(mSelectedWifiEntry)); () -> launchWifiDppConfiguratorActivity(mSelectedWifiEntry));
return true; return true;
case MENU_ID_MODIFY: case MENU_ID_MODIFY:
if (!mIsAdmin) {
Log.e(TAG, "Can't modify Wi-Fi because the user isn't admin.");
EventLog.writeEvent(0x534e4554, "237672190", UserHandle.myUserId(),
"User isn't admin");
return true;
}
showDialog(mSelectedWifiEntry, WifiConfigUiBase2.MODE_MODIFY); showDialog(mSelectedWifiEntry, WifiConfigUiBase2.MODE_MODIFY);
return true; return true;
default: default:

View File

@@ -18,6 +18,8 @@ package com.android.settings.fuelgauge.batteryusage;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.any; import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce;
@@ -36,6 +38,7 @@ import android.os.Bundle;
import android.os.LocaleList; import android.os.LocaleList;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.view.View; import android.view.View;
import android.view.ViewPropertyAnimator;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -85,6 +88,8 @@ public final class BatteryChartPreferenceControllerTest {
@Mock @Mock
private BatteryChartView mHourlyChartView; private BatteryChartView mHourlyChartView;
@Mock @Mock
private ViewPropertyAnimator mViewPropertyAnimator;
@Mock
private PowerGaugePreference mPowerGaugePreference; private PowerGaugePreference mPowerGaugePreference;
@Mock @Mock
private BatteryUtils mBatteryUtils; private BatteryUtils mBatteryUtils;
@@ -116,6 +121,7 @@ public final class BatteryChartPreferenceControllerTest {
.when(mFeatureFactory.powerUsageFeatureProvider) .when(mFeatureFactory.powerUsageFeatureProvider)
.getHideApplicationEntries(mContext); .getHideApplicationEntries(mContext);
doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
setupHourlyChartViewAnimationMock();
mBatteryChartPreferenceController = createController(); mBatteryChartPreferenceController = createController();
mBatteryChartPreferenceController.mPrefContext = mContext; mBatteryChartPreferenceController.mPrefContext = mContext;
mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup; mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup;
@@ -174,11 +180,13 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void setBatteryChartViewModel_6Hours() { public void setBatteryChartViewModel_6Hours() {
reset(mDailyChartView);
reset(mHourlyChartView); reset(mHourlyChartView);
setupHourlyChartViewAnimationMock();
mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(6)); mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(6));
verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE); verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE);
verify(mHourlyChartView, atLeastOnce()).setVisibility(View.VISIBLE);
// Ignore fast refresh ui from the data processor callback. // Ignore fast refresh ui from the data processor callback.
verify(mHourlyChartView, atLeast(0)).setViewModel(null); verify(mHourlyChartView, atLeast(0)).setViewModel(null);
verify(mHourlyChartView, atLeastOnce()).setViewModel(new BatteryChartViewModel( verify(mHourlyChartView, atLeastOnce()).setViewModel(new BatteryChartViewModel(
@@ -192,6 +200,10 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void setBatteryChartViewModel_60Hours() { public void setBatteryChartViewModel_60Hours() {
reset(mDailyChartView);
reset(mHourlyChartView);
setupHourlyChartViewAnimationMock();
BatteryChartViewModel expectedDailyViewModel = new BatteryChartViewModel( BatteryChartViewModel expectedDailyViewModel = new BatteryChartViewModel(
List.of(100, 83, 59, 41), List.of(100, 83, 59, 41),
// "Sat", "Sun", "Mon", "Mon" // "Sat", "Sun", "Mon", "Mon"
@@ -205,16 +217,18 @@ public final class BatteryChartPreferenceControllerTest {
mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(60)); mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(60));
verify(mDailyChartView, atLeastOnce()).setVisibility(View.VISIBLE); verify(mDailyChartView, atLeastOnce()).setVisibility(View.VISIBLE);
verify(mHourlyChartView, atLeastOnce()).setVisibility(View.GONE); verify(mViewPropertyAnimator, atLeastOnce()).alpha(0f);
verify(mDailyChartView).setViewModel(expectedDailyViewModel); verify(mDailyChartView).setViewModel(expectedDailyViewModel);
reset(mDailyChartView); reset(mDailyChartView);
reset(mHourlyChartView); reset(mHourlyChartView);
setupHourlyChartViewAnimationMock();
doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.refreshUi(); mBatteryChartPreferenceController.refreshUi();
verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mDailyChartView).setVisibility(View.VISIBLE);
verify(mHourlyChartView).setVisibility(View.VISIBLE); verify(mHourlyChartView).setVisibility(View.VISIBLE);
verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
expectedDailyViewModel.setSelectedIndex(0); expectedDailyViewModel.setSelectedIndex(0);
verify(mDailyChartView).setViewModel(expectedDailyViewModel); verify(mDailyChartView).setViewModel(expectedDailyViewModel);
@@ -234,12 +248,13 @@ public final class BatteryChartPreferenceControllerTest {
reset(mDailyChartView); reset(mDailyChartView);
reset(mHourlyChartView); reset(mHourlyChartView);
setupHourlyChartViewAnimationMock();
doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
mBatteryChartPreferenceController.mDailyChartIndex = 1; mBatteryChartPreferenceController.mDailyChartIndex = 1;
mBatteryChartPreferenceController.mHourlyChartIndex = 6; mBatteryChartPreferenceController.mHourlyChartIndex = 6;
mBatteryChartPreferenceController.refreshUi(); mBatteryChartPreferenceController.refreshUi();
verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mDailyChartView).setVisibility(View.VISIBLE);
verify(mHourlyChartView).setVisibility(View.VISIBLE); verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
expectedDailyViewModel.setSelectedIndex(1); expectedDailyViewModel.setSelectedIndex(1);
verify(mDailyChartView).setViewModel(expectedDailyViewModel); verify(mDailyChartView).setViewModel(expectedDailyViewModel);
BatteryChartViewModel expectedHourlyViewModel = new BatteryChartViewModel( BatteryChartViewModel expectedHourlyViewModel = new BatteryChartViewModel(
@@ -264,13 +279,14 @@ public final class BatteryChartPreferenceControllerTest {
reset(mDailyChartView); reset(mDailyChartView);
reset(mHourlyChartView); reset(mHourlyChartView);
setupHourlyChartViewAnimationMock();
doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
mBatteryChartPreferenceController.mDailyChartIndex = 2; mBatteryChartPreferenceController.mDailyChartIndex = 2;
mBatteryChartPreferenceController.mHourlyChartIndex = mBatteryChartPreferenceController.mHourlyChartIndex =
BatteryChartViewModel.SELECTED_INDEX_ALL; BatteryChartViewModel.SELECTED_INDEX_ALL;
mBatteryChartPreferenceController.refreshUi(); mBatteryChartPreferenceController.refreshUi();
verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mDailyChartView).setVisibility(View.VISIBLE);
verify(mHourlyChartView).setVisibility(View.VISIBLE); verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
expectedDailyViewModel.setSelectedIndex(2); expectedDailyViewModel.setSelectedIndex(2);
verify(mDailyChartView).setViewModel(expectedDailyViewModel); verify(mDailyChartView).setViewModel(expectedDailyViewModel);
verify(mHourlyChartView).setViewModel(new BatteryChartViewModel( verify(mHourlyChartView).setViewModel(new BatteryChartViewModel(
@@ -734,4 +750,11 @@ public final class BatteryChartPreferenceControllerTest {
controller.mPrefContext = mContext; controller.mPrefContext = mContext;
return controller; return controller;
} }
private void setupHourlyChartViewAnimationMock() {
doReturn(mViewPropertyAnimator).when(mHourlyChartView).animate();
doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).alpha(anyFloat());
doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).setDuration(anyLong());
doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).setListener(any());
}
} }

View File

@@ -579,9 +579,13 @@ public class DataProcessorTest {
ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0, ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0,
/*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60); /*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 3); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
3);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
0);
} }
@Test @Test
@@ -674,9 +678,13 @@ public class DataProcessorTest {
assertThat(resultMap.get(0).get(0)).isNotNull(); assertThat(resultMap.get(0).get(0)).isNotNull();
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull(); assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
2);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
0);
} }
@Test @Test
@@ -739,9 +747,13 @@ public class DataProcessorTest {
assertThat(resultMap.get(0).get(0)).isNotNull(); assertThat(resultMap.get(0).get(0)).isNotNull();
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull(); assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
1);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
0);
} }
@Test @Test
@@ -814,9 +826,13 @@ public class DataProcessorTest {
ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0, ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
/*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20); /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
1);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 1); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
1);
} }
@Test @Test
@@ -889,9 +905,13 @@ public class DataProcessorTest {
resultEntry = resultDiffData.getAppDiffEntryList().get(1); resultEntry = resultDiffData.getAppDiffEntryList().get(1);
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0); assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
2);
verify(mMetricsFeatureProvider) verify(mMetricsFeatureProvider)
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); .action(mContext.getApplicationContext(),
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
0);
} }
@Test @Test

View File

@@ -17,9 +17,11 @@ package com.android.settings.network;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_DISCONNECT; import static com.android.settings.network.NetworkProviderSettings.MENU_ID_DISCONNECT;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_FORGET; import static com.android.settings.network.NetworkProviderSettings.MENU_ID_FORGET;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_MODIFY;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_SHARE; import static com.android.settings.network.NetworkProviderSettings.MENU_ID_SHARE;
import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT;
import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY;
import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_DISCONNECTED;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -729,6 +731,28 @@ public class NetworkProviderSettingsTest {
verify(mContextMenu, never()).add(anyInt(), eq(MENU_ID_FORGET), anyInt(), anyInt()); verify(mContextMenu, never()).add(anyInt(), eq(MENU_ID_FORGET), anyInt(), anyInt());
} }
@Test
public void addModifyMenuIfSuitable_isAdmin_addMenu() {
mNetworkProviderSettings.mIsAdmin = true;
when(mWifiEntry.isSaved()).thenReturn(true);
when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
mNetworkProviderSettings.addModifyMenuIfSuitable(mContextMenu, mWifiEntry);
verify(mContextMenu).add(anyInt(), eq(MENU_ID_MODIFY), anyInt(), anyInt());
}
@Test
public void addModifyMenuIfSuitable_isNotAdmin_notAddMenu() {
mNetworkProviderSettings.mIsAdmin = false;
when(mWifiEntry.isSaved()).thenReturn(true);
when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED);
mNetworkProviderSettings.addModifyMenuIfSuitable(mContextMenu, mWifiEntry);
verify(mContextMenu, never()).add(anyInt(), eq(MENU_ID_MODIFY), anyInt(), anyInt());
}
@Test @Test
public void getNonIndexableKeys_allowedChangeWifiState_keyNotReturned() { public void getNonIndexableKeys_allowedChangeWifiState_keyNotReturned() {
when(mWifiRestriction.isChangeWifiStateAllowed(mContext)).thenReturn(true); when(mWifiRestriction.isChangeWifiStateAllowed(mContext)).thenReturn(true);