summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ruchir Rastogi <ruchirr@google.com> 2020-01-31 12:29:32 -0800
committer Jeffrey Huang <jeffreyhuang@google.com> 2020-02-07 15:40:24 -0800
commit86379b14a703fe74b6638238f58c0f53a6c785a6 (patch)
treee6be40134ce6b1b1427c53fe00b1a03d7f651253
parentcf21292622bf3d6329d5f99aa4ce70783386488a (diff)
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
-rw-r--r--apex/statsd/aidl/Android.bp28
-rw-r--r--apex/statsd/aidl/android/os/IPendingIntentRef.aidl6
-rw-r--r--apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl16
-rw-r--r--apex/statsd/service/java/com/android/server/stats/StatsCompanion.java8
-rw-r--r--cmds/statsd/Android.bp5
-rw-r--r--cmds/statsd/src/subscriber/SubscriberReporter.cpp4
6 files changed, 41 insertions, 26 deletions
diff --git a/apex/statsd/aidl/Android.bp b/apex/statsd/aidl/Android.bp
index 6d639fddd043..db5f439cd40e 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 6b9e467a7e15..0ec052f98cd7 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 @@ interface IPendingIntentRef {
*/
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 000000000000..83faa72eb000
--- /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 4495dc9de71e..de6723ac0cd0 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.Binder;
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 @@ public class StatsCompanion {
@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 @@ public class StatsCompanion {
"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 70f309add5df..c8aae7b8e6c8 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -44,12 +44,8 @@ cc_library_host_shared {
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 @@ cc_defaults {
"liblog",
"libservices",
"libstatssocket",
+ "statsd-aidl-cpp",
],
}
diff --git a/cmds/statsd/src/subscriber/SubscriberReporter.cpp b/cmds/statsd/src/subscriber/SubscriberReporter.cpp
index 160b57e27c6c..2ddecc753541 100644
--- a/cmds/statsd/src/subscriber/SubscriberReporter.cpp
+++ b/cmds/statsd/src/subscriber/SubscriberReporter.cpp
@@ -115,13 +115,15 @@ void SubscriberReporter::sendBroadcastLocked(const sp<IPendingIntentRef>& pir,
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,