Loading tools/aapt2/ResourceUtils.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -534,17 +534,18 @@ Maybe<int> ParseSdkVersion(const StringPiece& str) { } // Try parsing the code name. std::pair<StringPiece, int> entry = GetDevelopmentSdkCodeNameAndVersion(); if (entry.first == trimmed_str) { return entry.second; Maybe<int> entry = GetDevelopmentSdkCodeNameVersion(trimmed_str); if (entry) { return entry.value(); } // Try parsing codename from "[codename].[preview_sdk_fingerprint]" value. const StringPiece::const_iterator begin = std::begin(trimmed_str); const StringPiece::const_iterator end = std::end(trimmed_str); const StringPiece::const_iterator codename_end = std::find(begin, end, '.'); if (codename_end != end && entry.first == trimmed_str.substr(begin, codename_end)) { return entry.second; entry = GetDevelopmentSdkCodeNameVersion(trimmed_str.substr(begin, codename_end)); if (entry) { return entry.value(); } return {}; } Loading tools/aapt2/ResourceUtils_test.cpp +7 −6 Original line number Diff line number Diff line Loading @@ -214,14 +214,15 @@ TEST(ResourceUtilsTest, ItemsWithWhitespaceAreParsedCorrectly) { } TEST(ResourceUtilsTest, ParseSdkVersionWithCodename) { const android::StringPiece codename = GetDevelopmentSdkCodeNameAndVersion().first; const int version = GetDevelopmentSdkCodeNameAndVersion().second; EXPECT_THAT(ResourceUtils::ParseSdkVersion("Q"), Eq(Maybe<int>(10000))); EXPECT_THAT( ResourceUtils::ParseSdkVersion("Q.fingerprint"), Eq(Maybe<int>(10000))); EXPECT_THAT(ResourceUtils::ParseSdkVersion(codename), Eq(Maybe<int>(version))); EXPECT_THAT(ResourceUtils::ParseSdkVersion("R"), Eq(Maybe<int>(10000))); EXPECT_THAT( ResourceUtils::ParseSdkVersion(codename.to_string() + ".fingerprint"), Eq(Maybe<int>(version))); ResourceUtils::ParseSdkVersion("R.fingerprint"), Eq(Maybe<int>(10000))); } TEST(ResourceUtilsTest, StringBuilderWhitespaceRemoval) { Loading tools/aapt2/SdkConstants.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -18,15 +18,17 @@ #include <algorithm> #include <string> #include <unordered_map> #include <unordered_set> #include <vector> using android::StringPiece; namespace aapt { static const char* sDevelopmentSdkCodeName = "Q"; static ApiVersion sDevelopmentSdkLevel = 10000; static const auto sDevelopmentSdkCodeNames = std::unordered_set<StringPiece>({ "Q", "R" }); static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = { {0x021c, 1}, Loading Loading @@ -72,8 +74,9 @@ ApiVersion FindAttributeSdkLevel(const ResourceId& id) { return iter->second; } std::pair<StringPiece, ApiVersion> GetDevelopmentSdkCodeNameAndVersion() { return std::make_pair(StringPiece(sDevelopmentSdkCodeName), sDevelopmentSdkLevel); Maybe<ApiVersion> GetDevelopmentSdkCodeNameVersion(const StringPiece& code_name) { return (sDevelopmentSdkCodeNames.find(code_name) == sDevelopmentSdkCodeNames.end()) ? Maybe<ApiVersion>() : sDevelopmentSdkLevel; } } // namespace aapt tools/aapt2/SdkConstants.h +1 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ enum : ApiVersion { }; ApiVersion FindAttributeSdkLevel(const ResourceId& id); std::pair<android::StringPiece, ApiVersion> GetDevelopmentSdkCodeNameAndVersion(); Maybe<ApiVersion> GetDevelopmentSdkCodeNameVersion(const android::StringPiece& code_name); } // namespace aapt Loading Loading
tools/aapt2/ResourceUtils.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -534,17 +534,18 @@ Maybe<int> ParseSdkVersion(const StringPiece& str) { } // Try parsing the code name. std::pair<StringPiece, int> entry = GetDevelopmentSdkCodeNameAndVersion(); if (entry.first == trimmed_str) { return entry.second; Maybe<int> entry = GetDevelopmentSdkCodeNameVersion(trimmed_str); if (entry) { return entry.value(); } // Try parsing codename from "[codename].[preview_sdk_fingerprint]" value. const StringPiece::const_iterator begin = std::begin(trimmed_str); const StringPiece::const_iterator end = std::end(trimmed_str); const StringPiece::const_iterator codename_end = std::find(begin, end, '.'); if (codename_end != end && entry.first == trimmed_str.substr(begin, codename_end)) { return entry.second; entry = GetDevelopmentSdkCodeNameVersion(trimmed_str.substr(begin, codename_end)); if (entry) { return entry.value(); } return {}; } Loading
tools/aapt2/ResourceUtils_test.cpp +7 −6 Original line number Diff line number Diff line Loading @@ -214,14 +214,15 @@ TEST(ResourceUtilsTest, ItemsWithWhitespaceAreParsedCorrectly) { } TEST(ResourceUtilsTest, ParseSdkVersionWithCodename) { const android::StringPiece codename = GetDevelopmentSdkCodeNameAndVersion().first; const int version = GetDevelopmentSdkCodeNameAndVersion().second; EXPECT_THAT(ResourceUtils::ParseSdkVersion("Q"), Eq(Maybe<int>(10000))); EXPECT_THAT( ResourceUtils::ParseSdkVersion("Q.fingerprint"), Eq(Maybe<int>(10000))); EXPECT_THAT(ResourceUtils::ParseSdkVersion(codename), Eq(Maybe<int>(version))); EXPECT_THAT(ResourceUtils::ParseSdkVersion("R"), Eq(Maybe<int>(10000))); EXPECT_THAT( ResourceUtils::ParseSdkVersion(codename.to_string() + ".fingerprint"), Eq(Maybe<int>(version))); ResourceUtils::ParseSdkVersion("R.fingerprint"), Eq(Maybe<int>(10000))); } TEST(ResourceUtilsTest, StringBuilderWhitespaceRemoval) { Loading
tools/aapt2/SdkConstants.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -18,15 +18,17 @@ #include <algorithm> #include <string> #include <unordered_map> #include <unordered_set> #include <vector> using android::StringPiece; namespace aapt { static const char* sDevelopmentSdkCodeName = "Q"; static ApiVersion sDevelopmentSdkLevel = 10000; static const auto sDevelopmentSdkCodeNames = std::unordered_set<StringPiece>({ "Q", "R" }); static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = { {0x021c, 1}, Loading Loading @@ -72,8 +74,9 @@ ApiVersion FindAttributeSdkLevel(const ResourceId& id) { return iter->second; } std::pair<StringPiece, ApiVersion> GetDevelopmentSdkCodeNameAndVersion() { return std::make_pair(StringPiece(sDevelopmentSdkCodeName), sDevelopmentSdkLevel); Maybe<ApiVersion> GetDevelopmentSdkCodeNameVersion(const StringPiece& code_name) { return (sDevelopmentSdkCodeNames.find(code_name) == sDevelopmentSdkCodeNames.end()) ? Maybe<ApiVersion>() : sDevelopmentSdkLevel; } } // namespace aapt
tools/aapt2/SdkConstants.h +1 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ enum : ApiVersion { }; ApiVersion FindAttributeSdkLevel(const ResourceId& id); std::pair<android::StringPiece, ApiVersion> GetDevelopmentSdkCodeNameAndVersion(); Maybe<ApiVersion> GetDevelopmentSdkCodeNameVersion(const android::StringPiece& code_name); } // namespace aapt Loading