diff options
| author | Jeff Hamilton <jham@google.com> | 2019-03-22 00:25:02 -0400 |
|---|---|---|
| committer | Jeff Hamilton <jham@google.com> | 2019-03-27 14:24:49 -0400 |
| commit | fa2f91c2fe442df6cf4b030752a5332fe218f7e6 (patch) | |
| tree | f1c36ac1cf21f8041ff71c7ac4e42d35a6a0a88e /core/java/android | |
| parent | 112795a64613fd5a2b642d40160e64e59e4d870d (diff) | |
Add an API to read experiment IDs.
Change the file format to store the
experiment IDs direclty so we don't
need to parse the proto when reading
the values out.
Bug: 129099771
Test: bit statsd_test:* && adb shell cmd stats pull-source 10051
Change-Id: I0dc1fd118f4d9ba597c2f0959648136bbafb5aab
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/StatsManager.java | 30 | ||||
| -rw-r--r-- | core/java/android/os/IStatsManager.aidl | 5 |
2 files changed, 35 insertions, 0 deletions
diff --git a/core/java/android/app/StatsManager.java b/core/java/android/app/StatsManager.java index 7746148d325a..29e9441d2c97 100644 --- a/core/java/android/app/StatsManager.java +++ b/core/java/android/app/StatsManager.java @@ -410,6 +410,36 @@ public final class StatsManager { } /** + * Returns the experiments IDs registered with statsd, or an empty array if there aren't any. + * + * @throws StatsUnavailableException if unsuccessful due to failing to connect to stats service + * @hide + */ + @RequiresPermission(allOf = {DUMP, PACKAGE_USAGE_STATS}) + public long[] getRegisteredExperimentIds() + throws StatsUnavailableException { + synchronized (this) { + try { + IStatsManager service = getIStatsManagerLocked(); + if (service == null) { + if (DEBUG) { + Slog.d(TAG, "Failed to find statsd when getting experiment IDs"); + } + return new long[0]; + } + return service.getRegisteredExperimentIds(); + } catch (RemoteException e) { + if (DEBUG) { + Slog.d(TAG, + "Failed to connect to StatsCompanionService when getting " + + "registered experiment IDs"); + } + return new long[0]; + } + } + } + + /** * Registers a callback for an atom when that atom is to be pulled. The stats service will * invoke pullData in the callback when the stats service determines that this atom needs to be * pulled. Currently, this only works for atoms with tags above 100,000 that do not have a uid. diff --git a/core/java/android/os/IStatsManager.aidl b/core/java/android/os/IStatsManager.aidl index 6d4c5a034b54..311c86d08211 100644 --- a/core/java/android/os/IStatsManager.aidl +++ b/core/java/android/os/IStatsManager.aidl @@ -217,4 +217,9 @@ interface IStatsManager { */ oneway void sendBinaryPushStateChangedAtom(in String trainName, in long trainVersionCode, in int options, in int state, in long[] experimentId); + + /** + * Returns the most recently registered experiment IDs. + */ + long[] getRegisteredExperimentIds(); } |
