Loading core/jni/android_util_AssetManager.cpp +4 −23 Original line number Diff line number Diff line Loading @@ -1324,21 +1324,7 @@ static jboolean android_content_AssetManager_applyStyle(JNIEnv* env, jobject cla config.density = 0; // Skip through XML attributes until the end or the next possible match. // We make two assumptions about the order of attributes: // 1) Among attributes with the same package ID, the attributes are // sorted by increasing resource ID. // 2) Groups of attributes with the same package ID are in the same // order. // 3) The same sorting is applied to the input attributes as is // to the attributes in the XML. // // ex: 02010000, 02010001, 010100f4, 010100f5 // // The total order of attributes (including package ID) can not be linear // as shared libraries get assigned dynamic package IDs at runtime, which // may break the sort order established at build time. while (ix < NX && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(curXmlAttr) || curIdent > curXmlAttr)) { while (ix < NX && curIdent > curXmlAttr) { ix++; curXmlAttr = xmlParser->getAttributeNameResID(ix); } Loading @@ -1353,9 +1339,7 @@ static jboolean android_content_AssetManager_applyStyle(JNIEnv* env, jobject cla } // Skip through the style values until the end or the next possible match. while (styleEnt < endStyleEnt && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(styleEnt->map.name.ident) || curIdent > styleEnt->map.name.ident)) { while (styleEnt < endStyleEnt && curIdent > styleEnt->map.name.ident) { styleEnt++; } // Retrieve the current style attribute if it matches, and step to next. Loading @@ -1371,9 +1355,7 @@ static jboolean android_content_AssetManager_applyStyle(JNIEnv* env, jobject cla } // Skip through the default style values until the end or the next possible match. while (defStyleEnt < endDefStyleEnt && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(defStyleEnt->map.name.ident) || curIdent > defStyleEnt->map.name.ident)) { while (defStyleEnt < endDefStyleEnt && curIdent > defStyleEnt->map.name.ident) { defStyleEnt++; } // Retrieve the current default style attribute if it matches, and step to next. Loading Loading @@ -1535,8 +1517,7 @@ static jboolean android_content_AssetManager_retrieveAttributes(JNIEnv* env, job config.density = 0; // Skip through XML attributes until the end or the next possible match. while (ix < NX && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(curXmlAttr) || curIdent > curXmlAttr)) { while (ix < NX && curIdent > curXmlAttr) { ix++; curXmlAttr = xmlParser->getAttributeNameResID(ix); } Loading libs/androidfw/ResourceTypes.cpp +1 −5 Original line number Diff line number Diff line Loading @@ -1185,11 +1185,7 @@ uint32_t ResXMLParser::getAttributeNameResID(size_t idx) const { int32_t id = getAttributeNameID(idx); if (id >= 0 && (size_t)id < mTree.mNumResIds) { uint32_t resId = dtohl(mTree.mResIds[id]); if (mTree.mDynamicRefTable == NULL || mTree.mDynamicRefTable->lookupResourceId(&resId) == NO_ERROR) { return resId; } return dtohl(mTree.mResIds[id]); } return 0; } Loading tests/SharedLibrary/lib/res/layout/main.xmldeleted 100644 → 0 +0 −26 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/sample_layout"/> <com.google.android.test.shared_library.AddressView xmlns:address="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="#03a9f4" address:name="Librarian L" address:streetNumber="21" address:streetName="Android Lane" address:city="AndroidVille" address:state="OS" address:zip="12345" address:country="Mobile"/> </LinearLayout> tests/SharedLibrary/lib/res/values/strings.xml +0 −1 Original line number Diff line number Diff line Loading @@ -28,5 +28,4 @@ </string-array> <string name="racoon">Racoon</string> <string name="sample_layout">This is an example of a layout this library provides.</string> </resources> tests/SharedLibrary/lib/src/com/google/android/test/shared_library/ActivityMain.java +5 −1 Original line number Diff line number Diff line Loading @@ -18,11 +18,15 @@ package com.google.android.test.shared_library; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class ActivityMain extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView content = new TextView(this); content.setText("Dummy main entry for this apk; not really needed..."); setContentView(content); } } Loading
core/jni/android_util_AssetManager.cpp +4 −23 Original line number Diff line number Diff line Loading @@ -1324,21 +1324,7 @@ static jboolean android_content_AssetManager_applyStyle(JNIEnv* env, jobject cla config.density = 0; // Skip through XML attributes until the end or the next possible match. // We make two assumptions about the order of attributes: // 1) Among attributes with the same package ID, the attributes are // sorted by increasing resource ID. // 2) Groups of attributes with the same package ID are in the same // order. // 3) The same sorting is applied to the input attributes as is // to the attributes in the XML. // // ex: 02010000, 02010001, 010100f4, 010100f5 // // The total order of attributes (including package ID) can not be linear // as shared libraries get assigned dynamic package IDs at runtime, which // may break the sort order established at build time. while (ix < NX && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(curXmlAttr) || curIdent > curXmlAttr)) { while (ix < NX && curIdent > curXmlAttr) { ix++; curXmlAttr = xmlParser->getAttributeNameResID(ix); } Loading @@ -1353,9 +1339,7 @@ static jboolean android_content_AssetManager_applyStyle(JNIEnv* env, jobject cla } // Skip through the style values until the end or the next possible match. while (styleEnt < endStyleEnt && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(styleEnt->map.name.ident) || curIdent > styleEnt->map.name.ident)) { while (styleEnt < endStyleEnt && curIdent > styleEnt->map.name.ident) { styleEnt++; } // Retrieve the current style attribute if it matches, and step to next. Loading @@ -1371,9 +1355,7 @@ static jboolean android_content_AssetManager_applyStyle(JNIEnv* env, jobject cla } // Skip through the default style values until the end or the next possible match. while (defStyleEnt < endDefStyleEnt && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(defStyleEnt->map.name.ident) || curIdent > defStyleEnt->map.name.ident)) { while (defStyleEnt < endDefStyleEnt && curIdent > defStyleEnt->map.name.ident) { defStyleEnt++; } // Retrieve the current default style attribute if it matches, and step to next. Loading Loading @@ -1535,8 +1517,7 @@ static jboolean android_content_AssetManager_retrieveAttributes(JNIEnv* env, job config.density = 0; // Skip through XML attributes until the end or the next possible match. while (ix < NX && (Res_GETPACKAGE(curIdent) != Res_GETPACKAGE(curXmlAttr) || curIdent > curXmlAttr)) { while (ix < NX && curIdent > curXmlAttr) { ix++; curXmlAttr = xmlParser->getAttributeNameResID(ix); } Loading
libs/androidfw/ResourceTypes.cpp +1 −5 Original line number Diff line number Diff line Loading @@ -1185,11 +1185,7 @@ uint32_t ResXMLParser::getAttributeNameResID(size_t idx) const { int32_t id = getAttributeNameID(idx); if (id >= 0 && (size_t)id < mTree.mNumResIds) { uint32_t resId = dtohl(mTree.mResIds[id]); if (mTree.mDynamicRefTable == NULL || mTree.mDynamicRefTable->lookupResourceId(&resId) == NO_ERROR) { return resId; } return dtohl(mTree.mResIds[id]); } return 0; } Loading
tests/SharedLibrary/lib/res/layout/main.xmldeleted 100644 → 0 +0 −26 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/sample_layout"/> <com.google.android.test.shared_library.AddressView xmlns:address="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="#03a9f4" address:name="Librarian L" address:streetNumber="21" address:streetName="Android Lane" address:city="AndroidVille" address:state="OS" address:zip="12345" address:country="Mobile"/> </LinearLayout>
tests/SharedLibrary/lib/res/values/strings.xml +0 −1 Original line number Diff line number Diff line Loading @@ -28,5 +28,4 @@ </string-array> <string name="racoon">Racoon</string> <string name="sample_layout">This is an example of a layout this library provides.</string> </resources>
tests/SharedLibrary/lib/src/com/google/android/test/shared_library/ActivityMain.java +5 −1 Original line number Diff line number Diff line Loading @@ -18,11 +18,15 @@ package com.google.android.test.shared_library; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class ActivityMain extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView content = new TextView(this); content.setText("Dummy main entry for this apk; not really needed..."); setContentView(content); } }