Send puller registration signal to statsd

Bug: 153384066
Test: m -j
Change-Id: Idd2465d52e6720d7bce26ecc7998721b9d9790e3
diff --git a/apex/statsd/aidl/android/os/IStatsd.aidl b/apex/statsd/aidl/android/os/IStatsd.aidl
index d5b5949..db80650 100644
--- a/apex/statsd/aidl/android/os/IStatsd.aidl
+++ b/apex/statsd/aidl/android/os/IStatsd.aidl
@@ -182,10 +182,15 @@
      */
     void sendAppBreadcrumbAtom(int label, int state);
 
-   /**
-    * Registers a puller callback function that, when invoked, pulls the data
-    * for the specified atom tag.
-    */
+    /**
+     * Tell the stats daemon that all the pullers registered during boot have been sent.
+     */
+    oneway void allPullersFromBootRegistered();
+
+    /**
+     * Registers a puller callback function that, when invoked, pulls the data
+     * for the specified atom tag.
+     */
     oneway void registerPullAtomCallback(int uid, int atomTag, long coolDownMillis,
                                          long timeoutMillis,in int[] additiveFields,
                                          IPullAtomCallback pullerCallback);
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java b/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java
index 58c78da..90764b0 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java
@@ -600,6 +600,7 @@
             statsd.registerPullAtomCallback(key.getUid(), key.getAtom(), value.getCoolDownMillis(),
                     value.getTimeoutMillis(), value.getAdditiveFields(), value.getCallback());
         }
+        statsd.allPullersFromBootRegistered();
     }
 
     // Pre-condition: the Binder calling identity has already been cleared
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index 9169eb17..d51bf77 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -1215,6 +1215,14 @@
     return Status::ok();
 }
 
+Status StatsService::allPullersFromBootRegistered() {
+    ENFORCE_UID(AID_SYSTEM);
+
+    VLOG("StatsService::allPullersFromBootRegistered was called");
+
+    return Status::ok();
+}
+
 Status StatsService::registerPullAtomCallback(int32_t uid, int32_t atomTag, int64_t coolDownMillis,
                                               int64_t timeoutMillis,
                                               const std::vector<int32_t>& additiveFields,
diff --git a/cmds/statsd/src/StatsService.h b/cmds/statsd/src/StatsService.h
index 114c84f..ca01eeb 100644
--- a/cmds/statsd/src/StatsService.h
+++ b/cmds/statsd/src/StatsService.h
@@ -165,6 +165,11 @@
     virtual Status sendAppBreadcrumbAtom(int32_t label, int32_t state) override;
 
     /**
+     * Binder call to notify statsd that all pullers from boot have been registered.
+     */
+    virtual Status allPullersFromBootRegistered();
+
+    /**
      * Binder call to register a callback function for a pulled atom.
      */
     virtual Status registerPullAtomCallback(