summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJeff Hamilton <jham@google.com>2019-03-22 00:25:02 -0400
committerJeff Hamilton <jham@google.com>2019-03-27 14:24:49 -0400
commitfa2f91c2fe442df6cf4b030752a5332fe218f7e6 (patch)
treef1c36ac1cf21f8041ff71c7ac4e42d35a6a0a88e /core/java
parent112795a64613fd5a2b642d40160e64e59e4d870d (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')
-rw-r--r--core/java/android/app/StatsManager.java30
-rw-r--r--core/java/android/os/IStatsManager.aidl5
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();
}