Loading startop/view_compiler/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ cc_library_host_static { defaults: ["viewcompiler_defaults"], defaults: ["viewcompiler_defaults"], srcs: [ srcs: [ "dex_builder.cc", "dex_builder.cc", "dex_layout_compiler.cc", "java_lang_builder.cc", "java_lang_builder.cc", "tinyxml_layout_parser.cc", "tinyxml_layout_parser.cc", "util.cc", "util.cc", Loading startop/view_compiler/dex_builder_test/Android.bp +16 −2 Original line number Original line Diff line number Diff line Loading @@ -14,16 +14,30 @@ // limitations under the License. // limitations under the License. // // genrule { name: "generate_compiled_layout", tools: [":viewcompiler"], cmd: "$(location :viewcompiler) $(in) --dex --out $(out) --package android.startop.test", srcs: ["res/layout/layout1.xml"], out: [ "layout1.dex", ], } android_test { android_test { name: "dex-builder-test", name: "dex-builder-test", srcs: ["src/android/startop/test/DexBuilderTest.java"], srcs: [ "src/android/startop/test/DexBuilderTest.java", "src/android/startop/test/LayoutCompilerTest.java", ], sdk_version: "current", sdk_version: "current", data: [":generate_dex_testcases"], data: [":generate_dex_testcases", ":generate_compiled_layout"], static_libs: [ static_libs: [ "android-support-test", "android-support-test", "guava", "guava", ], ], manifest: "AndroidManifest.xml", manifest: "AndroidManifest.xml", resource_dirs: ["res"], test_config: "AndroidTest.xml", test_config: "AndroidTest.xml", test_suites: ["general-tests"], test_suites: ["general-tests"], } } startop/view_compiler/dex_builder_test/AndroidTest.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ <option name="cleanup" value="true" /> <option name="cleanup" value="true" /> <option name="push" value="trivial.dex->/data/local/tmp/dex-builder-test/trivial.dex" /> <option name="push" value="trivial.dex->/data/local/tmp/dex-builder-test/trivial.dex" /> <option name="push" value="simple.dex->/data/local/tmp/dex-builder-test/simple.dex" /> <option name="push" value="simple.dex->/data/local/tmp/dex-builder-test/simple.dex" /> <option name="push" value="layout1.dex->/data/local/tmp/dex-builder-test/layout1.dex" /> </target_preparer> </target_preparer> <test class="com.android.tradefed.testtype.AndroidJUnitTest" > <test class="com.android.tradefed.testtype.AndroidJUnitTest" > Loading startop/view_compiler/dex_builder_test/res/layout/layout1.xml 0 → 100644 +17 −0 Original line number Original line 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:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" android:gravity="center"> <Button android:layout_width="match_parent" android:layout_height="match_parent"/> <Button android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> startop/view_compiler/dex_builder_test/src/android/startop/test/LayoutCompilerTest.java 0 → 100644 +46 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package android.startop.test; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.view.View; import com.google.common.io.ByteStreams; import dalvik.system.InMemoryDexClassLoader; import dalvik.system.PathClassLoader; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.nio.ByteBuffer; import org.junit.Assert; import org.junit.Test; // Adding tests here requires changes in several other places. See README.md in // the view_compiler directory for more information. public class LayoutCompilerTest { static ClassLoader loadDexFile(String filename) throws Exception { return new PathClassLoader("/data/local/tmp/dex-builder-test/" + filename, ClassLoader.getSystemClassLoader()); } @Test public void loadAndInflaterLayout1() throws Exception { ClassLoader dex_file = loadDexFile("layout1.dex"); Class compiled_view = dex_file.loadClass("android.startop.test.CompiledView"); Method layout1 = compiled_view.getMethod("layout1", Context.class, int.class); Context context = InstrumentationRegistry.getTargetContext(); layout1.invoke(null, context, R.layout.layout1); } } Loading
startop/view_compiler/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ cc_library_host_static { defaults: ["viewcompiler_defaults"], defaults: ["viewcompiler_defaults"], srcs: [ srcs: [ "dex_builder.cc", "dex_builder.cc", "dex_layout_compiler.cc", "java_lang_builder.cc", "java_lang_builder.cc", "tinyxml_layout_parser.cc", "tinyxml_layout_parser.cc", "util.cc", "util.cc", Loading
startop/view_compiler/dex_builder_test/Android.bp +16 −2 Original line number Original line Diff line number Diff line Loading @@ -14,16 +14,30 @@ // limitations under the License. // limitations under the License. // // genrule { name: "generate_compiled_layout", tools: [":viewcompiler"], cmd: "$(location :viewcompiler) $(in) --dex --out $(out) --package android.startop.test", srcs: ["res/layout/layout1.xml"], out: [ "layout1.dex", ], } android_test { android_test { name: "dex-builder-test", name: "dex-builder-test", srcs: ["src/android/startop/test/DexBuilderTest.java"], srcs: [ "src/android/startop/test/DexBuilderTest.java", "src/android/startop/test/LayoutCompilerTest.java", ], sdk_version: "current", sdk_version: "current", data: [":generate_dex_testcases"], data: [":generate_dex_testcases", ":generate_compiled_layout"], static_libs: [ static_libs: [ "android-support-test", "android-support-test", "guava", "guava", ], ], manifest: "AndroidManifest.xml", manifest: "AndroidManifest.xml", resource_dirs: ["res"], test_config: "AndroidTest.xml", test_config: "AndroidTest.xml", test_suites: ["general-tests"], test_suites: ["general-tests"], } }
startop/view_compiler/dex_builder_test/AndroidTest.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ <option name="cleanup" value="true" /> <option name="cleanup" value="true" /> <option name="push" value="trivial.dex->/data/local/tmp/dex-builder-test/trivial.dex" /> <option name="push" value="trivial.dex->/data/local/tmp/dex-builder-test/trivial.dex" /> <option name="push" value="simple.dex->/data/local/tmp/dex-builder-test/simple.dex" /> <option name="push" value="simple.dex->/data/local/tmp/dex-builder-test/simple.dex" /> <option name="push" value="layout1.dex->/data/local/tmp/dex-builder-test/layout1.dex" /> </target_preparer> </target_preparer> <test class="com.android.tradefed.testtype.AndroidJUnitTest" > <test class="com.android.tradefed.testtype.AndroidJUnitTest" > Loading
startop/view_compiler/dex_builder_test/res/layout/layout1.xml 0 → 100644 +17 −0 Original line number Original line 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:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" android:gravity="center"> <Button android:layout_width="match_parent" android:layout_height="match_parent"/> <Button android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
startop/view_compiler/dex_builder_test/src/android/startop/test/LayoutCompilerTest.java 0 → 100644 +46 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package android.startop.test; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.view.View; import com.google.common.io.ByteStreams; import dalvik.system.InMemoryDexClassLoader; import dalvik.system.PathClassLoader; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.nio.ByteBuffer; import org.junit.Assert; import org.junit.Test; // Adding tests here requires changes in several other places. See README.md in // the view_compiler directory for more information. public class LayoutCompilerTest { static ClassLoader loadDexFile(String filename) throws Exception { return new PathClassLoader("/data/local/tmp/dex-builder-test/" + filename, ClassLoader.getSystemClassLoader()); } @Test public void loadAndInflaterLayout1() throws Exception { ClassLoader dex_file = loadDexFile("layout1.dex"); Class compiled_view = dex_file.loadClass("android.startop.test.CompiledView"); Method layout1 = compiled_view.getMethod("layout1", Context.class, int.class); Context context = InstrumentationRegistry.getTargetContext(); layout1.invoke(null, context, R.layout.layout1); } }