Revert "AAPT2: Automatic Static Library Namespacing."
This reverts commit 481f027ddc3e0ff0e1838a9375c1286e8ad70d70.
Reason for revert: Not needed any more
Bug: 111543815
Test: existing unit and integration tests
Change-Id: I87b039192682636d81c2d33512495cb005c9504d
diff --git a/tools/aapt2/link/ReferenceLinker.cpp b/tools/aapt2/link/ReferenceLinker.cpp
index 28e71cc..3a5d585 100644
--- a/tools/aapt2/link/ReferenceLinker.cpp
+++ b/tools/aapt2/link/ReferenceLinker.cpp
@@ -80,7 +80,7 @@
// Find the attribute in the symbol table and check if it is visible from this callsite.
const SymbolTable::Symbol* symbol = ReferenceLinker::ResolveAttributeCheckVisibility(
- transformed_reference, callsite_, symbols_, context_->IsAutoNamespace(), &err_str);
+ transformed_reference, callsite_, symbols_, &err_str);
if (symbol) {
// Assign our style key the correct ID. The ID may not exist.
entry.key.id = symbol->id;
@@ -202,18 +202,12 @@
const SymbolTable::Symbol* ReferenceLinker::ResolveSymbol(const Reference& reference,
const CallSite& callsite,
- SymbolTable* symbols,
- bool auto_namespace) {
+ SymbolTable* symbols) {
if (reference.name) {
const ResourceName& name = reference.name.value();
if (name.package.empty()) {
// Use the callsite's package name if no package name was defined.
- const SymbolTable::Symbol* local_symbol =
- symbols->FindByName(ResourceName(callsite.package, name.type, name.entry));
- if (!auto_namespace || local_symbol) {
- return local_symbol;
- }
- return symbols->FindByNameInAnyPackage(name);
+ return symbols->FindByName(ResourceName(callsite.package, name.type, name.entry));
}
return symbols->FindByName(name);
} else if (reference.id) {
@@ -226,9 +220,8 @@
const SymbolTable::Symbol* ReferenceLinker::ResolveSymbolCheckVisibility(const Reference& reference,
const CallSite& callsite,
SymbolTable* symbols,
- bool auto_namespace,
std::string* out_error) {
- const SymbolTable::Symbol* symbol = ResolveSymbol(reference, callsite, symbols, auto_namespace);
+ const SymbolTable::Symbol* symbol = ResolveSymbol(reference, callsite, symbols);
if (!symbol) {
if (out_error) *out_error = "not found";
return nullptr;
@@ -242,10 +235,10 @@
}
const SymbolTable::Symbol* ReferenceLinker::ResolveAttributeCheckVisibility(
- const Reference& reference, const CallSite& callsite, SymbolTable* symbols, bool auto_namespace,
+ const Reference& reference, const CallSite& callsite, SymbolTable* symbols,
std::string* out_error) {
const SymbolTable::Symbol* symbol =
- ResolveSymbolCheckVisibility(reference, callsite, symbols, auto_namespace, out_error);
+ ResolveSymbolCheckVisibility(reference, callsite, symbols, out_error);
if (!symbol) {
return nullptr;
}
@@ -260,10 +253,9 @@
Maybe<xml::AaptAttribute> ReferenceLinker::CompileXmlAttribute(const Reference& reference,
const CallSite& callsite,
SymbolTable* symbols,
- bool auto_namespace,
std::string* out_error) {
const SymbolTable::Symbol* symbol =
- ResolveAttributeCheckVisibility(reference, callsite, symbols, auto_namespace, out_error);
+ ResolveAttributeCheckVisibility(reference, callsite, symbols, out_error);
if (!symbol) {
return {};
}
@@ -341,8 +333,8 @@
xml::ResolvePackage(decls, &transformed_reference);
std::string err_str;
- const SymbolTable::Symbol* s = ResolveSymbolCheckVisibility(
- transformed_reference, callsite, symbols, context->IsAutoNamespace(), &err_str);
+ const SymbolTable::Symbol* s =
+ ResolveSymbolCheckVisibility(transformed_reference, callsite, symbols, &err_str);
if (s) {
// The ID may not exist. This is fine because of the possibility of building
// against libraries without assigned IDs.
diff --git a/tools/aapt2/link/ReferenceLinker.h b/tools/aapt2/link/ReferenceLinker.h
index 7887915..b0b4945 100644
--- a/tools/aapt2/link/ReferenceLinker.h
+++ b/tools/aapt2/link/ReferenceLinker.h
@@ -36,12 +36,10 @@
ReferenceLinker() = default;
// Performs name mangling and looks up the resource in the symbol table. Uses the callsite's
- // package if the reference has no package name defined (implicit), or if auto_namespace is
- // set try looking in all avaliable packages for a symbol of that name.
+ // package if the reference has no package name defined (implicit).
// Returns nullptr if the symbol was not found.
static const SymbolTable::Symbol* ResolveSymbol(const Reference& reference,
- const CallSite& callsite, SymbolTable* symbols,
- bool auto_namespace);
+ const CallSite& callsite, SymbolTable* symbols);
// Performs name mangling and looks up the resource in the symbol table. If the symbol is not
// visible by the reference at the callsite, nullptr is returned.
@@ -49,7 +47,6 @@
static const SymbolTable::Symbol* ResolveSymbolCheckVisibility(const Reference& reference,
const CallSite& callsite,
SymbolTable* symbols,
- bool auto_namespace,
std::string* out_error);
// Same as ResolveSymbolCheckVisibility(), but also makes sure the symbol is an attribute.
@@ -57,14 +54,13 @@
static const SymbolTable::Symbol* ResolveAttributeCheckVisibility(const Reference& reference,
const CallSite& callsite,
SymbolTable* symbols,
- bool auto_namespace,
std::string* out_error);
// Resolves the attribute reference and returns an xml::AaptAttribute if successful.
// If resolution fails, outError holds the error message.
static Maybe<xml::AaptAttribute> CompileXmlAttribute(const Reference& reference,
const CallSite& callsite,
- SymbolTable* symbols, bool auto_namespace,
+ SymbolTable* symbols,
std::string* out_error);
// Writes the resource name to the DiagMessage, using the
diff --git a/tools/aapt2/link/ReferenceLinker_test.cpp b/tools/aapt2/link/ReferenceLinker_test.cpp
index 0b7b1ce..be38b96 100644
--- a/tools/aapt2/link/ReferenceLinker_test.cpp
+++ b/tools/aapt2/link/ReferenceLinker_test.cpp
@@ -267,7 +267,7 @@
std::string error;
const CallSite call_site{"com.app.test"};
const SymbolTable::Symbol* symbol = ReferenceLinker::ResolveSymbolCheckVisibility(
- *test::BuildReference("com.app.test:string/foo"), call_site, &table, false, &error);
+ *test::BuildReference("com.app.test:string/foo"), call_site, &table, &error);
ASSERT_THAT(symbol, NotNull());
EXPECT_TRUE(error.empty());
}
@@ -285,13 +285,13 @@
std::string error;
const CallSite call_site{"com.app.ext"};
- EXPECT_FALSE(ReferenceLinker::CompileXmlAttribute(*test::BuildReference("com.app.test:attr/foo"),
- call_site, &table, false, &error));
+ EXPECT_FALSE(ReferenceLinker::CompileXmlAttribute(
+ *test::BuildReference("com.app.test:attr/foo"), call_site, &table, &error));
EXPECT_FALSE(error.empty());
error = "";
ASSERT_TRUE(ReferenceLinker::CompileXmlAttribute(
- *test::BuildReference("com.app.test:attr/public_foo"), call_site, &table, false, &error));
+ *test::BuildReference("com.app.test:attr/public_foo"), call_site, &table, &error));
EXPECT_TRUE(error.empty());
}
@@ -303,74 +303,19 @@
.AddSymbol("com.app.lib:string/foo", ResourceId(0x7f010001))
.Build());
- const SymbolTable::Symbol* s = ReferenceLinker::ResolveSymbol(
- *test::BuildReference("string/foo"), CallSite{"com.app.test"}, &table, false);
+ const SymbolTable::Symbol* s = ReferenceLinker::ResolveSymbol(*test::BuildReference("string/foo"),
+ CallSite{"com.app.test"}, &table);
ASSERT_THAT(s, NotNull());
EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010000)));
s = ReferenceLinker::ResolveSymbol(*test::BuildReference("string/foo"), CallSite{"com.app.lib"},
- &table, false);
+ &table);
ASSERT_THAT(s, NotNull());
EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010001)));
EXPECT_THAT(ReferenceLinker::ResolveSymbol(*test::BuildReference("string/foo"),
- CallSite{"com.app.bad"}, &table, false),
+ CallSite{"com.app.bad"}, &table),
IsNull());
}
-TEST(ReferenceLinkerTest, AutomaticNamespace) {
- NameMangler mangler(NameManglerPolicy{"com.example.thislib"});
- SymbolTable table(&mangler);
- table.AppendSource(
- test::StaticSymbolSourceBuilder()
- .AddSymbol("com.example.thislib:string/thislib_string", ResourceId(0x7f010006))
- .AddSymbol("com.example.thislib:string/explicit_override_string", ResourceId(0x7f010007))
- .Build());
- // Lib2 is higher priority than lib1
- table.AppendSource(
- test::StaticSymbolSourceBuilder()
- .AddSymbol("com.example.lib2:string/lib2_string", ResourceId(0x7f010003))
- .AddSymbol("com.example.lib2:string/explicit_override_string", ResourceId(0x7f010004))
- .AddSymbol("com.example.lib2:string/implicit_override_string", ResourceId(0x7f010005))
- .Build());
- table.AppendSource(
- test::StaticSymbolSourceBuilder()
- .AddSymbol("com.example.lib1:string/explicit_override_string", ResourceId(0x7f010001))
- .AddSymbol("com.example.lib1:string/implicit_override_string", ResourceId(0x7f010002))
- .Build());
-
- // Sanity test: Local references are still fine.
- const SymbolTable::Symbol* s =
- ReferenceLinker::ResolveSymbol(*test::BuildReference("string/thislib_string"),
- CallSite{"com.example.thislib"}, &table, true);
- ASSERT_THAT(s, NotNull());
- EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010006)));
-
- // Local references are fine, even if clash with remote ones.
- s = ReferenceLinker::ResolveSymbol(*test::BuildReference("string/explicit_override_string"),
- CallSite{"com.example.thislib"}, &table, true);
- ASSERT_THAT(s, NotNull());
- EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010007)));
-
- // An unqualified reference to lib2 is rewritten
- s = ReferenceLinker::ResolveSymbol(*test::BuildReference("string/lib2_string"),
- CallSite{"com.example.thislib"}, &table, true);
- ASSERT_THAT(s, NotNull());
- EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010003)));
-
- // Qualified references are left alone.
- s = ReferenceLinker::ResolveSymbol(
- *test::BuildReference("com.example.lib2:string/explicit_override_string"),
- CallSite{"com.example.thislib"}, &table, true);
- ASSERT_THAT(s, NotNull());
- EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010004)));
-
- // Implicit overrides respect priority ordering.
- s = ReferenceLinker::ResolveSymbol(*test::BuildReference("string/implicit_override_string"),
- CallSite{"com.example.thislib"}, &table, true);
- ASSERT_THAT(s, NotNull());
- EXPECT_THAT(s->id, Eq(make_value<ResourceId>(0x7f010005)));
-
- //
-}
} // namespace aapt
diff --git a/tools/aapt2/link/XmlReferenceLinker.cpp b/tools/aapt2/link/XmlReferenceLinker.cpp
index 420a127..160ff92 100644
--- a/tools/aapt2/link/XmlReferenceLinker.cpp
+++ b/tools/aapt2/link/XmlReferenceLinker.cpp
@@ -97,8 +97,8 @@
attr_ref.private_reference = maybe_package.value().private_namespace;
std::string err_str;
- attr.compiled_attribute = ReferenceLinker::CompileXmlAttribute(
- attr_ref, callsite_, symbols_, context_->IsAutoNamespace(), &err_str);
+ attr.compiled_attribute =
+ ReferenceLinker::CompileXmlAttribute(attr_ref, callsite_, symbols_, &err_str);
if (!attr.compiled_attribute) {
DiagMessage error_msg(source);
diff --git a/tools/aapt2/link/XmlReferenceLinker_test.cpp b/tools/aapt2/link/XmlReferenceLinker_test.cpp
index d321f8f..ef99355 100644
--- a/tools/aapt2/link/XmlReferenceLinker_test.cpp
+++ b/tools/aapt2/link/XmlReferenceLinker_test.cpp
@@ -18,7 +18,6 @@
#include "test/Test.h"
-using ::testing::Eq;
using ::testing::IsNull;
using ::testing::NotNull;
@@ -71,29 +70,12 @@
.Build())
.AddPublicSymbol("com.app.test:attr/attr", ResourceId(0x7f010002),
test::AttributeBuilder().Build())
- .AddPublicSymbol("com.app.lib:string/lib_string", ResourceId(0x7f020003))
.Build())
.Build();
-
- auto_namespace_context_ =
- test::ContextBuilder()
- .SetCompilationPackage("com.app.test")
- .SetNameManglerPolicy(NameManglerPolicy{"com.app.test", {"com.android.support"}})
- .SetAutoNamespace(true)
- .AddSymbolSource(
- test::StaticSymbolSourceBuilder()
- .AddPublicSymbol("android:attr/text", ResourceId(0x01010003),
- test::AttributeBuilder()
- .SetTypeMask(android::ResTable_map::TYPE_STRING)
- .Build())
- .AddPublicSymbol("com.app.lib:string/lib_string", ResourceId(0x7f020003))
- .Build())
- .Build();
}
protected:
std::unique_ptr<IAaptContext> context_;
- std::unique_ptr<IAaptContext> auto_namespace_context_;
};
TEST_F(XmlReferenceLinkerTest, LinkBasicAttributes) {
@@ -213,31 +195,6 @@
EXPECT_EQ(make_value(ResourceId(0x7f020001)), ref->id);
}
-TEST_F(XmlReferenceLinkerTest, LinkAutoNamespaceResReference) {
- std::unique_ptr<xml::XmlResource> doc = test::BuildXmlDomForPackageName(context_.get(), R"(
- <View
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:text="@string/lib_string" />)");
-
- XmlReferenceLinker linker;
- // Should not link with auto-namespace support disabled.
- ASSERT_FALSE(linker.Consume(context_.get(), doc.get()));
- // Should link with auto-namespace enabled.
- ASSERT_TRUE(linker.Consume(auto_namespace_context_.get(), doc.get()));
-
- xml::Element* view_el = doc->root.get();
- ASSERT_THAT(view_el, NotNull());
-
- xml::Attribute* xml_attr = view_el->FindAttribute(xml::kSchemaAndroid, "text");
- ASSERT_THAT(xml_attr, NotNull());
- ASSERT_TRUE(xml_attr->compiled_attribute);
- EXPECT_EQ(make_value(ResourceId(0x01010003)), xml_attr->compiled_attribute.value().id);
- Reference* ref = ValueCast<Reference>(xml_attr->compiled_value.get());
- ASSERT_THAT(ref, NotNull());
- ASSERT_TRUE(ref->name);
- EXPECT_EQ(make_value(ResourceId(0x7f020003)), ref->id);
-}
-
TEST_F(XmlReferenceLinkerTest, LinkViewWithShadowedPackageAlias) {
std::unique_ptr<xml::XmlResource> doc = test::BuildXmlDomForPackageName(context_.get(), R"(
<View xmlns:app="http://schemas.android.com/apk/res/android" app:attr="@app:id/id">