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

Commit cb2c0230 authored by Muhammad Qureshi's avatar Muhammad Qureshi Committed by Gerrit Code Review
Browse files

Merge changes Icce2f6ed,Ic1788f65,I59e327d4

* changes:
  Add flag to stats-log-api-gen for WorkSource.
  Make writeKeyValuePairs accept Nullable args
  Use preview_sdk_int for version code checks
parents 6674b930 b11e00d6
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -551,7 +551,7 @@ java_library {
genrule {
genrule {
    name: "framework-statslog-gen",
    name: "framework-statslog-gen",
    tools: ["stats-log-api-gen"],
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out)",
    cmd: "$(location stats-log-api-gen) --java $(out) --worksource",
    out: ["android/util/StatsLogInternal.java"],
    out: ["android/util/StatsLogInternal.java"],
}
}


+1 −1
Original line number Original line Diff line number Diff line
@@ -434,7 +434,7 @@ int collate_atoms(const Descriptor *descriptor, Atoms *atoms) {
    AtomDecl nonChainedAtomDecl(atomField->number(), atomField->name(), atom->name());
    AtomDecl nonChainedAtomDecl(atomField->number(), atomField->name(), atom->name());
    vector<java_type_t> nonChainedSignature;
    vector<java_type_t> nonChainedSignature;
    if (get_non_chained_node(atom, &nonChainedAtomDecl, &nonChainedSignature)) {
    if (get_non_chained_node(atom, &nonChainedAtomDecl, &nonChainedSignature)) {
        auto it = atoms->non_chained_signatures_to_modules.find(signature);
        auto it = atoms->non_chained_signatures_to_modules.find(nonChainedSignature);
        if (it == atoms->non_chained_signatures_to_modules.end()) {
        if (it == atoms->non_chained_signatures_to_modules.end()) {
            set<string> modules_non_chained;
            set<string> modules_non_chained;
            if (atomDecl.hasModule) {
            if (atomDecl.hasModule) {
+35 −25
Original line number Original line Diff line number Diff line
@@ -73,7 +73,7 @@ static int write_java_methods(
                        java_type_name(chainField.javaType), chainField.name.c_str());
                        java_type_name(chainField.javaType), chainField.name.c_str());
                }
                }
            } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
            } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
                fprintf(out, ", SparseArray<Object> valueMap");
                fprintf(out, ", android.util.SparseArray<Object> valueMap");
            } else {
            } else {
                fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
                fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
            }
            }
@@ -85,8 +85,9 @@ static int write_java_methods(
        string indent("");
        string indent("");
        if (supportQ) {
        if (supportQ) {
            // TODO(b/146235828): Use just SDK_INT check once it is incremented from Q.
            // TODO(b/146235828): Use just SDK_INT check once it is incremented from Q.
            fprintf(out, "        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q ||\n");
            fprintf(out, "        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q\n");
            fprintf(out, "                Build.VERSION.CODENAME.equals(\"R\")) {\n");
            fprintf(out, "                || (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q\n");
            fprintf(out, "                    && Build.VERSION.PREVIEW_SDK_INT > 0)) {\n");
            indent = "    ";
            indent = "    ";
        }
        }


@@ -141,16 +142,16 @@ static int write_java_methods(
                fprintf(out,
                fprintf(out,
                        "%s        final int count = valueMap.size();\n", indent.c_str());
                        "%s        final int count = valueMap.size();\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s        final SparseIntArray intMap = new SparseIntArray();\n",
                        "%s        android.util.SparseIntArray intMap = null;\n",
                        indent.c_str());
                        indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s        final SparseLongArray longMap = new SparseLongArray();\n",
                        "%s        android.util.SparseLongArray longMap = null;\n",
                        indent.c_str());
                        indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s        final SparseArray<String> stringMap = new SparseArray<>();\n",
                        "%s        android.util.SparseArray<String> stringMap = null;\n",
                        indent.c_str());
                        indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s        final SparseArray<Float> floatMap = new SparseArray<>();\n",
                        "%s        android.util.SparseArray<Float> floatMap = null;\n",
                        indent.c_str());
                        indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s        for (int i = 0; i < count; i++) {\n", indent.c_str());
                        "%s        for (int i = 0; i < count; i++) {\n", indent.c_str());
