Revert "[DataUsage] Adjusting the control of display sequence"
This reverts commit b8491032d7
.
Bug: 277162513
Test: Manual
Test: Unit test
Change-Id: I5a84a9b1a99b1da4c18d786a6dff062b53cd46c6
This commit is contained in:
@@ -48,8 +48,8 @@ public class ChartDataUsagePreference extends Preference {
|
||||
// Set to half a meg for now.
|
||||
private static final long RESOLUTION = DataUnit.MEBIBYTES.toBytes(1) / 2;
|
||||
|
||||
private int mWarningColor;
|
||||
private int mLimitColor;
|
||||
private final int mWarningColor;
|
||||
private final int mLimitColor;
|
||||
|
||||
private Resources mResources;
|
||||
private NetworkPolicy mPolicy;
|
||||
@@ -58,25 +58,24 @@ public class ChartDataUsagePreference extends Preference {
|
||||
private NetworkCycleChartData mNetworkCycleChartData;
|
||||
private int mSecondaryColor;
|
||||
private int mSeriesColor;
|
||||
private UsageView mUsageView;
|
||||
private boolean mSuspendUiUpdate; // Suppress UI updates to save some CPU time.
|
||||
|
||||
public ChartDataUsagePreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
mResources = context.getResources();
|
||||
setSelectable(false);
|
||||
mLimitColor = Utils.getColorAttrDefaultColor(context, android.R.attr.colorError);
|
||||
mWarningColor = Utils.getColorAttrDefaultColor(context, android.R.attr.textColorSecondary);
|
||||
setLayoutResource(R.layout.data_usage_graph);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
mUsageView = (UsageView) holder.findViewById(R.id.data_usage);
|
||||
}
|
||||
|
||||
private void onUpdateView() {
|
||||
UsageView chart = mUsageView;
|
||||
if ((chart == null) || (mNetworkCycleChartData == null)) {
|
||||
final UsageView chart = (UsageView) holder.findViewById(R.id.data_usage);
|
||||
if (mNetworkCycleChartData == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final int top = getTop();
|
||||
chart.clearPaths();
|
||||
chart.configureGraph(toInt(mEnd - mStart), top);
|
||||
@@ -292,17 +291,10 @@ public class ChartDataUsagePreference extends Preference {
|
||||
return new SpannableStringBuilder().append(label, new ForegroundColorSpan(mLimitColor), 0);
|
||||
}
|
||||
|
||||
public void onPreparingChartData() {
|
||||
mSuspendUiUpdate = true;
|
||||
}
|
||||
|
||||
public void setNetworkPolicy(NetworkPolicy policy) {
|
||||
mPolicy = policy;
|
||||
if ((!mSuspendUiUpdate) && (mResources != null)) {
|
||||
onUpdateView();
|
||||
notifyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public long getInspectStart() {
|
||||
return mStart;
|
||||
@@ -313,31 +305,15 @@ public class ChartDataUsagePreference extends Preference {
|
||||
}
|
||||
|
||||
public void setNetworkCycleData(NetworkCycleChartData data) {
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
mNetworkCycleChartData = data;
|
||||
mStart = data.getStartTime();
|
||||
mEnd = data.getEndTime();
|
||||
if (mResources == null) {
|
||||
Context context = getContext();
|
||||
mResources = context.getResources();
|
||||
mLimitColor = Utils.getColorAttrDefaultColor(context, android.R.attr.colorError);
|
||||
mWarningColor = Utils.getColorAttrDefaultColor(context,
|
||||
android.R.attr.textColorSecondary);
|
||||
setLayoutResource(R.layout.data_usage_graph);
|
||||
}
|
||||
onUpdateView();
|
||||
notifyChanged();
|
||||
mSuspendUiUpdate = false;
|
||||
}
|
||||
|
||||
public void setColors(int seriesColor, int secondaryColor) {
|
||||
mSeriesColor = seriesColor;
|
||||
mSecondaryColor = secondaryColor;
|
||||
if ((!mSuspendUiUpdate) && (mResources != null)) {
|
||||
onUpdateView();
|
||||
notifyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -172,20 +172,7 @@ public class DataUsageList extends DataUsageBaseFragment
|
||||
public void onViewCreated(View v, Bundle savedInstanceState) {
|
||||
super.onViewCreated(v, savedInstanceState);
|
||||
|
||||
// Show loading
|
||||
mLoadingViewController = new LoadingViewController(
|
||||
v.findViewById(R.id.loading_container), getListView());
|
||||
mLoadingViewController.showLoadingViewDelayed();
|
||||
}
|
||||
|
||||
private void onEndOfLoading() {
|
||||
if (mHeader != null) {
|
||||
return;
|
||||
}
|
||||
mHeader = setPinnedHeaderView(R.layout.apps_filter_spinner);
|
||||
|
||||
mCycleSpinner = mHeader.findViewById(R.id.filter_spinner);
|
||||
|
||||
mHeader.findViewById(R.id.filter_settings).setOnClickListener(btn -> {
|
||||
final Bundle args = new Bundle();
|
||||
args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
|
||||
@@ -196,6 +183,8 @@ public class DataUsageList extends DataUsageBaseFragment
|
||||
.setArguments(args)
|
||||
.launch();
|
||||
});
|
||||
mCycleSpinner = mHeader.findViewById(R.id.filter_spinner);
|
||||
mCycleSpinner.setVisibility(View.GONE);
|
||||
mCycleAdapter = new CycleAdapter(mCycleSpinner.getContext(), new SpinnerInterface() {
|
||||
@Override
|
||||
public void setAdapter(CycleAdapter cycleAdapter) {
|
||||
@@ -227,6 +216,10 @@ public class DataUsageList extends DataUsageBaseFragment
|
||||
super.sendAccessibilityEvent(host, eventType);
|
||||
}
|
||||
});
|
||||
|
||||
mLoadingViewController = new LoadingViewController(
|
||||
getView().findViewById(R.id.loading_container), getListView());
|
||||
mLoadingViewController.showLoadingViewDelayed();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -234,10 +227,6 @@ public class DataUsageList extends DataUsageBaseFragment
|
||||
super.onResume();
|
||||
mDataStateListener.start(mSubId);
|
||||
|
||||
if (mChart != null) {
|
||||
mChart.onPreparingChartData();
|
||||
}
|
||||
|
||||
// kick off loader for network history
|
||||
// TODO: consider chaining two loaders together instead of reloading
|
||||
// network history when showing app detail.
|
||||
@@ -599,13 +588,11 @@ public class DataUsageList extends DataUsageBaseFragment
|
||||
@Override
|
||||
public void onLoadFinished(Loader<List<NetworkCycleChartData>> loader,
|
||||
List<NetworkCycleChartData> data) {
|
||||
onEndOfLoading();
|
||||
if (mLoadingViewController != null) {
|
||||
mLoadingViewController.showContent(false /* animate */);
|
||||
}
|
||||
mCycleData = data;
|
||||
// calculate policy cycles based on available data
|
||||
updatePolicy();
|
||||
mCycleSpinner.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -17,10 +17,7 @@ package com.android.settings.datausage;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@@ -166,32 +163,23 @@ public class ChartDataUsagePreferenceTest {
|
||||
|
||||
@Test
|
||||
public void notifyChange_nonEmptyDataUsage_shouldHaveSingleContentDescription() {
|
||||
final ArgumentCaptor<CharSequence> contentCaptor =
|
||||
ArgumentCaptor.forClass(CharSequence.class);
|
||||
final UsageView chart = mock(UsageView.class);
|
||||
doReturn(chart).when(mHolder).findViewById(R.id.data_usage);
|
||||
final TextView labelTop = mock(TextView.class);
|
||||
doReturn(labelTop).when(mHolder).findViewById(R.id.label_top);
|
||||
final TextView labelMiddle = mock(TextView.class);
|
||||
doReturn(labelMiddle).when(mHolder).findViewById(R.id.label_middle);
|
||||
final TextView labelBottom = mock(TextView.class);
|
||||
doReturn(labelBottom).when(mHolder).findViewById(R.id.label_bottom);
|
||||
final TextView labelStart = mock(TextView.class);
|
||||
doReturn(labelStart).when(mHolder).findViewById(R.id.label_start);
|
||||
final TextView labelEnd = mock(TextView.class);
|
||||
doReturn(labelEnd).when(mHolder).findViewById(R.id.label_end);
|
||||
final UsageView chart = (UsageView) mHolder.findViewById(R.id.data_usage);
|
||||
final TextView labelTop = (TextView) mHolder.findViewById(R.id.label_top);
|
||||
final TextView labelMiddle = (TextView) mHolder.findViewById(R.id.label_middle);
|
||||
final TextView labelBottom = (TextView) mHolder.findViewById(R.id.label_bottom);
|
||||
final TextView labelStart = (TextView) mHolder.findViewById(R.id.label_start);
|
||||
final TextView labelEnd = (TextView) mHolder.findViewById(R.id.label_end);
|
||||
createTestNetworkData();
|
||||
|
||||
mPreference.onBindViewHolder(mHolder);
|
||||
mPreference.setNetworkCycleData(mNetworkCycleChartData);
|
||||
|
||||
verify(chart).setContentDescription(contentCaptor.capture());
|
||||
assertThat(contentCaptor.getValue()).isNotNull();
|
||||
verify(labelTop, never()).setContentDescription(any());
|
||||
verify(labelMiddle, never()).setContentDescription(any());
|
||||
verify(labelBottom, never()).setContentDescription(any());
|
||||
verify(labelStart, never()).setContentDescription(any());
|
||||
verify(labelEnd, never()).setContentDescription(any());
|
||||
mPreference.onBindViewHolder(mHolder);
|
||||
|
||||
assertThat(chart.getContentDescription()).isNotNull();
|
||||
assertThat(labelTop.getContentDescription()).isNull();
|
||||
assertThat(labelMiddle.getContentDescription()).isNull();
|
||||
assertThat(labelBottom.getContentDescription()).isNull();
|
||||
assertThat(labelStart.getContentDescription()).isNull();
|
||||
assertThat(labelEnd.getContentDescription()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -222,23 +222,32 @@ public class DataUsageListTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onViewCreated_shouldNotSetCycleSpinner() {
|
||||
View view = constructRootView();
|
||||
public void onViewCreated_shouldHideCycleSpinner() {
|
||||
final View view = new View(mActivity);
|
||||
final View header = getHeader();
|
||||
final Spinner spinner = getSpinner(header);
|
||||
spinner.setVisibility(View.VISIBLE);
|
||||
doReturn(header).when(mDataUsageList).setPinnedHeaderView(anyInt());
|
||||
doReturn(view).when(mDataUsageList).getView();
|
||||
|
||||
mDataUsageList.onViewCreated(view, null);
|
||||
|
||||
assertThat(getSpinner(view)).isNull();
|
||||
assertThat(spinner.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onLoadFinished_networkCycleDataCallback_shouldSetCycleSpinner() {
|
||||
final View view = constructRootView();
|
||||
public void onLoadFinished_networkCycleDataCallback_shouldShowCycleSpinner() {
|
||||
final LoadingViewController loadingViewController = mock(LoadingViewController.class);
|
||||
mDataUsageList.mLoadingViewController = loadingViewController;
|
||||
final Spinner spinner = getSpinner(getHeader());
|
||||
spinner.setVisibility(View.INVISIBLE);
|
||||
mDataUsageList.mCycleSpinner = spinner;
|
||||
assertThat(spinner.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
doNothing().when(mDataUsageList).updatePolicy();
|
||||
doReturn(setupHeaderView(view)).when(mDataUsageList).setPinnedHeaderView(anyInt());
|
||||
|
||||
mDataUsageList.mNetworkCycleDataCallbacks.onLoadFinished(null, null);
|
||||
|
||||
assertThat(getSpinner(view)).isNotNull();
|
||||
assertThat(spinner.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -249,25 +258,19 @@ public class DataUsageListTest {
|
||||
verify(mLoaderManager).destroyLoader(DataUsageList.LOADER_SUMMARY);
|
||||
}
|
||||
|
||||
private View constructRootView() {
|
||||
View rootView = LayoutInflater.from(mActivity)
|
||||
private View getHeader() {
|
||||
final View rootView = LayoutInflater.from(mActivity)
|
||||
.inflate(R.layout.preference_list_fragment, null, false);
|
||||
return rootView;
|
||||
}
|
||||
|
||||
private View setupHeaderView(View rootView) {
|
||||
final FrameLayout pinnedHeader = (FrameLayout) rootView.findViewById(R.id.pinned_header);
|
||||
final FrameLayout pinnedHeader = rootView.findViewById(R.id.pinned_header);
|
||||
final View header = mActivity.getLayoutInflater()
|
||||
.inflate(R.layout.apps_filter_spinner, pinnedHeader, true);
|
||||
.inflate(R.layout.apps_filter_spinner, pinnedHeader, false);
|
||||
|
||||
return header;
|
||||
}
|
||||
|
||||
private Spinner getSpinner(View rootView) {
|
||||
final FrameLayout pinnedHeader = (FrameLayout) rootView.findViewById(R.id.pinned_header);
|
||||
if (pinnedHeader == null) {
|
||||
return null;
|
||||
}
|
||||
return pinnedHeader.findViewById(R.id.filter_spinner);
|
||||
private Spinner getSpinner(View header) {
|
||||
final Spinner spinner = header.findViewById(R.id.filter_spinner);
|
||||
return spinner;
|
||||
}
|
||||
|
||||
@Implements(DataUsageBaseFragment.class)
|
||||
|
Reference in New Issue
Block a user