Merge QP1A.180823.001
Change-Id: Ia2d6fa811b3c57185c1975db603d59e6eaef73fc
diff --git a/tools/aapt2/Debug.cpp b/tools/aapt2/Debug.cpp
index f064cb1..0a517ab 100644
--- a/tools/aapt2/Debug.cpp
+++ b/tools/aapt2/Debug.cpp
@@ -408,6 +408,41 @@
}
}
+void Debug::DumpResStringPool(const android::ResStringPool* pool, text::Printer* printer) {
+ using namespace android;
+
+ if (pool->getError() == NO_INIT) {
+ printer->Print("String pool is unitialized.\n");
+ return;
+ } else if (pool->getError() != NO_ERROR) {
+ printer->Print("String pool is corrupt/invalid.\n");
+ return;
+ }
+
+ SortedVector<const void*> uniqueStrings;
+ const size_t N = pool->size();
+ for (size_t i=0; i<N; i++) {
+ size_t len;
+ if (pool->isUTF8()) {
+ uniqueStrings.add(pool->string8At(i, &len));
+ } else {
+ uniqueStrings.add(pool->stringAt(i, &len));
+ }
+ }
+
+ printer->Print(StringPrintf("String pool of %zd unique %s %s strings, %zd entries and %zd styles "
+ "using %zd bytes:\n", uniqueStrings.size(),
+ pool->isUTF8() ? "UTF-8" : "UTF-16",
+ pool->isSorted() ? "sorted" : "non-sorted", N, pool->styleCount(),
+ pool->bytes()));
+
+ const size_t NS = pool->size();
+ for (size_t s=0; s<NS; s++) {
+ String8 str = pool->string8ObjectAt(s);
+ printer->Print(StringPrintf("String #%zd : %s\n", s, str.string()));
+ }
+}
+
namespace {
class XmlPrinter : public xml::ConstVisitor {