diff options
| author | 2020-01-31 12:29:32 -0800 | |
|---|---|---|
| committer | 2020-02-07 15:40:24 -0800 | |
| commit | 86379b14a703fe74b6638238f58c0f53a6c785a6 (patch) | |
| tree | e6be40134ce6b1b1427c53fe00b1a03d7f651253 | |
| parent | cf21292622bf3d6329d5f99aa4ce70783386488a (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.bp | 28 | ||||
| -rw-r--r-- | apex/statsd/aidl/android/os/IPendingIntentRef.aidl | 6 | ||||
| -rw-r--r-- | apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl | 16 | ||||
| -rw-r--r-- | apex/statsd/service/java/com/android/server/stats/StatsCompanion.java | 8 | ||||
| -rw-r--r-- | cmds/statsd/Android.bp | 5 | ||||
| -rw-r--r-- | cmds/statsd/src/subscriber/SubscriberReporter.cpp | 4 |
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, |