Loading services/core/java/com/android/server/PinnerService.java +32 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server; import static android.app.ActivityManager.UID_OBSERVER_ACTIVE; import static android.app.ActivityManager.UID_OBSERVER_GONE; import static android.os.Process.SYSTEM_UID; import android.annotation.IntDef; import android.annotation.NonNull; Loading Loading @@ -261,6 +262,37 @@ public final class PinnerService extends SystemService { } } /** Returns information about pinned files and sizes for StatsPullAtomService. */ public List<PinnedFileStats> dumpDataForStatsd() { List<PinnedFileStats> pinnedFileStats = new ArrayList<>(); synchronized (PinnerService.this) { for (PinnedFile pinnedFile : mPinnedFiles) { pinnedFileStats.add(new PinnedFileStats(SYSTEM_UID, pinnedFile)); } for (int key : mPinnedApps.keySet()) { PinnedApp app = mPinnedApps.get(key); for (PinnedFile pinnedFile : mPinnedApps.get(key).mFiles) { pinnedFileStats.add(new PinnedFileStats(app.uid, pinnedFile)); } } } return pinnedFileStats; } /** Wrapper class for statistics for a pinned file. */ public static class PinnedFileStats { public final int uid; public final String filename; public final int sizeKb; protected PinnedFileStats(int uid, PinnedFile file) { this.uid = uid; this.filename = file.fileName.substring(file.fileName.lastIndexOf('/') + 1); this.sizeKb = file.bytesPinned / 1024; } } /** * Handler for on start pinning message */ Loading services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +25 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,8 @@ import com.android.role.RoleManagerLocal; import com.android.server.BinderCallsStatsService; import com.android.server.LocalManagerRegistry; import com.android.server.LocalServices; import com.android.server.PinnerService; import com.android.server.PinnerService.PinnedFileStats; import com.android.server.SystemService; import com.android.server.SystemServiceManager; import com.android.server.am.MemoryStatUtil.MemoryStat; Loading Loading @@ -727,6 +729,8 @@ public class StatsPullAtomService extends SystemService { return pullAccessibilityFloatingMenuStatsLocked(atomTag, data); case FrameworkStatsLog.MEDIA_CAPABILITIES: return pullMediaCapabilitiesStats(atomTag, data); case FrameworkStatsLog.PINNED_FILE_SIZES_PER_PACKAGE: return pullSystemServerPinnerStats(atomTag, data); case FrameworkStatsLog.PENDING_INTENTS_PER_PACKAGE: return pullPendingIntentsPerPackage(atomTag, data); default: Loading Loading @@ -926,6 +930,7 @@ public class StatsPullAtomService extends SystemService { registerAccessibilityFloatingMenuStats(); registerMediaCapabilitiesStats(); registerPendingIntentsPerPackagePuller(); registerPinnerServiceStats(); } private void initAndRegisterNetworkStatsPullers() { Loading Loading @@ -4607,6 +4612,26 @@ public class StatsPullAtomService extends SystemService { return StatsManager.PULL_SUCCESS; } private void registerPinnerServiceStats() { int tagId = FrameworkStatsLog.PINNED_FILE_SIZES_PER_PACKAGE; mStatsManager.setPullAtomCallback( tagId, null, // use default PullAtomMetadata values DIRECT_EXECUTOR, mStatsCallbackImpl ); } int pullSystemServerPinnerStats(int atomTag, List<StatsEvent> pulledData) { PinnerService pinnerService = LocalServices.getService(PinnerService.class); List<PinnedFileStats> pinnedFileStats = pinnerService.dumpDataForStatsd(); for (PinnedFileStats pfstats : pinnedFileStats) { pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, pfstats.uid, pfstats.filename, pfstats.sizeKb)); } return StatsManager.PULL_SUCCESS; } private byte[] toBytes(List<Integer> audioEncodings) { ProtoOutputStream protoOutputStream = new ProtoOutputStream(); for (int audioEncoding : audioEncodings) { Loading Loading
services/core/java/com/android/server/PinnerService.java +32 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server; import static android.app.ActivityManager.UID_OBSERVER_ACTIVE; import static android.app.ActivityManager.UID_OBSERVER_GONE; import static android.os.Process.SYSTEM_UID; import android.annotation.IntDef; import android.annotation.NonNull; Loading Loading @@ -261,6 +262,37 @@ public final class PinnerService extends SystemService { } } /** Returns information about pinned files and sizes for StatsPullAtomService. */ public List<PinnedFileStats> dumpDataForStatsd() { List<PinnedFileStats> pinnedFileStats = new ArrayList<>(); synchronized (PinnerService.this) { for (PinnedFile pinnedFile : mPinnedFiles) { pinnedFileStats.add(new PinnedFileStats(SYSTEM_UID, pinnedFile)); } for (int key : mPinnedApps.keySet()) { PinnedApp app = mPinnedApps.get(key); for (PinnedFile pinnedFile : mPinnedApps.get(key).mFiles) { pinnedFileStats.add(new PinnedFileStats(app.uid, pinnedFile)); } } } return pinnedFileStats; } /** Wrapper class for statistics for a pinned file. */ public static class PinnedFileStats { public final int uid; public final String filename; public final int sizeKb; protected PinnedFileStats(int uid, PinnedFile file) { this.uid = uid; this.filename = file.fileName.substring(file.fileName.lastIndexOf('/') + 1); this.sizeKb = file.bytesPinned / 1024; } } /** * Handler for on start pinning message */ Loading
services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +25 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,8 @@ import com.android.role.RoleManagerLocal; import com.android.server.BinderCallsStatsService; import com.android.server.LocalManagerRegistry; import com.android.server.LocalServices; import com.android.server.PinnerService; import com.android.server.PinnerService.PinnedFileStats; import com.android.server.SystemService; import com.android.server.SystemServiceManager; import com.android.server.am.MemoryStatUtil.MemoryStat; Loading Loading @@ -727,6 +729,8 @@ public class StatsPullAtomService extends SystemService { return pullAccessibilityFloatingMenuStatsLocked(atomTag, data); case FrameworkStatsLog.MEDIA_CAPABILITIES: return pullMediaCapabilitiesStats(atomTag, data); case FrameworkStatsLog.PINNED_FILE_SIZES_PER_PACKAGE: return pullSystemServerPinnerStats(atomTag, data); case FrameworkStatsLog.PENDING_INTENTS_PER_PACKAGE: return pullPendingIntentsPerPackage(atomTag, data); default: Loading Loading @@ -926,6 +930,7 @@ public class StatsPullAtomService extends SystemService { registerAccessibilityFloatingMenuStats(); registerMediaCapabilitiesStats(); registerPendingIntentsPerPackagePuller(); registerPinnerServiceStats(); } private void initAndRegisterNetworkStatsPullers() { Loading Loading @@ -4607,6 +4612,26 @@ public class StatsPullAtomService extends SystemService { return StatsManager.PULL_SUCCESS; } private void registerPinnerServiceStats() { int tagId = FrameworkStatsLog.PINNED_FILE_SIZES_PER_PACKAGE; mStatsManager.setPullAtomCallback( tagId, null, // use default PullAtomMetadata values DIRECT_EXECUTOR, mStatsCallbackImpl ); } int pullSystemServerPinnerStats(int atomTag, List<StatsEvent> pulledData) { PinnerService pinnerService = LocalServices.getService(PinnerService.class); List<PinnedFileStats> pinnedFileStats = pinnerService.dumpDataForStatsd(); for (PinnedFileStats pfstats : pinnedFileStats) { pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, pfstats.uid, pfstats.filename, pfstats.sizeKb)); } return StatsManager.PULL_SUCCESS; } private byte[] toBytes(List<Integer> audioEncodings) { ProtoOutputStream protoOutputStream = new ProtoOutputStream(); for (int audioEncoding : audioEncodings) { Loading