Use cpp aidl_interface within statsd
This CL is part of a larger effort to shift statsd to libbinder_ndk.
This CL specifically accomplishes the following:
- constructs an aidl_interface soong module that can be used by statsd
and libstatspull
- defines the parameters of StatsDimensionsValueParcel
(conversions to and from StatsDimensionsValueParcel are not yet defined,
so this CL will break sendSubscriberBroadcast. A later CL will fix this
issue...)
Test: m -j
Bug: 148682447
Change-Id: I7afa3e21d4c9fc1970e6c393204e1bdb110760fb
diff --git a/apex/statsd/aidl/Android.bp b/apex/statsd/aidl/Android.bp
index 6d639fd..db5f439 100644
--- a/apex/statsd/aidl/Android.bp
+++ b/apex/statsd/aidl/Android.bp
@@ -13,35 +13,31 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
-
-// TODO(b/145815909): move StatsDimensionsValue.aidl here
filegroup {
- name: "statsd_aidl",
+ name: "statsd_java_aidl",
+ srcs: ["**/*.aidl"],
+}
+
+aidl_interface {
+ name: "statsd-aidl",
srcs: [
"android/os/IPendingIntentRef.aidl",
"android/os/IPullAtomCallback.aidl",
"android/os/IPullAtomResultReceiver.aidl",
"android/os/IStatsCompanionService.aidl",
"android/os/IStatsd.aidl",
+ "android/os/StatsDimensionsValueParcel.aidl",
"android/util/StatsEventParcel.aidl",
],
-}
-
-filegroup {
- name: "statsd_java_aidl",
- srcs: ["**/*.aidl"],
-}
-
-// This library is currently unused
-aidl_interface {
- name: "stats-event-parcel-aidl",
- srcs: ["android/util/StatsEventParcel.aidl"],
backend: {
java: {
- sdk_version: "28",
+ enabled: false, // the platform uses statsd_java_aidl
},
cpp: {
- enabled: false,
+ enabled: true,
+ },
+ ndk: {
+ enabled: true,
}
}
}
diff --git a/apex/statsd/aidl/android/os/IPendingIntentRef.aidl b/apex/statsd/aidl/android/os/IPendingIntentRef.aidl
index 6b9e467..0ec052f 100644
--- a/apex/statsd/aidl/android/os/IPendingIntentRef.aidl
+++ b/apex/statsd/aidl/android/os/IPendingIntentRef.aidl
@@ -16,7 +16,7 @@
package android.os;
-import android.os.StatsDimensionsValue;
+import android.os.StatsDimensionsValueParcel;
/**
* Binder interface to hold a PendingIntent for StatsCompanionService.
@@ -42,5 +42,5 @@
*/
oneway void sendSubscriberBroadcast(long configUid, long configId, long subscriptionId,
long subscriptionRuleId, in String[] cookies,
- in StatsDimensionsValue dimensionsValue);
-}
\ No newline at end of file
+ in StatsDimensionsValueParcel dimensionsValue);
+}
diff --git a/apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl b/apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl
new file mode 100644
index 0000000..83faa72
--- /dev/null
+++ b/apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl
@@ -0,0 +1,16 @@
+package android.os;
+
+/**
+ * @hide
+ */
+parcelable StatsDimensionsValueParcel {
+ int atomTag;
+ int valueType;
+
+ String stringValue;
+ int intValue;
+ long longValue;
+ boolean boolValue;
+ float floatValue;
+ StatsDimensionsValueParcel[] arrayValue;
+}
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java
index 4495dc9..de6723a 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java
@@ -24,6 +24,7 @@
import android.os.IPendingIntentRef;
import android.os.Process;
import android.os.StatsDimensionsValue;
+import android.os.StatsDimensionsValueParcel;
import android.util.Slog;
import com.android.server.SystemService;
@@ -145,8 +146,9 @@
@Override
public void sendSubscriberBroadcast(long configUid, long configId, long subscriptionId,
- long subscriptionRuleId, String[] cookies, StatsDimensionsValue dimensionsValue) {
- enforceStatsdCallingUid();
+ long subscriptionRuleId, String[] cookies,
+ StatsDimensionsValueParcel dimensionsValue) {
+ enforceStatsCompanionPermission(mContext);
Intent intent =
new Intent()
.putExtra(StatsManager.EXTRA_STATS_CONFIG_UID, configUid)
@@ -167,6 +169,8 @@
"Statsd sendSubscriberBroadcast with params {%d %d %d %d %s %s}",
configUid, configId, subscriptionId, subscriptionRuleId,
Arrays.toString(cookies),
+ // TODO (b/148604617): convert StatsDimensionsValueParcel into
+ // StatsDimensionsValue
dimensionsValue));
}
try {
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index 70f309a..c8aae7b 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -44,12 +44,8 @@
cc_defaults {
name: "statsd_defaults",
- aidl: {
- include_dirs: ["frameworks/base/core/java"],
- },
srcs: [
- ":statsd_aidl",
"src/active_config_list.proto",
"src/anomaly/AlarmMonitor.cpp",
"src/anomaly/AlarmTracker.cpp",
@@ -132,6 +128,7 @@
"liblog",
"libservices",
"libstatssocket",
+ "statsd-aidl-cpp",
],
}
diff --git a/cmds/statsd/src/subscriber/SubscriberReporter.cpp b/cmds/statsd/src/subscriber/SubscriberReporter.cpp
index 160b57e..2ddecc7 100644
--- a/cmds/statsd/src/subscriber/SubscriberReporter.cpp
+++ b/cmds/statsd/src/subscriber/SubscriberReporter.cpp
@@ -115,13 +115,15 @@
const vector<String16>& cookies,
const MetricDimensionKey& dimKey) const {
VLOG("SubscriberReporter::sendBroadcastLocked called.");
+ // TODO (b/148604617): convert MetricDimensionKey to StatsDimensiosnValueParcel
+ StatsDimensionsValueParcel parcel;
pir->sendSubscriberBroadcast(
configKey.GetUid(),
configKey.GetId(),
subscription.id(),
subscription.rule_id(),
cookies,
- getStatsDimensionsValue(dimKey.getDimensionKeyInWhat()));
+ parcel);
}
sp<IPendingIntentRef> SubscriberReporter::getBroadcastSubscriber(const ConfigKey& configKey,