]> git.saurik.com Git - android/aapt.git/commitdiff
am fb34490f: Merge "Fix writing text version of styleable IDs."
authorXavier Ducrohet <xav@android.com>
Wed, 26 Sep 2012 17:44:22 +0000 (10:44 -0700)
committerAndroid Git Automerger <android-git-automerger@android.com>
Wed, 26 Sep 2012 17:44:22 +0000 (10:44 -0700)
* commit 'fb34490f4dca7aac623fb9a80fe9a2371107a786':
  Fix writing text version of styleable IDs.

1  2 
Resource.cpp

diff --combined Resource.cpp
index 9c2e1b9127f1947c937cfb61eafb1df7c5354288,a52a9de8046f9c43c4614a923328b7187560bdd7..77168f948640fa57abbc70094ebf313e4c5be0af
@@@ -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<AaptFile>& layoutFile,
 -        const char* startTag, const KeyedVector<String8, NamespaceAttributePair>* tagAttrPairs)
 +        const char* startTag, const KeyedVector<String8, Vector<NamespaceAttributePair> >* tagAttrPairs)
  {
      status_t err;
      ResXMLTree tree;
          } 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<NamespaceAttributePair>& 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());
 +                    }
                  }
              }
          }
      return NO_ERROR;
  }
  
 -static void addTagAttrPair(KeyedVector<String8, NamespaceAttributePair>* dest,
 +static void addTagAttrPair(KeyedVector<String8, Vector<NamespaceAttributePair> >* 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<NamespaceAttributePair> 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<String8, NamespaceAttributePair> kLayoutTagAttrPairs;
 +    KeyedVector<String8, Vector<NamespaceAttributePair> > 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<String8, NamespaceAttributePair> kXmlTagAttrPairs;
 +    KeyedVector<String8, Vector<NamespaceAttributePair> > kXmlTagAttrPairs;
      addTagAttrPair(&kXmlTagAttrPairs, "PreferenceScreen", RESOURCES_ANDROID_NAMESPACE, "fragment");
      addTagAttrPair(&kXmlTagAttrPairs, "header", RESOURCES_ANDROID_NAMESPACE, "fragment");
  
          const sp<AaptDir>& d = dirs.itemAt(k);
          const String8& dirName = d->getLeaf();
          const char* startTag = NULL;
 -        const KeyedVector<String8, NamespaceAttributePair>* tagAttrPairs = NULL;
 +        const KeyedVector<String8, Vector<NamespaceAttributePair> >* 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)) {
      if (overlay.get()) {
          return writeProguardForLayouts(keep, overlay);
      }
 +
      return NO_ERROR;
  }