Loading src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java +14 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.net.NetworkStats; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.Process; import android.text.format.DateUtils; import android.text.format.Formatter; Loading Loading @@ -91,11 +92,19 @@ public class AppDataUsagePreferenceController extends AppInfoPreferenceControlle @Override public Loader<List<NetworkCycleDataForUid>> onCreateLoader(int id, Bundle args) { final NetworkTemplate template = getTemplate(mContext); return NetworkCycleDataForUidLoader.builder(mContext) .addUid(mParent.getAppEntry().info.uid) .setRetrieveDetail(false) .setNetworkTemplate(template) .build(); final int uid = mParent.getAppEntry().info.uid; final NetworkCycleDataForUidLoader.Builder builder = NetworkCycleDataForUidLoader.builder(mContext); builder.setRetrieveDetail(false) .setNetworkTemplate(template); builder.addUid(uid); if (Process.isApplicationUid(uid)) { // Also add in network usage for the app's SDK sandbox builder.addUid(Process.toSdkSandboxUid(uid)); } return builder.build(); } @Override Loading src/com/android/settings/datausage/AppDataUsage.java +15 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.Process; import android.os.UserHandle; import android.telephony.SubscriptionManager; import android.util.ArraySet; Loading Loading @@ -140,6 +141,14 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC } } if (mAppItem.key > 0 && UserHandle.isApp(mAppItem.key)) { // In case we've been asked data usage for an app, automatically // include data usage of the corresponding SDK sandbox final int appSandboxUid = Process.toSdkSandboxUid(mAppItem.key); if (!mAppItem.uids.get(appSandboxUid)) { mAppItem.addUid(appSandboxUid); } } mTotalUsage = findPreference(KEY_TOTAL_USAGE); mForegroundUsage = findPreference(KEY_FOREGROUND_USAGE); mBackgroundUsage = findPreference(KEY_BACKGROUND_USAGE); Loading Loading @@ -307,6 +316,10 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC } private void addUid(int uid) { if (Process.isSdkSandboxUid(uid)) { // For a sandbox process, get the associated app UID uid = Process.getAppUidForSdkSandboxUid(uid); } String[] packages = mPackageManager.getPackagesForUid(uid); if (packages != null) { for (int i = 0; i < packages.length; i++) { Loading Loading @@ -404,13 +417,9 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC = NetworkCycleDataForUidLoader.builder(mContext); builder.setRetrieveDetail(true) .setNetworkTemplate(mTemplate); if (mAppItem.category == AppItem.CATEGORY_USER) { for (int i = 0; i < mAppItem.uids.size(); i++) { builder.addUid(mAppItem.uids.keyAt(i)); } } else { builder.addUid(mAppItem.key); } if (mCycles != null) { builder.setCycles(mCycles); } Loading src/com/android/settings/datausage/DataUsageList.java +8 −3 Original line number Diff line number Diff line Loading @@ -369,7 +369,7 @@ public class DataUsageList extends DataUsageBaseFragment final int collapseKey; final int category; final int userId = UserHandle.getUserId(uid); if (UserHandle.isApp(uid)) { if (UserHandle.isApp(uid) || Process.isSdkSandboxUid(uid)) { if (profiles.contains(new UserHandle(userId))) { if (userId != currentUserId) { // Add to a managed user item. Loading @@ -377,8 +377,12 @@ public class DataUsageList extends DataUsageBaseFragment largest = accumulate(managedKey, knownItems, bucket, AppItem.CATEGORY_USER, items, largest); } // Add to app item. // Map SDK sandbox back to its corresponding app if (Process.isSdkSandboxUid(uid)) { collapseKey = Process.getAppUidForSdkSandboxUid(uid); } else { collapseKey = uid; } category = AppItem.CATEGORY_APP; } else { // If it is a removed user add it to the removed users' key Loading Loading @@ -416,6 +420,7 @@ public class DataUsageList extends DataUsageBaseFragment if (item == null) { item = new AppItem(uid); item.total = -1; item.addUid(uid); items.add(item); knownItems.put(item.key, item); } Loading tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,7 @@ public class AppDataUsageTest { final Context context = RuntimeEnvironment.application; final int testUid = 123123; final AppItem appItem = new AppItem(testUid); appItem.addUid(testUid); appItem.category = AppItem.CATEGORY_APP; ReflectionHelpers.setField(mFragment, "mContext", context); ReflectionHelpers.setField(mFragment, "mAppItem", appItem); Loading Loading
src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java +14 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.net.NetworkStats; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.Process; import android.text.format.DateUtils; import android.text.format.Formatter; Loading Loading @@ -91,11 +92,19 @@ public class AppDataUsagePreferenceController extends AppInfoPreferenceControlle @Override public Loader<List<NetworkCycleDataForUid>> onCreateLoader(int id, Bundle args) { final NetworkTemplate template = getTemplate(mContext); return NetworkCycleDataForUidLoader.builder(mContext) .addUid(mParent.getAppEntry().info.uid) .setRetrieveDetail(false) .setNetworkTemplate(template) .build(); final int uid = mParent.getAppEntry().info.uid; final NetworkCycleDataForUidLoader.Builder builder = NetworkCycleDataForUidLoader.builder(mContext); builder.setRetrieveDetail(false) .setNetworkTemplate(template); builder.addUid(uid); if (Process.isApplicationUid(uid)) { // Also add in network usage for the app's SDK sandbox builder.addUid(Process.toSdkSandboxUid(uid)); } return builder.build(); } @Override Loading
src/com/android/settings/datausage/AppDataUsage.java +15 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.Process; import android.os.UserHandle; import android.telephony.SubscriptionManager; import android.util.ArraySet; Loading Loading @@ -140,6 +141,14 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC } } if (mAppItem.key > 0 && UserHandle.isApp(mAppItem.key)) { // In case we've been asked data usage for an app, automatically // include data usage of the corresponding SDK sandbox final int appSandboxUid = Process.toSdkSandboxUid(mAppItem.key); if (!mAppItem.uids.get(appSandboxUid)) { mAppItem.addUid(appSandboxUid); } } mTotalUsage = findPreference(KEY_TOTAL_USAGE); mForegroundUsage = findPreference(KEY_FOREGROUND_USAGE); mBackgroundUsage = findPreference(KEY_BACKGROUND_USAGE); Loading Loading @@ -307,6 +316,10 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC } private void addUid(int uid) { if (Process.isSdkSandboxUid(uid)) { // For a sandbox process, get the associated app UID uid = Process.getAppUidForSdkSandboxUid(uid); } String[] packages = mPackageManager.getPackagesForUid(uid); if (packages != null) { for (int i = 0; i < packages.length; i++) { Loading Loading @@ -404,13 +417,9 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC = NetworkCycleDataForUidLoader.builder(mContext); builder.setRetrieveDetail(true) .setNetworkTemplate(mTemplate); if (mAppItem.category == AppItem.CATEGORY_USER) { for (int i = 0; i < mAppItem.uids.size(); i++) { builder.addUid(mAppItem.uids.keyAt(i)); } } else { builder.addUid(mAppItem.key); } if (mCycles != null) { builder.setCycles(mCycles); } Loading
src/com/android/settings/datausage/DataUsageList.java +8 −3 Original line number Diff line number Diff line Loading @@ -369,7 +369,7 @@ public class DataUsageList extends DataUsageBaseFragment final int collapseKey; final int category; final int userId = UserHandle.getUserId(uid); if (UserHandle.isApp(uid)) { if (UserHandle.isApp(uid) || Process.isSdkSandboxUid(uid)) { if (profiles.contains(new UserHandle(userId))) { if (userId != currentUserId) { // Add to a managed user item. Loading @@ -377,8 +377,12 @@ public class DataUsageList extends DataUsageBaseFragment largest = accumulate(managedKey, knownItems, bucket, AppItem.CATEGORY_USER, items, largest); } // Add to app item. // Map SDK sandbox back to its corresponding app if (Process.isSdkSandboxUid(uid)) { collapseKey = Process.getAppUidForSdkSandboxUid(uid); } else { collapseKey = uid; } category = AppItem.CATEGORY_APP; } else { // If it is a removed user add it to the removed users' key Loading Loading @@ -416,6 +420,7 @@ public class DataUsageList extends DataUsageBaseFragment if (item == null) { item = new AppItem(uid); item.total = -1; item.addUid(uid); items.add(item); knownItems.put(item.key, item); } Loading
tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,7 @@ public class AppDataUsageTest { final Context context = RuntimeEnvironment.application; final int testUid = 123123; final AppItem appItem = new AppItem(testUid); appItem.addUid(testUid); appItem.category = AppItem.CATEGORY_APP; ReflectionHelpers.setField(mFragment, "mContext", context); ReflectionHelpers.setField(mFragment, "mAppItem", appItem); Loading