Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dff4461 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "statsd_libbinder_ndk"

* changes:
  Use StatsDimensionsValueParcel within statsd apex
  Use cpp aidl_interface within statsd
parents c9a7cd6b 56da4c38
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -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,
        }
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -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);
                                         in StatsDimensionsValueParcel dimensionsValueParcel);
}
+21 −0
Original line number Diff line number Diff line
package android.os;

/**
 * @hide
 */
parcelable StatsDimensionsValueParcel {
    /**
     * Field equals:
     *      - atomTag for top level StatsDimensionsValueParcel
     *      - position in dimension for all other levels
     */
    int field;
    int valueType;

    String stringValue;
    int intValue;
    long longValue;
    boolean boolValue;
    float floatValue;
    StatsDimensionsValueParcel[] tupleValue;
}
+41 −0
Original line number Diff line number Diff line
@@ -95,6 +95,47 @@ public final class StatsDimensionsValue implements Parcelable {
        mValue = readValueFromParcel(mValueType, in);
    }

    /**
     * Creates a {@code StatsDimensionsValue} from a StatsDimensionsValueParcel
     * TODO(b/149103391): Make StatsDimensionsValue a wrapper on top of
     * StatsDimensionsValueParcel.
     *
     * @hide
     */
    public StatsDimensionsValue(StatsDimensionsValueParcel parcel) {
        mField = parcel.field;
        mValueType = parcel.valueType;
        switch (mValueType) {
            case STRING_VALUE_TYPE:
                mValue = parcel.stringValue;
                break;
            case INT_VALUE_TYPE:
                mValue = parcel.intValue;
                break;
            case LONG_VALUE_TYPE:
                mValue = parcel.longValue;
                break;
            case BOOLEAN_VALUE_TYPE:
                mValue = parcel.boolValue;
                break;
            case FLOAT_VALUE_TYPE:
                mValue = parcel.floatValue;
                break;
            case TUPLE_VALUE_TYPE:
                StatsDimensionsValue[] values = new StatsDimensionsValue[parcel.tupleValue.length];
                for (int i = 0; i < parcel.tupleValue.length; i++) {
                    values[i] = new StatsDimensionsValue(parcel.tupleValue[i]);
                }
                mValue = values;
                break;
            default:
                Slog.w(TAG, "StatsDimensionsValueParcel contains bad valueType: " + mValueType);
                mValue = null;
                break;
        }
    }


    /**
     * Return the field, i.e. the tag of a statsd atom.
     *
+4 −1
Original line number Diff line number Diff line
@@ -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,10 @@ public class StatsCompanion {

        @Override
        public void sendSubscriberBroadcast(long configUid, long configId, long subscriptionId,
                long subscriptionRuleId, String[] cookies, StatsDimensionsValue dimensionsValue) {
                long subscriptionRuleId, String[] cookies,
                StatsDimensionsValueParcel dimensionsValueParcel) {
            enforceStatsdCallingUid();
            StatsDimensionsValue dimensionsValue = new StatsDimensionsValue(dimensionsValueParcel);
            Intent intent =
                    new Intent()
                            .putExtra(StatsManager.EXTRA_STATS_CONFIG_UID, configUid)
Loading