[res] Add the grammatical gender qualifier
Bug: 237579711
Test: UTs + build + boot
Change-Id: Id0919799a8a364f109ff351974f02e4f151f23cd
diff --git a/tools/aapt2/Configuration.proto b/tools/aapt2/Configuration.proto
index 8a4644c..4883844 100644
--- a/tools/aapt2/Configuration.proto
+++ b/tools/aapt2/Configuration.proto
@@ -120,6 +120,13 @@
NAVIGATION_WHEEL = 4;
}
+ enum GrammaticalGender {
+ GRAM_GENDER_USET = 0;
+ GRAM_GENDER_NEUTER = 1;
+ GRAM_GENDER_FEMININE = 2;
+ GRAM_GENDER_MASCULINE = 3;
+ }
+
//
// Axis/dimensions that are understood by the runtime.
//
@@ -198,6 +205,9 @@
// The minimum SDK version of the device.
uint32 sdk_version = 24;
+ // Grammatical gender.
+ GrammaticalGender grammatical_gender = 26;
+
//
// Build-time only dimensions.
//
diff --git a/tools/aapt2/format/proto/ProtoDeserialize.cpp b/tools/aapt2/format/proto/ProtoDeserialize.cpp
index e39f327..09ef9bd 100644
--- a/tools/aapt2/format/proto/ProtoDeserialize.cpp
+++ b/tools/aapt2/format/proto/ProtoDeserialize.cpp
@@ -354,6 +354,7 @@
out_config->screenWidth = static_cast<uint16_t>(pb_config.screen_width());
out_config->screenHeight = static_cast<uint16_t>(pb_config.screen_height());
out_config->sdkVersion = static_cast<uint16_t>(pb_config.sdk_version());
+ out_config->grammaticalInflection = pb_config.grammatical_gender();
return true;
}
diff --git a/tools/aapt2/format/proto/ProtoSerialize.cpp b/tools/aapt2/format/proto/ProtoSerialize.cpp
index 0e40124..0903205 100644
--- a/tools/aapt2/format/proto/ProtoSerialize.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize.cpp
@@ -275,6 +275,10 @@
}
out_pb_config->set_sdk_version(config.sdkVersion);
+
+ // The constant values are the same across the structs.
+ out_pb_config->set_grammatical_gender(
+ static_cast<pb::Configuration_GrammaticalGender>(config.grammaticalInflection));
}
static void SerializeOverlayableItemToPb(const OverlayableItem& overlayable_item,
diff --git a/tools/aapt2/format/proto/ProtoSerialize_test.cpp b/tools/aapt2/format/proto/ProtoSerialize_test.cpp
index ecfdba8..afb8356 100644
--- a/tools/aapt2/format/proto/ProtoSerialize_test.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize_test.cpp
@@ -581,9 +581,13 @@
ExpectConfigSerializes("v8");
+ ExpectConfigSerializes("en-feminine");
+ ExpectConfigSerializes("en-neuter-v34");
+ ExpectConfigSerializes("feminine-v34");
+
ExpectConfigSerializes(
- "mcc123-mnc456-b+en+GB-ldltr-sw300dp-w300dp-h400dp-large-long-round-widecg-highdr-land-car-"
- "night-xhdpi-stylus-keysexposed-qwerty-navhidden-dpad-300x200-v23");
+ "mcc123-mnc456-b+en+GB-masculine-ldltr-sw300dp-w300dp-h400dp-large-long-round-widecg-highdr-"
+ "land-car-night-xhdpi-stylus-keysexposed-qwerty-navhidden-dpad-300x200-v23");
}
TEST(ProtoSerializeTest, SerializeAndDeserializeOverlayable) {
diff --git a/tools/aapt2/test/Builders.h b/tools/aapt2/test/Builders.h
index f03d6fc..098535d 100644
--- a/tools/aapt2/test/Builders.h
+++ b/tools/aapt2/test/Builders.h
@@ -251,7 +251,11 @@
return *this;
}
ConfigDescriptionBuilder& setInputPad0(uint8_t inputPad0) {
- config_.inputPad0 = inputPad0;
+ config_.inputFieldPad0 = inputPad0;
+ return *this;
+ }
+ ConfigDescriptionBuilder& setGrammaticalInflection(uint8_t value) {
+ config_.grammaticalInflection = value;
return *this;
}
ConfigDescriptionBuilder& setScreenWidth(uint16_t screenWidth) {