Loading tools/stats_log_api_gen/java_writer_q.cpp +44 −42 Original line number Diff line number Diff line Loading @@ -361,6 +361,50 @@ void write_java_helpers_for_q_schema_methods( } } // This method is called in main.cpp to generate StatsLog for modules that's compatible with // Q at compile-time. int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass, const string& javaPackage, const bool supportWorkSource) { // Print prelude fprintf(out, "// This file is autogenerated\n"); fprintf(out, "\n"); fprintf(out, "package %s;\n", javaPackage.c_str()); fprintf(out, "\n"); fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n"); fprintf(out, "\n"); fprintf(out, "import android.util.StatsLog;\n"); fprintf(out, "import android.os.SystemClock;\n"); fprintf(out, "\n"); fprintf(out, "\n"); fprintf(out, "/**\n"); fprintf(out, " * Utility class for logging statistics events.\n"); fprintf(out, " */\n"); fprintf(out, "public class %s {\n", javaClass.c_str()); write_java_q_logging_constants(out, " "); write_java_atom_codes(out, atoms, moduleName); write_java_enum_values(out, atoms, moduleName); int errors = 0; // Print write methods fprintf(out, " // Write methods\n"); errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl, moduleName, " "); errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules, moduleName); if (supportWorkSource) { errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName); } fprintf(out, "}\n"); return errors; } #if defined(STATS_SCHEMA_LEGACY) static void write_java_method( FILE* out, Loading Loading @@ -423,48 +467,6 @@ int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attrib return 0; } int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass, const string& javaPackage, const bool supportWorkSource) { // Print prelude fprintf(out, "// This file is autogenerated\n"); fprintf(out, "\n"); fprintf(out, "package %s;\n", javaPackage.c_str()); fprintf(out, "\n"); fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n"); fprintf(out, "\n"); fprintf(out, "import android.util.StatsLog;\n"); fprintf(out, "import android.os.SystemClock;\n"); fprintf(out, "\n"); fprintf(out, "\n"); fprintf(out, "/**\n"); fprintf(out, " * Utility class for logging statistics events.\n"); fprintf(out, " */\n"); fprintf(out, "public class %s {\n", javaClass.c_str()); write_java_q_logging_constants(out, " "); write_java_atom_codes(out, atoms, moduleName); write_java_enum_values(out, atoms, moduleName); int errors = 0; // Print write methods fprintf(out, " // Write methods\n"); errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl, moduleName, " "); errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules, moduleName); if (supportWorkSource) { errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName); } fprintf(out, "}\n"); return errors; } #endif } // namespace stats_log_api_gen Loading tools/stats_log_api_gen/java_writer_q.h +4 −4 Original line number Diff line number Diff line Loading @@ -45,13 +45,13 @@ void write_java_helpers_for_q_schema_methods( const int requiredHelpers, const string& indent); #if defined(STATS_SCHEMA_LEGACY) int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const bool supportWorkSource); int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass, const string& javaPackage, const bool supportWorkSource); #if defined(STATS_SCHEMA_LEGACY) int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const bool supportWorkSource); #endif } // namespace stats_log_api_gen } // namespace android tools/stats_log_api_gen/main.cpp +22 −5 Original line number Diff line number Diff line Loading @@ -511,8 +511,10 @@ print_usage() fprintf(stderr, " --javaClass CLASS the class name of the java class.\n"); fprintf(stderr, " Optional for Java with module.\n"); fprintf(stderr, " Default is \"StatsLogInternal\"\n"); fprintf(stderr, " --supportQ Include support for Android Q.\n"); fprintf(stderr, " --supportQ Include runtime support for Android Q.\n"); fprintf(stderr, " --worksource Include support for logging WorkSource objects.\n"); fprintf(stderr, " --compileQ Include compile-time support for Android Q " "(Java only).\n"); } /** Loading @@ -536,6 +538,7 @@ run(int argc, char const*const* argv) string javaClass = DEFAULT_JAVA_CLASS; bool supportQ = false; bool supportWorkSource = false; bool compileQ = false; int index = 1; while (index < argc) { Loading Loading @@ -630,6 +633,8 @@ run(int argc, char const*const* argv) supportQ = true; } else if (0 == strcmp("--worksource", argv[index])) { supportWorkSource = true; } else if (0 == strcmp("--compileQ", argv[index])) { compileQ = true; } index++; Loading @@ -645,12 +650,18 @@ run(int argc, char const*const* argv) return 1; } if (DEFAULT_MODULE_NAME == moduleName && supportQ) { if (DEFAULT_MODULE_NAME == moduleName && (supportQ || compileQ)) { // Support for Q schema is not needed for default module. fprintf(stderr, "%s cannot support Q schema\n", moduleName.c_str()); return 1; } if (supportQ && compileQ) { // Runtime Q support is redundant if compile-time Q support is required. fprintf(stderr, "Cannot specify compileQ and supportQ simultaneously.\n"); return 1; } // Collate the parameters Atoms atoms; int errorCount = collate_atoms(Atom::descriptor(), &atoms); Loading Loading @@ -748,9 +759,15 @@ run(int argc, char const*const* argv) javaClass = "StatsLogInternal"; javaPackage = "android.util"; } if (compileQ) { errorCount = android::stats_log_api_gen::write_stats_log_java_q_for_module( out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportWorkSource); } else { errorCount = android::stats_log_api_gen::write_stats_log_java( out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportQ, supportWorkSource); } #endif fclose(out); Loading Loading
tools/stats_log_api_gen/java_writer_q.cpp +44 −42 Original line number Diff line number Diff line Loading @@ -361,6 +361,50 @@ void write_java_helpers_for_q_schema_methods( } } // This method is called in main.cpp to generate StatsLog for modules that's compatible with // Q at compile-time. int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass, const string& javaPackage, const bool supportWorkSource) { // Print prelude fprintf(out, "// This file is autogenerated\n"); fprintf(out, "\n"); fprintf(out, "package %s;\n", javaPackage.c_str()); fprintf(out, "\n"); fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n"); fprintf(out, "\n"); fprintf(out, "import android.util.StatsLog;\n"); fprintf(out, "import android.os.SystemClock;\n"); fprintf(out, "\n"); fprintf(out, "\n"); fprintf(out, "/**\n"); fprintf(out, " * Utility class for logging statistics events.\n"); fprintf(out, " */\n"); fprintf(out, "public class %s {\n", javaClass.c_str()); write_java_q_logging_constants(out, " "); write_java_atom_codes(out, atoms, moduleName); write_java_enum_values(out, atoms, moduleName); int errors = 0; // Print write methods fprintf(out, " // Write methods\n"); errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl, moduleName, " "); errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules, moduleName); if (supportWorkSource) { errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName); } fprintf(out, "}\n"); return errors; } #if defined(STATS_SCHEMA_LEGACY) static void write_java_method( FILE* out, Loading Loading @@ -423,48 +467,6 @@ int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attrib return 0; } int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass, const string& javaPackage, const bool supportWorkSource) { // Print prelude fprintf(out, "// This file is autogenerated\n"); fprintf(out, "\n"); fprintf(out, "package %s;\n", javaPackage.c_str()); fprintf(out, "\n"); fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n"); fprintf(out, "\n"); fprintf(out, "import android.util.StatsLog;\n"); fprintf(out, "import android.os.SystemClock;\n"); fprintf(out, "\n"); fprintf(out, "\n"); fprintf(out, "/**\n"); fprintf(out, " * Utility class for logging statistics events.\n"); fprintf(out, " */\n"); fprintf(out, "public class %s {\n", javaClass.c_str()); write_java_q_logging_constants(out, " "); write_java_atom_codes(out, atoms, moduleName); write_java_enum_values(out, atoms, moduleName); int errors = 0; // Print write methods fprintf(out, " // Write methods\n"); errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl, moduleName, " "); errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules, moduleName); if (supportWorkSource) { errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName); } fprintf(out, "}\n"); return errors; } #endif } // namespace stats_log_api_gen Loading
tools/stats_log_api_gen/java_writer_q.h +4 −4 Original line number Diff line number Diff line Loading @@ -45,13 +45,13 @@ void write_java_helpers_for_q_schema_methods( const int requiredHelpers, const string& indent); #if defined(STATS_SCHEMA_LEGACY) int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const bool supportWorkSource); int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass, const string& javaPackage, const bool supportWorkSource); #if defined(STATS_SCHEMA_LEGACY) int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, const bool supportWorkSource); #endif } // namespace stats_log_api_gen } // namespace android
tools/stats_log_api_gen/main.cpp +22 −5 Original line number Diff line number Diff line Loading @@ -511,8 +511,10 @@ print_usage() fprintf(stderr, " --javaClass CLASS the class name of the java class.\n"); fprintf(stderr, " Optional for Java with module.\n"); fprintf(stderr, " Default is \"StatsLogInternal\"\n"); fprintf(stderr, " --supportQ Include support for Android Q.\n"); fprintf(stderr, " --supportQ Include runtime support for Android Q.\n"); fprintf(stderr, " --worksource Include support for logging WorkSource objects.\n"); fprintf(stderr, " --compileQ Include compile-time support for Android Q " "(Java only).\n"); } /** Loading @@ -536,6 +538,7 @@ run(int argc, char const*const* argv) string javaClass = DEFAULT_JAVA_CLASS; bool supportQ = false; bool supportWorkSource = false; bool compileQ = false; int index = 1; while (index < argc) { Loading Loading @@ -630,6 +633,8 @@ run(int argc, char const*const* argv) supportQ = true; } else if (0 == strcmp("--worksource", argv[index])) { supportWorkSource = true; } else if (0 == strcmp("--compileQ", argv[index])) { compileQ = true; } index++; Loading @@ -645,12 +650,18 @@ run(int argc, char const*const* argv) return 1; } if (DEFAULT_MODULE_NAME == moduleName && supportQ) { if (DEFAULT_MODULE_NAME == moduleName && (supportQ || compileQ)) { // Support for Q schema is not needed for default module. fprintf(stderr, "%s cannot support Q schema\n", moduleName.c_str()); return 1; } if (supportQ && compileQ) { // Runtime Q support is redundant if compile-time Q support is required. fprintf(stderr, "Cannot specify compileQ and supportQ simultaneously.\n"); return 1; } // Collate the parameters Atoms atoms; int errorCount = collate_atoms(Atom::descriptor(), &atoms); Loading Loading @@ -748,9 +759,15 @@ run(int argc, char const*const* argv) javaClass = "StatsLogInternal"; javaPackage = "android.util"; } if (compileQ) { errorCount = android::stats_log_api_gen::write_stats_log_java_q_for_module( out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportWorkSource); } else { errorCount = android::stats_log_api_gen::write_stats_log_java( out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportQ, supportWorkSource); } #endif fclose(out); Loading