@@ -161,18 +162,42 @@ static int write_java_methods(
                        indent.c_str());
                        indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s            if (value instanceof Integer) {\n", indent.c_str());
                        "%s            if (value instanceof Integer) {\n", indent.c_str());
                fprintf(out,
                        "%s                if (null == intMap) {\n", indent.c_str());
                fprintf(out,
                        "%s                    intMap = new android.util.SparseIntArray();\n", indent.c_str());
                fprintf(out,
                        "%s                }\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s                intMap.put(key, (Integer) value);\n", indent.c_str());
                        "%s                intMap.put(key, (Integer) value);\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s            } else if (value instanceof Long) {\n", indent.c_str());
                        "%s            } else if (value instanceof Long) {\n", indent.c_str());
                fprintf(out,
                        "%s                if (null == longMap) {\n", indent.c_str());
                fprintf(out,
                        "%s                    longMap = new android.util.SparseLongArray();\n", indent.c_str());
                fprintf(out,
                        "%s                }\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s                longMap.put(key, (Long) value);\n", indent.c_str());
                        "%s                longMap.put(key, (Long) value);\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s            } else if (value instanceof String) {\n", indent.c_str());
                        "%s            } else if (value instanceof String) {\n", indent.c_str());
                fprintf(out,
                        "%s                if (null == stringMap) {\n", indent.c_str());
                fprintf(out,
                        "%s                    stringMap = new android.util.SparseArray<>();\n", indent.c_str());
                fprintf(out,
                        "%s                }\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s                stringMap.put(key, (String) value);\n", indent.c_str());
                        "%s                stringMap.put(key, (String) value);\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s            } else if (value instanceof Float) {\n", indent.c_str());
                        "%s            } else if (value instanceof Float) {\n", indent.c_str());
                fprintf(out,
                        "%s                if (null == floatMap) {\n", indent.c_str());
                fprintf(out,
                        "%s                    floatMap = new android.util.SparseArray<>();\n", indent.c_str());
                fprintf(out,
                        "%s                }\n", indent.c_str());
                fprintf(out,
                fprintf(out,
                        "%s                floatMap.put(key, (Float) value);\n", indent.c_str());
                        "%s                floatMap.put(key, (Float) value);\n", indent.c_str());
                fprintf(out,
                fprintf(out,
@@ -228,7 +253,8 @@ static int write_java_methods(


int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
                                    const string& moduleName, const string& javaClass,
                                    const string& moduleName, const string& javaClass,
                                    const string& javaPackage, const bool supportQ) {
                                    const string& javaPackage, const bool supportQ,
                                    const bool supportWorkSource) {
    // Print prelude
    // Print prelude
    fprintf(out, "// This file is autogenerated\n");
    fprintf(out, "// This file is autogenerated\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
@@ -240,25 +266,9 @@ int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attribut
        fprintf(out, "import android.os.SystemClock;\n");
        fprintf(out, "import android.os.SystemClock;\n");
    }
    }


    if (DEFAULT_MODULE_NAME == moduleName) {
        // Mainline modules don't use WorkSource logging.
        fprintf(out, "import android.os.WorkSource;\n");

        // SparseArray is used for writing KeyValuePairs; not supported for Mainline modules.
        fprintf(out, "import android.util.SparseArray;\n");
        fprintf(out, "import android.util.SparseIntArray;\n");
        fprintf(out, "import android.util.SparseLongArray;\n");
    }

    fprintf(out, "import android.util.StatsEvent;\n");
    fprintf(out, "import android.util.StatsEvent;\n");
    fprintf(out, "import android.util.StatsLog;\n");
    fprintf(out, "import android.util.StatsLog;\n");


    if (DEFAULT_MODULE_NAME == moduleName) {
        // List is used for WorkSource writing. Only needed for default module.
        fprintf(out, "\n");
        fprintf(out, "import java.util.ArrayList;\n");
    }

    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "/**\n");
    fprintf(out, "/**\n");
@@ -280,7 +290,7 @@ int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attribut
            out, atoms.signatures_to_modules, attributionDecl, moduleName, supportQ);
            out, atoms.signatures_to_modules, attributionDecl, moduleName, supportQ);
    errors += write_java_non_chained_methods(
    errors += write_java_non_chained_methods(
            out, atoms.non_chained_signatures_to_modules, moduleName);
            out, atoms.non_chained_signatures_to_modules, moduleName);
    if (DEFAULT_MODULE_NAME == moduleName) {
    if (supportWorkSource) {
        errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
        errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
    }
    }


