Merge "Show data restricted apps, unify strings."

This commit is contained in:
Jeff Sharkey
2012-04-13 20:16:00 -07:00
committed by Android (Google) Code Review
4 changed files with 55 additions and 40 deletions

View File

@@ -45,17 +45,6 @@
android:paddingRight="@*android:dimen/preference_item_padding_side"
android:paddingTop="8dip"
android:paddingBottom="8dip"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@*android:dimen/preference_item_padding_side"
android:paddingRight="@*android:dimen/preference_item_padding_side"
android:paddingBottom="8dip"
android:text="@string/data_usage_disclaimer"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView

View File

@@ -3626,10 +3626,8 @@
<!-- Label for data usage occuring while application in background. [CHAR LIMIT=48] -->
<string name="data_usage_label_background">Background</string>
<!-- Disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
<string name="data_usage_disclaimer" product="tablet">Measured by your tablet. Your carrier\'s data usage accounting may differ.</string>
<!-- Disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
<string name="data_usage_disclaimer" product="default">Measured by your phone. Your carrier\'s data usage accounting may differ.</string>
<!-- Label for application which has its data usage restricted. [CHAR LIMIT=16] -->
<string name="data_usage_app_restricted">restricted</string>
<!-- Body of dialog shown to request confirmation that mobile data will be disabled. [CHAR LIMIT=NONE] -->
<string name="data_usage_disable_mobile">Disable mobile data?</string>
@@ -3695,9 +3693,9 @@
<!-- Title of dialog shown before user limits data usage. [CHAR LIMIT=48] -->
<string name="data_usage_limit_dialog_title">Limiting data usage</string>
<!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
<string name="data_usage_limit_dialog" product="tablet">Your <xliff:g id="networks" example="mobile">%1$s</xliff:g> data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your tablet, and your carrier may account for usage differently, consider using a conservative limit.</string>
<string name="data_usage_limit_dialog_mobile" product="tablet">Your mobile data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your tablet, and your carrier may account for usage differently, consider using a conservative limit.</string>
<!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
<string name="data_usage_limit_dialog" product="default">Your <xliff:g id="networks" example="mobile">%1$s</xliff:g> data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider using a conservative limit.</string>
<string name="data_usage_limit_dialog_mobile" product="default">Your mobile data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider using a conservative limit.</string>
<!-- Title of dialog shown before user restricts background data usage. [CHAR LIMIT=48] -->
<string name="data_usage_restrict_background_title">Restrict background data?</string>
@@ -3714,7 +3712,12 @@
<!-- Combination of total network bytes sent and received by an application. [CHAR LIMIT=NONE] -->
<string name="data_usage_received_sent"><xliff:g id="received" example="128KB">%1$s</xliff:g> received, <xliff:g id="sent" example="1.3GB">%2$s</xliff:g> sent</string>
<!-- Label displaying total network data transferred during a specific time period. [CHAR LIMIT=64] -->
<string name="data_usage_total_during_range"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used</string>
<string name="data_usage_total_during_range"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used.</string>
<!-- Label displaying total network data transferred during a specific time period, including a disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
<string name="data_usage_total_during_range_mobile" product="tablet"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used, as measured by your tablet. Your carrier\'s data usage accounting may differ.</string>
<!-- Label displaying total network data transferred during a specific time period, including a disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
<string name="data_usage_total_during_range_mobile" product="default"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used, as measured by your phone. Your carrier\'s data usage accounting may differ.</string>
<!-- Dialog title for selecting paid networks. [CHAR LIMIT=25] -->
<string name="data_usage_metered_title">Expensive networks</string>

View File

