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

Commit 8c31d4ea authored by Salud Lemus's avatar Salud Lemus Committed by Android (Google) Code Review
Browse files

Merge "Update stats-log-api-gen source based off of google3 presubmit checks"

parents 81c782dd 0cbe9d94
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ static void print_error(const FieldDescriptor* field, const char* format, ...) {

    SourceLocation loc;
    if (field->GetSourceLocation(&loc)) {
        // TODO: this will work if we can figure out how to pass
        // TODO(b/162454173): this will work if we can figure out how to pass
        // --include_source_info to protoc
        fprintf(stderr, "%s:%d: ", file->name().c_str(), loc.start_line);
    } else {
@@ -111,7 +111,6 @@ static java_type_t java_type(const FieldDescriptor* field) {
        case FieldDescriptor::TYPE_GROUP:
            return JAVA_TYPE_UNKNOWN;
        case FieldDescriptor::TYPE_MESSAGE:
            // TODO: not the final package name
            if (field->message_type()->full_name() == "android.os.statsd.AttributionNode") {
                return JAVA_TYPE_ATTRIBUTION_CHAIN;
            } else if (field->message_type()->full_name() == "android.os.statsd.KeyValuePair") {
@@ -147,7 +146,7 @@ static java_type_t java_type(const FieldDescriptor* field) {
void collate_enums(const EnumDescriptor& enumDescriptor, AtomField* atomField) {
    for (int i = 0; i < enumDescriptor.value_count(); i++) {
        atomField->enumValues[enumDescriptor.value(i)->number()] =
                enumDescriptor.value(i)->name().c_str();
                enumDescriptor.value(i)->name();
    }
}

@@ -528,7 +527,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms*

        vector<java_type_t> signature;
        errorCount += collate_atom(atom, atomDecl.get(), &signature);
        if (atomDecl->primaryFields.size() != 0 && atomDecl->exclusiveField == 0) {
        if (!atomDecl->primaryFields.empty() && atomDecl->exclusiveField == 0) {
            print_error(atomField, "Cannot have a primary field without an exclusive field: %s\n",
                        atomField->name().c_str());
            errorCount++;
@@ -541,8 +540,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms*
                        atomField->name().c_str());
            errorCount++;
            continue;
        }
        else if ((oneofAtom->name() != ONEOF_PUSHED_ATOM_NAME) &&
        } else if ((oneofAtom->name() != ONEOF_PUSHED_ATOM_NAME) &&
                 (oneofAtom->name() != ONEOF_PULLED_ATOM_NAME)) {
            print_error(atomField, "Atom is neither a pushed nor pulled atom: %s\n",
                        atomField->name().c_str());
@@ -578,7 +576,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms*
            printf("   ");
            for (vector<java_type_t>::const_iterator jt = it->first.begin(); jt != it->first.end();
                 jt++) {
                printf(" %d", (int)*jt);
                printf(" %d", static_cast<int>(*jt));
            }
            printf("\n");
        }
@@ -589,7 +587,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms*
            printf("   ");
            for (vector<java_type_t>::const_iterator jt = it->first.begin(); jt != it->first.end();
                 jt++) {
                printf(" %d", (int)*jt);
                printf(" %d", static_cast<int>(*jt));
            }
            printf("\n");
        }
+5 −5
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ const int FIRST_UID_IN_CHAIN_ID = 0;
 *
 * `OneofDescriptor::name()` returns the name of the oneof.
 */
const string ONEOF_PUSHED_ATOM_NAME = "pushed";
const string ONEOF_PULLED_ATOM_NAME = "pulled";
const char ONEOF_PUSHED_ATOM_NAME[] = "pushed";
const char ONEOF_PULLED_ATOM_NAME[] = "pulled";

enum AnnotationId : uint8_t {
    ANNOTATION_ID_IS_UID = 1,
@@ -63,7 +63,7 @@ enum AnnotationId : uint8_t {

const int ATOM_ID_FIELD_NUMBER = -1;

const string DEFAULT_MODULE_NAME = "DEFAULT";
const char DEFAULT_MODULE_NAME[] = "DEFAULT";

/**
 * The types for atom parameters.
@@ -95,9 +95,9 @@ union AnnotationValue {
    int intValue;
    bool boolValue;

    AnnotationValue(const int value) : intValue(value) {
    explicit AnnotationValue(const int value) : intValue(value) {
    }
    AnnotationValue(const bool value) : boolValue(value) {
    explicit AnnotationValue(const bool value) : boolValue(value) {
    }
};

+17 −11
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ static int write_java_q_logger_class(FILE* out, const SignatureInfoMap& signatur
static void write_java_annotation_constants(FILE* out) {
    fprintf(out, "    // Annotation constants.\n");

    const map<AnnotationId, string>& ANNOTATION_ID_CONSTANTS = get_annotation_id_constants();
    for (const auto& [id, name] : ANNOTATION_ID_CONSTANTS) {
        fprintf(out, "    public static final byte %s = %hhu;\n", name.c_str(), id);
    }
@@ -56,6 +57,7 @@ static void write_annotations(FILE* out, int argIndex,
        return;
    }
    const AtomDeclSet& atomDeclSet = fieldNumberToAtomDeclSetIt->second;
    const map<AnnotationId, string>& ANNOTATION_ID_CONSTANTS = get_annotation_id_constants();
    for (const shared_ptr<AtomDecl>& atomDecl : atomDeclSet) {
        const string atomConstant = make_constant_name(atomDecl->name);
        fprintf(out, "        if (%s == code) {\n", atomConstant.c_str());
@@ -102,7 +104,7 @@ static void write_method_signature(FILE* out, const vector<java_type_t>& signatu
    for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end();
         arg++) {
        if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
            for (auto chainField : attributionDecl.fields) {
            for (const auto& chainField : attributionDecl.fields) {
                fprintf(out, ", %s[] %s", java_type_name(chainField.javaType),
                        chainField.name.c_str());
            }
@@ -243,13 +245,15 @@ static int write_method_body(FILE* out, const vector<java_type_t>& signature,
    return 0;
}

static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMap,
static int write_java_pushed_methods(FILE* out, const SignatureInfoMap& signatureInfoMap,
                              const AtomDecl& attributionDecl, const bool supportQ) {
    for (auto signatureInfoMapIt = signatureInfoMap.begin();
         signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) {
        // Print method signature.
        fprintf(out, "    public static void write(int code");
        write_method_signature(out, signatureInfoMapIt->first, attributionDecl);
        const vector<java_type_t>& signature = signatureInfoMapIt->first;
        const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second;
        write_method_signature(out, signature, attributionDecl);
        fprintf(out, ") {\n");

        // Print method body.
@@ -259,7 +263,7 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa
            indent = "    ";
        }

        int ret = write_method_body(out, signatureInfoMapIt->first, signatureInfoMapIt->second,
        int ret = write_method_body(out, signature, fieldNumberToAtomDeclSet,
                                    attributionDecl, indent);
        if (ret != 0) {
            return ret;
@@ -274,8 +278,8 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa
            fprintf(out, "        } else {\n");
            fprintf(out, "            QLogger.write(code");
            int argIndex = 1;
            for (vector<java_type_t>::const_iterator arg = signatureInfoMapIt->first.begin();
                 arg != signatureInfoMapIt->first.end(); arg++) {
            for (vector<java_type_t>::const_iterator arg = signature.begin();
                 arg != signature.end(); arg++) {
                if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
                    const char* uidName = attributionDecl.fields.front().name.c_str();
                    const char* tagName = attributionDecl.fields.back().name.c_str();
@@ -299,18 +303,20 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa
    return 0;
}

static int write_java_build_stats_event_methods(FILE* out, const SignatureInfoMap& signatureInfoMap,
static int write_java_pulled_methods(FILE* out, const SignatureInfoMap& signatureInfoMap,
                              const AtomDecl& attributionDecl) {
    for (auto signatureInfoMapIt = signatureInfoMap.begin();
         signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) {
        // Print method signature.
        fprintf(out, "    public static StatsEvent buildStatsEvent(int code");
        write_method_signature(out, signatureInfoMapIt->first, attributionDecl);
        const vector<java_type_t>& signature = signatureInfoMapIt->first;
        const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second;
        write_method_signature(out, signature, attributionDecl);
        fprintf(out, ") {\n");

        // Print method body.
        string indent("");
        int ret = write_method_body(out, signatureInfoMapIt->first, signatureInfoMapIt->second,
        int ret = write_method_body(out, signature, fieldNumberToAtomDeclSet,
                                    attributionDecl, indent);
        if (ret != 0) {
            return ret;
@@ -357,9 +363,9 @@ int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl& attribut

    // Print write methods.
    fprintf(out, "    // Write methods\n");
    errors += write_java_methods(out, atoms.signatureInfoMap, attributionDecl, supportQ);
    errors += write_java_pushed_methods(out, atoms.signatureInfoMap, attributionDecl, supportQ);
    errors += write_java_non_chained_methods(out, atoms.nonChainedSignatureInfoMap);
    errors += write_java_build_stats_event_methods(out, atoms.pulledAtomsSignatureInfoMap,
    errors += write_java_pulled_methods(out, atoms.pulledAtomsSignatureInfoMap,
                                                   attributionDecl);
    if (supportWorkSource) {
        errors += write_java_work_source_methods(out, atoms.signatureInfoMap);
+4 −3
Original line number Diff line number Diff line
@@ -14,7 +14,8 @@
 * limitations under the License.
 */

#pragma once
#ifndef ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_H
#define ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_H

#include <stdio.h>
#include <string.h>
@@ -28,11 +29,11 @@
namespace android {
namespace stats_log_api_gen {

using namespace std;

int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl& attributionDecl,
                         const string& javaClass, const string& javaPackage, const bool supportQ,
                         const bool supportWorkSource);

}  // namespace stats_log_api_gen
}  // namespace android

#endif  // ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_H
+2 −2
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ int write_java_methods_q_schema(FILE* out, const SignatureInfoMap& signatureInfo
        for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end();
             arg++) {
            if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
                for (auto chainField : attributionDecl.fields) {
                for (const auto& chainField : attributionDecl.fields) {
                    fprintf(out, ", %s[] %s", java_type_name(chainField.javaType),
                            chainField.name.c_str());
                }
@@ -407,7 +407,7 @@ void write_java_helpers_for_q_schema_methods(FILE* out, const AtomDecl& attribut
    if (requiredHelpers & JAVA_MODULE_REQUIRES_ATTRIBUTION) {
        fprintf(out, "%sprivate static void writeAttributionChain(byte[] buff, int pos",
                indent.c_str());
        for (auto chainField : attributionDecl.fields) {
        for (const auto& chainField : attributionDecl.fields) {
            fprintf(out, ", %s[] %s", java_type_name(chainField.javaType), chainField.name.c_str());
        }
        fprintf(out, ") {\n");
Loading