+3 −2
Original line number Original line Diff line number Diff line
@@ -32,7 +32,8 @@ using namespace std;


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


}  // namespace stats_log_api_gen
}  // namespace stats_log_api_gen
}  // namespace android
}  // namespace android
+13 −12
Original line number Original line Diff line number Diff line
@@ -382,7 +382,7 @@ static void write_java_method(
                        java_type_name(chainField.javaType), chainField.name.c_str());
                        java_type_name(chainField.javaType), chainField.name.c_str());
                }
                }
            } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
            } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
                fprintf(out, ", SparseArray<Object> value_map");
                fprintf(out, ", android.util.SparseArray<Object> value_map");
            } else {
            } else {
                fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
                fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
            }
            }
@@ -393,16 +393,13 @@ static void write_java_method(
    }
    }
}
}


int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl) {
int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
                           const bool supportWorkSource) {
    // Print prelude
    // Print prelude
    fprintf(out, "// This file is autogenerated\n");
    fprintf(out, "// This file is autogenerated\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "package android.util;\n");
    fprintf(out, "package android.util;\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "import android.os.WorkSource;\n");
    fprintf(out, "import android.util.SparseArray;\n");
    fprintf(out, "import java.util.ArrayList;\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "/**\n");
    fprintf(out, "/**\n");
    fprintf(out, " * API For logging statistics events.\n");
    fprintf(out, " * API For logging statistics events.\n");
@@ -418,16 +415,19 @@ int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attrib
    write_java_method(out, "write", atoms.signatures_to_modules, attributionDecl);
    write_java_method(out, "write", atoms.signatures_to_modules, attributionDecl);
    write_java_method(out, "write_non_chained", atoms.non_chained_signatures_to_modules,
    write_java_method(out, "write_non_chained", atoms.non_chained_signatures_to_modules,
            attributionDecl);
            attributionDecl);
    if (supportWorkSource) {
        write_java_work_source_methods(out, atoms.signatures_to_modules, DEFAULT_MODULE_NAME);
        write_java_work_source_methods(out, atoms.signatures_to_modules, DEFAULT_MODULE_NAME);
    }


    fprintf(out, "}\n");
    fprintf(out, "}\n");


    return 0;
    return 0;
}
}


int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms,
                                    const string& moduleName, const string& javaClass,
                                      const AtomDecl &attributionDecl, const string& moduleName,
                                    const string& javaPackage) {
                                      const string& javaClass, const string& javaPackage,
                                      const bool supportWorkSource) {
    // Print prelude
    // Print prelude
    fprintf(out, "// This file is autogenerated\n");
    fprintf(out, "// This file is autogenerated\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
@@ -438,8 +438,6 @@ int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomD
    fprintf(out, "import android.util.StatsLog;\n");
    fprintf(out, "import android.util.StatsLog;\n");
    fprintf(out, "import android.os.SystemClock;\n");
    fprintf(out, "import android.os.SystemClock;\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "import java.util.ArrayList;\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "/**\n");
    fprintf(out, "/**\n");
    fprintf(out, " * Utility class for logging statistics events.\n");
    fprintf(out, " * Utility class for logging statistics events.\n");
@@ -459,6 +457,9 @@ int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomD
            moduleName, "    ");
            moduleName, "    ");
    errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules,
    errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules,
            moduleName);
            moduleName);
    if (supportWorkSource) {
        errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
    }


    fprintf(out, "}\n");
    fprintf(out, "}\n");


Loading