@@ -1147,8 +1147,15 @@ public class DataUsageSummary extends Fragment {
final String totalPhrase = Formatter.formatFileSize(context, totalBytes);
final String rangePhrase = formatDateRange(context, start, end);
mUsageSummary.setText(
getString(R.string.data_usage_total_during_range, totalPhrase, rangePhrase));
final int summaryRes;
if (TAB_MOBILE.equals(mCurrentTab) || TAB_3G.equals(mCurrentApp)
|| TAB_4G.equals(mCurrentApp)) {
summaryRes = R.string.data_usage_total_during_range_mobile;
} else {
summaryRes = R.string.data_usage_total_during_range;
}
mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase));
}
private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks<
@@ -1191,13 +1198,15 @@ public class DataUsageSummary extends Fragment {
@Override
public void onLoadFinished(Loader<NetworkStats> loader, NetworkStats data) {
mAdapter.bindStats(data);
final int[] restrictedAppIds = mPolicyManager.getAppsWithPolicy(
POLICY_REJECT_METERED_BACKGROUND);
mAdapter.bindStats(data, restrictedAppIds);
updateEmptyVisible();
}
@Override
public void onLoaderReset(Loader<NetworkStats> loader) {
mAdapter.bindStats(null);
mAdapter.bindStats(null, new int[0]);
updateEmptyVisible();
}
@@ -1374,6 +1383,7 @@ public class DataUsageSummary extends Fragment {
public static class AppItem implements Comparable<AppItem>, Parcelable {
public final int appId;
public boolean restricted;
public SparseBooleanArray uids = new SparseBooleanArray();
public long total;
@@ -1439,7 +1449,7 @@ public class DataUsageSummary extends Fragment {
/**
* Bind the given {@link NetworkStats}, or {@code null} to clear list.
*/
public void bindStats(NetworkStats stats) {
public void bindStats(NetworkStats stats, int[] restrictedAppIds) {
mItems.clear();
final AppItem systemItem = new AppItem(android.os.Process.SYSTEM_UID);
@@ -1468,6 +1478,16 @@ public class DataUsageSummary extends Fragment {
}
}
for (int appId : restrictedAppIds) {
AppItem item = knownUids.get(appId);
if (item == null) {
item = new AppItem(appId);
item.total = -1;
mItems.add(item);
}
item.restricted = true;
}
if (systemItem.total > 0) {
mItems.add(systemItem);
}
@@ -1513,7 +1533,13 @@ public class DataUsageSummary extends Fragment {
final AppItem item = mItems.get(position);
UidDetailTask.bindView(mProvider, item, convertView);
text1.setText(Formatter.formatFileSize(context, item.total));
if (item.restricted && item.total <= 0) {
text1.setText(R.string.data_usage_app_restricted);
progress.setVisibility(View.GONE);
} else {
text1.setText(Formatter.formatFileSize(context, item.total));
progress.setVisibility(View.VISIBLE);
}
final int percentTotal = mLargest != 0 ? (int) (item.total * 100 / mLargest) : 0;
progress.setProgress(percentTotal);
@@ -1580,16 +1606,13 @@ public class DataUsageSummary extends Fragment {
// TODO: customize default limits based on network template
final String currentTab = parent.mCurrentTab;
if (TAB_3G.equals(currentTab)) {
message = buildDialogMessage(res, R.string.data_usage_tab_3g);
message = res.getString(R.string.data_usage_limit_dialog_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else if (TAB_4G.equals(currentTab)) {
message = buildDialogMessage(res, R.string.data_usage_tab_4g);
message = res.getString(R.string.data_usage_limit_dialog_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else if (TAB_MOBILE.equals(currentTab)) {
message = buildDialogMessage(res, R.string.data_usage_list_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else if (TAB_WIFI.equals(currentTab)) {
message = buildDialogMessage(res, R.string.data_usage_tab_wifi);
message = res.getString(R.string.data_usage_limit_dialog_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else {
throw new IllegalArgumentException("unknown current tab: " + currentTab);
@@ -1605,10 +1628,6 @@ public class DataUsageSummary extends Fragment {
dialog.show(parent.getFragmentManager(), TAG_CONFIRM_LIMIT);
}
private static CharSequence buildDialogMessage(Resources res, int networkResId) {
return res.getString(R.string.data_usage_limit_dialog, res.getString(networkResId));
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity();

View File

@@ -21,6 +21,7 @@ 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;
@@ -88,9 +89,6 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> {
data.network = mSession.getHistoryForNetwork(template, fields);
if (app != null) {
data.detailDefault = null;
data.detailForeground = null;
// load stats for current uid and template
final int size = app.uids.size();
for (int i = 0; i < size; i++) {
@@ -101,9 +99,15 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> {
template, uid, SET_FOREGROUND, data.detailForeground);
}
data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration());
data.detail.recordEntireHistory(data.detailDefault);
data.detail.recordEntireHistory(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;