Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c31debe0 authored by Eric Holk's avatar Eric Holk Committed by android-build-merger
Browse files

Merge "[view compiler] Add XML to DEX compilation" am: d426ee84

am: 755467bb

Change-Id: I32e325db7d9176910e271b721c0adf1b98d1a688
parents 4d3d43d0 755467bb
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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",
+16 −2
Original line number Original line Diff line number Diff line
@@ -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"],
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -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" >
+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>
+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