From de557d48badd10b7313ea2b40ff8156577a14678 Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Mon, 13 Jul 2015 12:01:42 -0700 Subject: [PATCH] Move AppItem, ChartData, ChartDataLoader from Settings to SettingsLib. Change-Id: Id6189e600eb2adb67f31d079a5a5ecfc99addccc --- .../android/settings/DataUsageSummary.java | 72 +-------- .../applications/InstalledAppDetails.java | 8 +- src/com/android/settings/net/ChartData.java | 27 ---- .../android/settings/net/ChartDataLoader.java | 145 ------------------ 4 files changed, 7 insertions(+), 245 deletions(-) delete mode 100644 src/com/android/settings/net/ChartData.java delete mode 100644 src/com/android/settings/net/ChartDataLoader.java diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java index a10e1a8b270..47c8a690b85 100644 --- a/src/com/android/settings/DataUsageSummary.java +++ b/src/com/android/settings/DataUsageSummary.java @@ -81,8 +81,6 @@ import android.net.TrafficStats; import android.os.AsyncTask; import android.os.Bundle; import android.os.INetworkManagementService; -import android.os.Parcel; -import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; @@ -98,7 +96,6 @@ import android.text.format.Formatter; import android.text.format.Time; import android.util.Log; import android.util.SparseArray; -import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -131,8 +128,6 @@ import android.widget.Toast; import com.android.internal.logging.MetricsLogger; import com.android.internal.telephony.PhoneConstants; import com.android.settings.drawable.InsetBoundsDrawable; -import com.android.settings.net.ChartData; -import com.android.settings.net.ChartDataLoader; import com.android.settings.net.DataUsageMeteredSettings; import com.android.settings.net.SummaryForAllUidLoader; import com.android.settings.net.UidDetail; @@ -143,7 +138,10 @@ import com.android.settings.search.SearchIndexableRaw; import com.android.settings.widget.ChartDataUsageView; import com.android.settings.widget.ChartDataUsageView.DataUsageChartListener; import com.android.settings.widget.ChartNetworkSeriesView; +import com.android.settingslib.AppItem; import com.android.settingslib.NetworkPolicyEditor; +import com.android.settingslib.net.ChartData; +import com.android.settingslib.net.ChartDataLoader; import com.google.android.collect.Lists; import libcore.util.Objects; @@ -1664,70 +1662,6 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable } } - public static class AppItem implements Comparable, Parcelable { - public static final int CATEGORY_USER = 0; - public static final int CATEGORY_APP_TITLE = 1; - public static final int CATEGORY_APP = 2; - - public final int key; - public boolean restricted; - public int category; - - public SparseBooleanArray uids = new SparseBooleanArray(); - public long total; - - public AppItem() { - this.key = 0; - } - - public AppItem(int key) { - this.key = key; - } - - public AppItem(Parcel parcel) { - key = parcel.readInt(); - uids = parcel.readSparseBooleanArray(); - total = parcel.readLong(); - } - - public void addUid(int uid) { - uids.put(uid, true); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(key); - dest.writeSparseBooleanArray(uids); - dest.writeLong(total); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public int compareTo(AppItem another) { - int comparison = Integer.compare(category, another.category); - if (comparison == 0) { - comparison = Long.compare(another.total, total); - } - return comparison; - } - - public static final Creator CREATOR = new Creator() { - @Override - public AppItem createFromParcel(Parcel in) { - return new AppItem(in); - } - - @Override - public AppItem[] newArray(int size) { - return new AppItem[size]; - } - }; - } - /** * Adapter of applications, sorted by total usage descending. */ diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index 27b6c80bab5..2791cfc7762 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -68,20 +68,20 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.DataUsageSummary; -import com.android.settings.DataUsageSummary.AppItem; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.applications.PermissionsSummaryHelper.PermissionsResultCallback; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.PowerUsageDetail; -import com.android.settings.net.ChartData; -import com.android.settings.net.ChartDataLoader; import com.android.settings.notification.AppNotificationSettings; import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend.AppRow; -import com.android.settingslib.applications.ApplicationsState; +import com.android.settingslib.AppItem; import com.android.settingslib.applications.ApplicationsState.AppEntry; +import com.android.settingslib.applications.ApplicationsState; +import com.android.settingslib.net.ChartData; +import com.android.settingslib.net.ChartDataLoader; import java.lang.ref.WeakReference; import java.util.ArrayList; diff --git a/src/com/android/settings/net/ChartData.java b/src/com/android/settings/net/ChartData.java deleted file mode 100644 index 0b8969e8443..00000000000 --- a/src/com/android/settings/net/ChartData.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.net; - -import android.net.NetworkStatsHistory; - -public class ChartData { - public NetworkStatsHistory network; - - public NetworkStatsHistory detail; - public NetworkStatsHistory detailDefault; - public NetworkStatsHistory detailForeground; -} diff --git a/src/com/android/settings/net/ChartDataLoader.java b/src/com/android/settings/net/ChartDataLoader.java deleted file mode 100644 index e0336b721fe..00000000000 --- a/src/com/android/settings/net/ChartDataLoader.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.net; - -import static android.net.NetworkStats.SET_DEFAULT; -import static android.net.NetworkStats.SET_FOREGROUND; -import static android.net.NetworkStats.TAG_NONE; -import static android.net.NetworkStatsHistory.FIELD_RX_BYTES; -import static android.net.NetworkStatsHistory.FIELD_TX_BYTES; -import static android.text.format.DateUtils.HOUR_IN_MILLIS; - -import android.content.AsyncTaskLoader; -import android.content.Context; -import android.net.INetworkStatsSession; -import android.net.NetworkStatsHistory; -import android.net.NetworkTemplate; -import android.os.Bundle; -import android.os.RemoteException; - -import com.android.settings.DataUsageSummary.AppItem; - -/** - * Loader for historical chart data for both network and UID details. - */ -public class ChartDataLoader extends AsyncTaskLoader { - private static final String KEY_TEMPLATE = "template"; - private static final String KEY_APP = "app"; - private static final String KEY_FIELDS = "fields"; - - private final INetworkStatsSession mSession; - private final Bundle mArgs; - - public static Bundle buildArgs(NetworkTemplate template, AppItem app) { - return buildArgs(template, app, FIELD_RX_BYTES | FIELD_TX_BYTES); - } - - public static Bundle buildArgs(NetworkTemplate template, AppItem app, int fields) { - final Bundle args = new Bundle(); - args.putParcelable(KEY_TEMPLATE, template); - args.putParcelable(KEY_APP, app); - args.putInt(KEY_FIELDS, fields); - return args; - } - - public ChartDataLoader(Context context, INetworkStatsSession session, Bundle args) { - super(context); - mSession = session; - mArgs = args; - } - - @Override - protected void onStartLoading() { - super.onStartLoading(); - forceLoad(); - } - - @Override - public ChartData loadInBackground() { - final NetworkTemplate template = mArgs.getParcelable(KEY_TEMPLATE); - final AppItem app = mArgs.getParcelable(KEY_APP); - final int fields = mArgs.getInt(KEY_FIELDS); - - try { - return loadInBackground(template, app, fields); - } catch (RemoteException e) { - // since we can't do much without history, and we don't want to - // leave with half-baked UI, we bail hard. - throw new RuntimeException("problem reading network stats", e); - } - } - - private ChartData loadInBackground(NetworkTemplate template, AppItem app, int fields) - throws RemoteException { - final ChartData data = new ChartData(); - data.network = mSession.getHistoryForNetwork(template, fields); - - if (app != null) { - // load stats for current uid and template - final int size = app.uids.size(); - for (int i = 0; i < size; i++) { - final int uid = app.uids.keyAt(i); - data.detailDefault = collectHistoryForUid( - template, uid, SET_DEFAULT, data.detailDefault); - data.detailForeground = collectHistoryForUid( - template, uid, SET_FOREGROUND, data.detailForeground); - } - - if (size > 0) { - data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration()); - data.detail.recordEntireHistory(data.detailDefault); - data.detail.recordEntireHistory(data.detailForeground); - } else { - data.detailDefault = new NetworkStatsHistory(HOUR_IN_MILLIS); - data.detailForeground = new NetworkStatsHistory(HOUR_IN_MILLIS); - data.detail = new NetworkStatsHistory(HOUR_IN_MILLIS); - } - } - - return data; - } - - @Override - protected void onStopLoading() { - super.onStopLoading(); - cancelLoad(); - } - - @Override - protected void onReset() { - super.onReset(); - cancelLoad(); - } - - /** - * Collect {@link NetworkStatsHistory} for the requested UID, combining with - * an existing {@link NetworkStatsHistory} if provided. - */ - private NetworkStatsHistory collectHistoryForUid( - NetworkTemplate template, int uid, int set, NetworkStatsHistory existing) - throws RemoteException { - final NetworkStatsHistory history = mSession.getHistoryForUid( - template, uid, set, TAG_NONE, FIELD_RX_BYTES | FIELD_TX_BYTES); - - if (existing != null) { - existing.recordEntireHistory(history); - return existing; - } else { - return history; - } - } -}