Add --supportQ flag to java StatsLog codegen
Add support to generate Q schema code generation only for modules that ship to Q. Bug: 145606209 Test: m Test: flashes successfully Test: adb logcat "*:S statsd:*" Change-Id: I978ac321415f1e8d76e4ec73445894965845aaea
This commit is contained in:
@@ -48,7 +48,8 @@ static int write_java_methods(
|
||||
FILE* out,
|
||||
const map<vector<java_type_t>, set<string>>& signatures_to_modules,
|
||||
const AtomDecl &attributionDecl,
|
||||
const string& moduleName
|
||||
const string& moduleName,
|
||||
const bool supportQ
|
||||
) {
|
||||
for (auto signature_to_modules_it = signatures_to_modules.begin();
|
||||
signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
|
||||
@@ -82,7 +83,7 @@ static int write_java_methods(
|
||||
|
||||
// Print method body.
|
||||
string indent("");
|
||||
if (DEFAULT_MODULE_NAME != moduleName) {
|
||||
if (supportQ) {
|
||||
// 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, " Build.VERSION.CODENAME.equals(\"R\")) {\n");
|
||||
@@ -195,7 +196,7 @@ static int write_java_methods(
|
||||
fprintf(out, "%s StatsLog.write(builder.build());\n", indent.c_str());
|
||||
|
||||
// Add support for writing using Q schema if this is not the default module.
|
||||
if (DEFAULT_MODULE_NAME != moduleName) {
|
||||
if (supportQ) {
|
||||
fprintf(out, " } else {\n");
|
||||
fprintf(out, " QLogger.write(code");
|
||||
argIndex = 1;
|
||||
@@ -227,15 +228,17 @@ static int write_java_methods(
|
||||
|
||||
int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
|
||||
const string& moduleName, const string& javaClass,
|
||||
const string& javaPackage) {
|
||||
const string& javaPackage, const bool supportQ) {
|
||||
// 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, "\n");
|
||||
fprintf(out, "import android.os.Build;\n");
|
||||
fprintf(out, "import android.os.SystemClock;\n");
|
||||
if (supportQ) {
|
||||
fprintf(out, "import android.os.Build;\n");
|
||||
fprintf(out, "import android.os.SystemClock;\n");
|
||||
}
|
||||
|
||||
if (DEFAULT_MODULE_NAME == moduleName) {
|
||||
// Mainline modules don't use WorkSource logging.
|
||||
@@ -273,12 +276,15 @@ 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.signatures_to_modules, attributionDecl, moduleName);
|
||||
errors += write_java_methods(
|
||||
out, atoms.signatures_to_modules, attributionDecl, moduleName, supportQ);
|
||||
errors += write_java_non_chained_methods(
|
||||
out, atoms.non_chained_signatures_to_modules, moduleName);
|
||||
if (DEFAULT_MODULE_NAME == moduleName) {
|
||||
errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
|
||||
} else {
|
||||
}
|
||||
|
||||
if (supportQ) {
|
||||
errors += write_java_q_logger_class(
|
||||
out, atoms.signatures_to_modules, attributionDecl, moduleName);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ using namespace std;
|
||||
|
||||
int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
|
||||
const string& moduleName, const string& javaClass,
|
||||
const string& javaPackage);
|
||||
const string& javaPackage, const bool supportQ);
|
||||
|
||||
} // namespace stats_log_api_gen
|
||||
} // namespace android
|
||||
|
||||
@@ -749,7 +749,7 @@ run(int argc, char const*const* argv)
|
||||
javaPackage = "android.util";
|
||||
}
|
||||
errorCount = android::stats_log_api_gen::write_stats_log_java(
|
||||
out, atoms, attributionDecl, moduleName, javaClass, javaPackage);
|
||||
out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportQ);
|
||||
#endif
|
||||
|
||||
fclose(out);
|
||||
|
||||
Reference in New Issue
Block a user