Loading libs/androidfw/ResourceUtils.cpp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,9 @@ bool ExtractResourceName(const StringPiece& str, StringPiece* out_package, Strin bool has_type_separator = false; bool has_type_separator = false; const char* start = str.data(); const char* start = str.data(); const char* end = start + str.size(); const char* end = start + str.size(); if (start[0] == '@') { start++; } const char* current = start; const char* current = start; while (current != end) { while (current != end) { if (out_type->size() == 0 && *current == '/') { if (out_type->size() == 0 && *current == '/') { Loading libs/androidfw/tests/ResourceUtils_test.cpp +25 −0 Original line number Original line Diff line number Diff line Loading @@ -27,23 +27,48 @@ TEST(ResourceUtilsTest, ExtractResourceName) { EXPECT_EQ("string", type); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("@android:string/foo", &package, &type, &entry)); EXPECT_EQ("android", package); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("string/foo", &package, &type, &entry)); ASSERT_TRUE(ExtractResourceName("string/foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("", package); EXPECT_EQ("string", type); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("@string/foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("foo", &package, &type, &entry)); ASSERT_TRUE(ExtractResourceName("foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("", package); EXPECT_EQ("", type); EXPECT_EQ("", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("@foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("", type); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("android:foo", &package, &type, &entry)); ASSERT_TRUE(ExtractResourceName("android:foo", &package, &type, &entry)); EXPECT_EQ("android", package); EXPECT_EQ("android", package); EXPECT_EQ("", type); EXPECT_EQ("", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); // ASSERT_TRUE(ExtractResourceName("@android:foo", &package, &type, &entry)); // EXPECT_EQ("android", package); // EXPECT_EQ("", type); // EXPECT_EQ("foo", entry); EXPECT_FALSE(ExtractResourceName(":string/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName(":string/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("@:string/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("@/foo", &package, &type, &entry)); } } } // namespace android } // namespace android Loading
libs/androidfw/ResourceUtils.cpp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,9 @@ bool ExtractResourceName(const StringPiece& str, StringPiece* out_package, Strin bool has_type_separator = false; bool has_type_separator = false; const char* start = str.data(); const char* start = str.data(); const char* end = start + str.size(); const char* end = start + str.size(); if (start[0] == '@') { start++; } const char* current = start; const char* current = start; while (current != end) { while (current != end) { if (out_type->size() == 0 && *current == '/') { if (out_type->size() == 0 && *current == '/') { Loading
libs/androidfw/tests/ResourceUtils_test.cpp +25 −0 Original line number Original line Diff line number Diff line Loading @@ -27,23 +27,48 @@ TEST(ResourceUtilsTest, ExtractResourceName) { EXPECT_EQ("string", type); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("@android:string/foo", &package, &type, &entry)); EXPECT_EQ("android", package); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("string/foo", &package, &type, &entry)); ASSERT_TRUE(ExtractResourceName("string/foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("", package); EXPECT_EQ("string", type); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("@string/foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("string", type); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("foo", &package, &type, &entry)); ASSERT_TRUE(ExtractResourceName("foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("", package); EXPECT_EQ("", type); EXPECT_EQ("", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("@foo", &package, &type, &entry)); EXPECT_EQ("", package); EXPECT_EQ("", type); EXPECT_EQ("foo", entry); ASSERT_TRUE(ExtractResourceName("android:foo", &package, &type, &entry)); ASSERT_TRUE(ExtractResourceName("android:foo", &package, &type, &entry)); EXPECT_EQ("android", package); EXPECT_EQ("android", package); EXPECT_EQ("", type); EXPECT_EQ("", type); EXPECT_EQ("foo", entry); EXPECT_EQ("foo", entry); // ASSERT_TRUE(ExtractResourceName("@android:foo", &package, &type, &entry)); // EXPECT_EQ("android", package); // EXPECT_EQ("", type); // EXPECT_EQ("foo", entry); EXPECT_FALSE(ExtractResourceName(":string/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName(":string/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("@:string/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("/foo", &package, &type, &entry)); EXPECT_FALSE(ExtractResourceName("@/foo", &package, &type, &entry)); } } } // namespace android } // namespace android