Merge "AAPT2: Add round qualifer support"
This commit is contained in:
committed by
Android (Google) Code Review
commit
08322c2152
@@ -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;
|
||||
@@ -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) {
|
||||
@@ -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
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
|
||||
#include "ConfigDescription.h"
|
||||
#include "SdkConstants.h"
|
||||
|
||||
#include "util/StringPiece.h"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
@@ -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
|
||||
|
||||
@@ -42,6 +42,7 @@ enum {
|
||||
SDK_KITKAT_WATCH = 20,
|
||||
SDK_LOLLIPOP = 21,
|
||||
SDK_LOLLIPOP_MR1 = 22,
|
||||
SDK_MARSHMALLOW = 23,
|
||||
};
|
||||
|
||||
size_t findAttributeSdkLevel(ResourceId id);
|
||||
|
||||
Reference in New Issue
Block a user