From: Jean-Baptiste Queru Date: Thu, 23 Feb 2012 20:38:12 +0000 (-0800) Subject: Merge "Fix for issue 9656 - custom xml attributes in Android Libraries" X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/bb8601b61555402310166405ba7a35f3a20c1c61?ds=inline;hp=-c Merge "Fix for issue 9656 - custom xml attributes in Android Libraries" --- bb8601b61555402310166405ba7a35f3a20c1c61 diff --combined XMLNode.cpp index c0d7427,7d14fe4..d9782b0 --- a/XMLNode.cpp +++ b/XMLNode.cpp @@@ -21,6 -21,7 +21,7 @@@ const char* const RESOURCES_ROOT_NAMESPACE = "http://schemas.android.com/apk/res/"; const char* const RESOURCES_ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android"; + const char* const RESOURCES_AUTO_PACKAGE_NAMESPACE = "http://schemas.android.com/apk/res/auto"; const char* const RESOURCES_ROOT_PRV_NAMESPACE = "http://schemas.android.com/apk/prv/res/"; const char* const XLIFF_XMLNS = "urn:oasis:names:tc:xliff:document:1.2"; @@@ -44,15 -45,20 +45,20 @@@ bool isWhitespace(const char16_t* str } static const String16 RESOURCES_PREFIX(RESOURCES_ROOT_NAMESPACE); + static const String16 RESOURCES_PREFIX_AUTO_PACKAGE(RESOURCES_AUTO_PACKAGE_NAMESPACE); static const String16 RESOURCES_PRV_PREFIX(RESOURCES_ROOT_PRV_NAMESPACE); - String16 getNamespaceResourcePackage(String16 namespaceUri, bool* outIsPublic) + String16 getNamespaceResourcePackage(String16 appPackage, String16 namespaceUri, bool* outIsPublic) { //printf("%s starts with %s?\n", String8(namespaceUri).string(), // String8(RESOURCES_PREFIX).string()); size_t prefixSize; bool isPublic = true; - if (namespaceUri.startsWith(RESOURCES_PREFIX)) { + if(namespaceUri.startsWith(RESOURCES_PREFIX_AUTO_PACKAGE)) { + NOISY(printf("Using default application package: %s -> %s\n", String8(namespaceUri).string(), String8(appPackage).string())); + isPublic = true; + return appPackage; + } else if (namespaceUri.startsWith(RESOURCES_PREFIX)) { prefixSize = RESOURCES_PREFIX.size(); } else if (namespaceUri.startsWith(RESOURCES_PRV_PREFIX)) { isPublic = false; @@@ -504,7 -510,8 +510,7 @@@ void printXMLBlock(ResXMLTree* block namespaces.pop(); } else if (code == ResXMLTree::TEXT) { size_t len; - printf("%sC: \"%s\"\n", prefix.string(), ResTable::normalizeForOutput( - String8(block->getText(&len)).string()).string()); + printf("%sC: \"%s\"\n", prefix.string(), String8(block->getText(&len)).string()); } } @@@ -922,7 -929,7 +928,7 @@@ status_t XMLNode::assignResourceIds(con const attribute_entry& e = mAttributes.itemAt(i); if (e.ns.size() <= 0) continue; bool nsIsPublic; - String16 pkg(getNamespaceResourcePackage(e.ns, &nsIsPublic)); + String16 pkg(getNamespaceResourcePackage(String16(assets->getPackage()), e.ns, &nsIsPublic)); NOISY(printf("Elem %s %s=\"%s\": namespace(%s) %s ===> %s\n", String8(getElementName()).string(), String8(e.name).string(),