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

Commit d140c09d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Introduce new InflatingEmojiListActivity for JankTest."

parents 0785389f 47bc948e
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -201,6 +201,36 @@
            </intent-filter>
        </activity>

        <activity-alias
            android:name=".InflatingEmojiListActivity"
            android:label="Inflation/Inflating ListView with Emoji"
            android:targetActivity=".InflatingListActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="com.android.test.uibench.TEST" />
            </intent-filter>
        </activity-alias>

        <activity-alias
            android:name=".InflatingHanListActivity"
            android:label="Inflation/Inflating ListView with Han Characters"
            android:targetActivity=".InflatingListActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="com.android.test.uibench.TEST" />
            </intent-filter>
        </activity-alias>

        <activity-alias
            android:name=".InflatingLongStringListActivity"
            android:label="Inflation/Inflating ListView with long string"
            android:targetActivity=".InflatingListActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="com.android.test.uibench.TEST" />
            </intent-filter>
        </activity-alias>

        <!-- Text -->
        <activity
            android:name=".EditTextTypeActivity"
+26 −2
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.test.uibench;

import android.content.ComponentName;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
@@ -23,10 +24,33 @@ import android.widget.ListAdapter;
import com.android.test.uibench.listview.CompatListActivity;

public class InflatingListActivity extends CompatListActivity {
    private static final String PACKAGE_NAME = "com.android.test.uibench";
    private static final ComponentName LATIN_WORDS =
            ComponentName.createRelative(PACKAGE_NAME, ".InflatingListActivity");
    private static final ComponentName EMOJI =
            ComponentName.createRelative(PACKAGE_NAME, ".InflatingEmojiListActivity");
    private static final ComponentName HAN =
            ComponentName.createRelative(PACKAGE_NAME, ".InflatingHanListActivity");
    private static final ComponentName LONG_STRING =
            ComponentName.createRelative(PACKAGE_NAME, ".InflatingLongStringListActivity");
    @Override
    protected ListAdapter createListAdapter() {
        return new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, TextUtils.buildSimpleStringList()) {
        final ComponentName targetComponent = getIntent().getComponent();

        final String[] testStrings;
        if (targetComponent.equals(LATIN_WORDS)) {
            testStrings = TextUtils.buildSimpleStringList();
        } else if (targetComponent.equals(EMOJI)) {
            testStrings = TextUtils.buildEmojiStringList();
        } else if (targetComponent.equals(HAN)) {
            testStrings = TextUtils.buildHanStringList();
        } else if (targetComponent.equals(LONG_STRING)) {
            testStrings = TextUtils.buildLongStringList();
        } else {
            throw new RuntimeException("Unknown Component: " + targetComponent);
        }

        return new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, testStrings) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // pathological getView behavior: drop convertView on the floor to force inflation
+73 −1
Original line number Diff line number Diff line
@@ -15,11 +15,24 @@
 */
package com.android.test.uibench;

import android.icu.text.UnicodeSet;
import android.icu.text.UnicodeSetIterator;

import java.util.ArrayList;
import java.util.Random;

public class TextUtils {
    private static final int STRING_COUNT = 200;
    private static final int SIMPLE_STRING_LENGTH = 10;
    private static final int SIMPLE_STRING_LENGTH = 10;  // in code points

    private static String[] UnicodeSetToArray(UnicodeSet set) {
        final UnicodeSetIterator iterator = new UnicodeSetIterator(set);
        final ArrayList<String> out = new ArrayList<>(set.size());
        while (iterator.next()) {
            out.add(iterator.getString());
        }
        return out.toArray(new String[out.size()]);
    }

    /**
     * Create word of random assortment of lower/upper case letters
@@ -34,10 +47,34 @@ public class TextUtils {
        return result;
    }

    /**
     * Create word from a random assortment of a given set of codepoints, given as strings.
     */
    private static String randomWordFromStringSet(Random random, int length, String[] stringSet) {
        final StringBuilder sb = new StringBuilder(length);
        final int setLength = stringSet.length;
        for (int j = 0; j < length; j++) {
            sb.append(stringSet[random.nextInt(setLength)]);
        }
        return sb.toString();
    }

    public static String[] buildSimpleStringList() {
        return buildSimpleStringList(SIMPLE_STRING_LENGTH);
    }

    public static String[] buildEmojiStringList() {
        return buildEmojiStringList(SIMPLE_STRING_LENGTH);
    }

    public static String[] buildHanStringList() {
        return buildHanStringList(SIMPLE_STRING_LENGTH);
    }

    public static String[] buildLongStringList() {
        return buildLongStringList(SIMPLE_STRING_LENGTH);
    }

    public static String[] buildSimpleStringList(int stringLength) {
        String[] strings = new String[STRING_COUNT];
        Random random = new Random(0);
@@ -47,6 +84,41 @@ public class TextUtils {
        return strings;
    }

    private static String[] buildStringListFromUnicodeSet(int stringLength, UnicodeSet set) {
        final String[] strings = new String[STRING_COUNT];
        final Random random = new Random(0);
        final String[] stringSet = UnicodeSetToArray(set);
        for (int i = 0; i < strings.length; i++) {
            strings[i] = randomWordFromStringSet(random, stringLength, stringSet);
        }
        return strings;
    }

    public static String[] buildEmojiStringList(int stringLength) {
        return buildStringListFromUnicodeSet(stringLength, new UnicodeSet("[:emoji:]"));
    }

    public static String[] buildHanStringList(int stringLength) {
        return buildStringListFromUnicodeSet(stringLength, new UnicodeSet("[\\u4E00-\\u9FA0]"));
    }

    public static String[] buildLongStringList(int stringLength) {
        final int WORD_COUNT = 100;
        final String[] strings = new String[STRING_COUNT];
        final Random random = new Random(0);
        for (int i = 0; i < strings.length; i++) {
            final StringBuilder sb = new StringBuilder((stringLength + 1) * WORD_COUNT);
            for (int j = 0; j < WORD_COUNT; ++j) {
                if (j != 0) {
                    sb.append(' ');
                }
                sb.append(randomWord(random, stringLength));
            }
            strings[i] = sb.toString();
        }
        return strings;
    }

    // a small number of strings reused frequently, expected to hit
    // in the word-granularity text layout cache
    static final String[] CACHE_HIT_STRINGS = new String[] {