Loading tools/aapt2/ConfigDescription.cpp +30 −1 Original line number Diff line number Diff line Loading @@ -164,6 +164,26 @@ static bool parseScreenLayoutLong(const char* name, ResTable_config* out) { return false; } static bool parseScreenRound(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { if (out) out->screenLayout2 = (out->screenLayout2&~ResTable_config::MASK_SCREENROUND) | ResTable_config::SCREENROUND_ANY; return true; } else if (strcmp(name, "round") == 0) { if (out) out->screenLayout2 = (out->screenLayout2&~ResTable_config::MASK_SCREENROUND) | ResTable_config::SCREENROUND_YES; return true; } else if (strcmp(name, "notround") == 0) { if (out) out->screenLayout2 = (out->screenLayout2&~ResTable_config::MASK_SCREENROUND) | ResTable_config::SCREENROUND_NO; return true; } return false; } static bool parseOrientation(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { if (out) out->orientation = out->ORIENTATION_ANY; Loading Loading @@ -635,6 +655,13 @@ bool ConfigDescription::parse(const StringPiece& str, ConfigDescription* out) { } } if (parseScreenRound(partIter->c_str(), &config)) { ++partIter; if (partIter == partsEnd) { goto success; } } if (parseOrientation(partIter->c_str(), &config)) { ++partIter; if (partIter == partsEnd) { Loading Loading @@ -725,7 +752,9 @@ success: void ConfigDescription::applyVersionForCompatibility(ConfigDescription* config) { uint16_t minSdk = 0; if (config->density == ResTable_config::DENSITY_ANY) { if (config->screenLayout2 & ResTable_config::MASK_SCREENROUND) { minSdk = SDK_MARSHMALLOW; } else if (config->density == ResTable_config::DENSITY_ANY) { minSdk = SDK_LOLLIPOP; } else if (config->smallestScreenWidthDp != ResTable_config::SCREENWIDTH_ANY || config->screenWidthDp != ResTable_config::SCREENWIDTH_ANY Loading tools/aapt2/ConfigDescription_test.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ #include "ConfigDescription.h" #include "SdkConstants.h" #include "util/StringPiece.h" #include <gtest/gtest.h> Loading Loading @@ -79,4 +81,19 @@ TEST(ConfigDescriptionTest, ParseCarAttribute) { EXPECT_EQ(android::ResTable_config::UI_MODE_TYPE_CAR, config.uiMode); } TEST(ConfigDescriptionTest, TestParsingRoundQualifier) { ConfigDescription config; EXPECT_TRUE(TestParse("round", &config)); EXPECT_EQ(android::ResTable_config::SCREENROUND_YES, config.screenLayout2 & android::ResTable_config::MASK_SCREENROUND); EXPECT_EQ(SDK_MARSHMALLOW, config.sdkVersion); EXPECT_EQ(std::string("round-v23"), config.toString().string()); EXPECT_TRUE(TestParse("notround", &config)); EXPECT_EQ(android::ResTable_config::SCREENROUND_NO, config.screenLayout2 & android::ResTable_config::MASK_SCREENROUND); EXPECT_EQ(SDK_MARSHMALLOW, config.sdkVersion); EXPECT_EQ(std::string("notround-v23"), config.toString().string()); } } // namespace aapt tools/aapt2/SdkConstants.h +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ enum { SDK_KITKAT_WATCH = 20, SDK_LOLLIPOP = 21, SDK_LOLLIPOP_MR1 = 22, SDK_MARSHMALLOW = 23, }; size_t findAttributeSdkLevel(ResourceId id); Loading Loading
tools/aapt2/ConfigDescription.cpp +30 −1 Original line number Diff line number Diff line Loading @@ -164,6 +164,26 @@ static bool parseScreenLayoutLong(const char* name, ResTable_config* out) { return false; } static bool parseScreenRound(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { if (out) out->screenLayout2 = (out->screenLayout2&~ResTable_config::MASK_SCREENROUND) | ResTable_config::SCREENROUND_ANY; return true; } else if (strcmp(name, "round") == 0) { if (out) out->screenLayout2 = (out->screenLayout2&~ResTable_config::MASK_SCREENROUND) | ResTable_config::SCREENROUND_YES; return true; } else if (strcmp(name, "notround") == 0) { if (out) out->screenLayout2 = (out->screenLayout2&~ResTable_config::MASK_SCREENROUND) | ResTable_config::SCREENROUND_NO; return true; } return false; } static bool parseOrientation(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { if (out) out->orientation = out->ORIENTATION_ANY; Loading Loading @@ -635,6 +655,13 @@ bool ConfigDescription::parse(const StringPiece& str, ConfigDescription* out) { } } if (parseScreenRound(partIter->c_str(), &config)) { ++partIter; if (partIter == partsEnd) { goto success; } } if (parseOrientation(partIter->c_str(), &config)) { ++partIter; if (partIter == partsEnd) { Loading Loading @@ -725,7 +752,9 @@ success: void ConfigDescription::applyVersionForCompatibility(ConfigDescription* config) { uint16_t minSdk = 0; if (config->density == ResTable_config::DENSITY_ANY) { if (config->screenLayout2 & ResTable_config::MASK_SCREENROUND) { minSdk = SDK_MARSHMALLOW; } else if (config->density == ResTable_config::DENSITY_ANY) { minSdk = SDK_LOLLIPOP; } else if (config->smallestScreenWidthDp != ResTable_config::SCREENWIDTH_ANY || config->screenWidthDp != ResTable_config::SCREENWIDTH_ANY Loading
tools/aapt2/ConfigDescription_test.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ #include "ConfigDescription.h" #include "SdkConstants.h" #include "util/StringPiece.h" #include <gtest/gtest.h> Loading Loading @@ -79,4 +81,19 @@ TEST(ConfigDescriptionTest, ParseCarAttribute) { EXPECT_EQ(android::ResTable_config::UI_MODE_TYPE_CAR, config.uiMode); } TEST(ConfigDescriptionTest, TestParsingRoundQualifier) { ConfigDescription config; EXPECT_TRUE(TestParse("round", &config)); EXPECT_EQ(android::ResTable_config::SCREENROUND_YES, config.screenLayout2 & android::ResTable_config::MASK_SCREENROUND); EXPECT_EQ(SDK_MARSHMALLOW, config.sdkVersion); EXPECT_EQ(std::string("round-v23"), config.toString().string()); EXPECT_TRUE(TestParse("notround", &config)); EXPECT_EQ(android::ResTable_config::SCREENROUND_NO, config.screenLayout2 & android::ResTable_config::MASK_SCREENROUND); EXPECT_EQ(SDK_MARSHMALLOW, config.sdkVersion); EXPECT_EQ(std::string("notround-v23"), config.toString().string()); } } // namespace aapt
tools/aapt2/SdkConstants.h +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ enum { SDK_KITKAT_WATCH = 20, SDK_LOLLIPOP = 21, SDK_LOLLIPOP_MR1 = 22, SDK_MARSHMALLOW = 23, }; size_t findAttributeSdkLevel(ResourceId id); Loading