From: Xavier Ducrohet Date: Wed, 26 Sep 2012 17:44:22 +0000 (-0700) Subject: am fb34490f: Merge "Fix writing text version of styleable IDs." X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/a3b8cf416a2a923c44623cb860bbc00547a4ea46?hp=-c am fb34490f: Merge "Fix writing text version of styleable IDs." * commit 'fb34490f4dca7aac623fb9a80fe9a2371107a786': Fix writing text version of styleable IDs. --- a3b8cf416a2a923c44623cb860bbc00547a4ea46 diff --combined Resource.cpp index 9c2e1b9,a52a9de..77168f9 --- a/Resource.cpp +++ b/Resource.cpp @@@ -1946,7 -1946,7 +1946,7 @@@ static status_t writeTextLayoutClasses const bool pub = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0; fprintf(fp, - "int styleable.%s_%s %d\n", + "int styleable %s_%s %d\n", nclassName.string(), String8(name).string(), (int)pos); } @@@ -2415,7 -2415,7 +2415,7 @@@ struct NamespaceAttributePair status_t writeProguardForXml(ProguardKeepSet* keep, const sp& layoutFile, - const char* startTag, const KeyedVector* tagAttrPairs) + const char* startTag, const KeyedVector >* tagAttrPairs) { status_t err; ResXMLTree tree; @@@ -2459,21 -2459,17 +2459,21 @@@ } else if (tagAttrPairs != NULL) { ssize_t tagIndex = tagAttrPairs->indexOfKey(tag); if (tagIndex >= 0) { - const NamespaceAttributePair& nsAttr = tagAttrPairs->valueAt(tagIndex); - ssize_t attrIndex = tree.indexOfAttribute(nsAttr.ns, nsAttr.attr); - if (attrIndex < 0) { - // fprintf(stderr, "%s:%d: <%s> does not have attribute %s:%s.\n", - // layoutFile->getPrintableSource().string(), tree.getLineNumber(), - // tag.string(), nsAttr.ns, nsAttr.attr); - } else { - size_t len; - addProguardKeepRule(keep, - String8(tree.getAttributeStringValue(attrIndex, &len)), NULL, - layoutFile->getPrintableSource(), tree.getLineNumber()); + const Vector& nsAttrVector = tagAttrPairs->valueAt(tagIndex); + for (size_t i = 0; i < nsAttrVector.size(); i++) { + const NamespaceAttributePair& nsAttr = nsAttrVector[i]; + + ssize_t attrIndex = tree.indexOfAttribute(nsAttr.ns, nsAttr.attr); + if (attrIndex < 0) { + // fprintf(stderr, "%s:%d: <%s> does not have attribute %s:%s.\n", + // layoutFile->getPrintableSource().string(), tree.getLineNumber(), + // tag.string(), nsAttr.ns, nsAttr.attr); + } else { + size_t len; + addProguardKeepRule(keep, + String8(tree.getAttributeStringValue(attrIndex, &len)), NULL, + layoutFile->getPrintableSource(), tree.getLineNumber()); + } } } } @@@ -2489,18 -2485,9 +2489,18 @@@ return NO_ERROR; } -static void addTagAttrPair(KeyedVector* dest, +static void addTagAttrPair(KeyedVector >* dest, const char* tag, const char* ns, const char* attr) { - dest->add(String8(tag), NamespaceAttributePair(ns, attr)); + String8 tagStr(tag); + ssize_t index = dest->indexOfKey(tagStr); + + if (index < 0) { + Vector vector; + vector.add(NamespaceAttributePair(ns, attr)); + dest->add(tagStr, vector); + } else { + dest->editValueAt(index).add(NamespaceAttributePair(ns, attr)); + } } status_t @@@ -2509,13 -2496,13 +2509,13 @@@ writeProguardForLayouts(ProguardKeepSet status_t err; // tag:attribute pairs that should be checked in layout files. - KeyedVector kLayoutTagAttrPairs; + KeyedVector > kLayoutTagAttrPairs; addTagAttrPair(&kLayoutTagAttrPairs, "view", NULL, "class"); addTagAttrPair(&kLayoutTagAttrPairs, "fragment", NULL, "class"); addTagAttrPair(&kLayoutTagAttrPairs, "fragment", RESOURCES_ANDROID_NAMESPACE, "name"); // tag:attribute pairs that should be checked in xml files. - KeyedVector kXmlTagAttrPairs; + KeyedVector > kXmlTagAttrPairs; addTagAttrPair(&kXmlTagAttrPairs, "PreferenceScreen", RESOURCES_ANDROID_NAMESPACE, "fragment"); addTagAttrPair(&kXmlTagAttrPairs, "header", RESOURCES_ANDROID_NAMESPACE, "fragment"); @@@ -2525,7 -2512,7 +2525,7 @@@ const sp& d = dirs.itemAt(k); const String8& dirName = d->getLeaf(); const char* startTag = NULL; - const KeyedVector* tagAttrPairs = NULL; + const KeyedVector >* tagAttrPairs = NULL; if ((dirName == String8("layout")) || (strncmp(dirName.string(), "layout-", 7) == 0)) { tagAttrPairs = &kLayoutTagAttrPairs; } else if ((dirName == String8("xml")) || (strncmp(dirName.string(), "xml-", 4) == 0)) { @@@ -2557,7 -2544,6 +2557,7 @@@ if (overlay.get()) { return writeProguardForLayouts(keep, overlay); } + return NO_ERROR; }