summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiddle Hsu <riddlehsu@google.com>2020-05-14 16:07:51 +0800
committerRiddle Hsu <riddlehsu@google.com>2020-05-14 20:44:19 +0800
commit3b0ceec95bba2b17a37f3e9e83966daeef35397d (patch)
tree4dd332d60dfa3822d7b5ce8dd0c866af8917358e
parenta08db2de291dc771b55e9bf3cacc51a6d2b2bc35 (diff)
Make sure uibench test app load list content
If the test app is relaunched by configuration change (e.g. the testing device is put in landscape), the fragment will be kept but its content needs to reload. Otherwise it will show a loading animation that causes unexpected frame count. This change makes ShadowGridActivity, ClippedListActivity, MainActivity inherit CompatListActivity that sets new list adapter to the existing fragment. So the list can show correct content. Bug: 156473870 Test: atest UiBenchJankTests Change-Id: Ie608baa7362642554c014f805c797d09f4cf3117
-rw-r--r--tests/UiBench/src/com/android/test/uibench/ClippedListActivity.java29
-rw-r--r--tests/UiBench/src/com/android/test/uibench/MainActivity.java36
-rw-r--r--tests/UiBench/src/com/android/test/uibench/ShadowGridActivity.java28
-rw-r--r--tests/UiBench/src/com/android/test/uibench/listview/CompatListActivity.java22
-rw-r--r--tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java22
5 files changed, 81 insertions, 56 deletions
diff --git a/tests/UiBench/src/com/android/test/uibench/ClippedListActivity.java b/tests/UiBench/src/com/android/test/uibench/ClippedListActivity.java
index 2bf6040351b8..e21dec32e7ca 100644
--- a/tests/UiBench/src/com/android/test/uibench/ClippedListActivity.java
+++ b/tests/UiBench/src/com/android/test/uibench/ClippedListActivity.java
@@ -15,27 +15,24 @@
*/
package com.android.test.uibench;
-import android.os.Bundle;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import androidx.appcompat.app.ActionBarDrawerToggle;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.ListFragment;
+
+import com.android.test.uibench.listview.CompatListActivity;
import com.google.android.material.navigation.NavigationView;
-public class ClippedListActivity extends AppCompatActivity
+public class ClippedListActivity extends CompatListActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ protected void initializeActivity() {
setContentView(R.layout.activity_navigation_drawer);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@@ -48,15 +45,17 @@ public class ClippedListActivity extends AppCompatActivity
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
+ }
+
+ @Override
+ protected ListAdapter createListAdapter() {
+ return new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
+ TextUtils.buildSimpleStringList(40));
+ }
- FragmentManager fm = getSupportFragmentManager();
- if (fm.findFragmentById(android.R.id.content) == null) {
- ListFragment listFragment = new ListFragment();
- ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
- TextUtils.buildSimpleStringList(40));
- listFragment.setListAdapter(adapter);
- fm.beginTransaction().add(R.id.app_bar_layout, listFragment).commit();
- }
+ @Override
+ protected int getListFragmentContainerViewId() {
+ return R.id.app_bar_layout;
}
@Override
diff --git a/tests/UiBench/src/com/android/test/uibench/MainActivity.java b/tests/UiBench/src/com/android/test/uibench/MainActivity.java
index 0a7aa4281b00..77a6c321acf1 100644
--- a/tests/UiBench/src/com/android/test/uibench/MainActivity.java
+++ b/tests/UiBench/src/com/android/test/uibench/MainActivity.java
@@ -19,13 +19,15 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.ListFragment;
-import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
+import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
+import androidx.fragment.app.ListFragment;
+
+import com.android.test.uibench.listview.CompatListActivity;
+
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
@@ -34,10 +36,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-public class MainActivity extends AppCompatActivity {
+public class MainActivity extends CompatListActivity {
private static final String EXTRA_PATH = "activity_path";
private static final String CATEGORY_HWUI_TEST = "com.android.test.uibench.TEST";
+ private String mActivityPath = "";
+
public static class TestListFragment extends ListFragment {
@Override
@SuppressWarnings("unchecked")
@@ -56,9 +60,7 @@ public class MainActivity extends AppCompatActivity {
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
+ protected void initializeActivity() {
Intent intent = getIntent();
String path = intent.getStringExtra(EXTRA_PATH);
@@ -68,15 +70,19 @@ public class MainActivity extends AppCompatActivity {
// not root level, display where we are in the hierarchy
setTitle(path);
}
+ mActivityPath = path;
+ }
- FragmentManager fm = getSupportFragmentManager();
- if (fm.findFragmentById(android.R.id.content) == null) {
- ListFragment listFragment = new TestListFragment();
- listFragment.setListAdapter(new SimpleAdapter(this, getData(path),
- android.R.layout.simple_list_item_1, new String[] { "title" },
- new int[] { android.R.id.text1 }));
- fm.beginTransaction().add(android.R.id.content, listFragment).commit();
- }
+ @Override
+ protected ListAdapter createListAdapter() {
+ return new SimpleAdapter(this, getData(mActivityPath),
+ android.R.layout.simple_list_item_1, new String[] { "title" },
+ new int[] { android.R.id.text1 });
+ }
+
+ @Override
+ protected ListFragment createListFragment() {
+ return new TestListFragment();
}
protected List<Map<String, Object>> getData(String prefix) {
diff --git a/tests/UiBench/src/com/android/test/uibench/ShadowGridActivity.java b/tests/UiBench/src/com/android/test/uibench/ShadowGridActivity.java
index af7c65acafd4..d6e1d06ca561 100644
--- a/tests/UiBench/src/com/android/test/uibench/ShadowGridActivity.java
+++ b/tests/UiBench/src/com/android/test/uibench/ShadowGridActivity.java
@@ -16,13 +16,15 @@
package com.android.test.uibench;
import android.os.Bundle;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.ListFragment;
-import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
+import android.widget.ListAdapter;
+
+import androidx.fragment.app.ListFragment;
-public class ShadowGridActivity extends AppCompatActivity {
+import com.android.test.uibench.listview.CompatListActivity;
+
+public class ShadowGridActivity extends CompatListActivity {
public static class NoDividerListFragment extends ListFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
@@ -31,18 +33,14 @@ public class ShadowGridActivity extends AppCompatActivity {
}
};
-
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- FragmentManager fm = getSupportFragmentManager();
- if (fm.findFragmentById(android.R.id.content) == null) {
- ListFragment listFragment = new NoDividerListFragment();
+ protected ListAdapter createListAdapter() {
+ return new ArrayAdapter<>(this, R.layout.card_row, R.id.card_text,
+ TextUtils.buildSimpleStringList());
+ }
- listFragment.setListAdapter(new ArrayAdapter<>(this,
- R.layout.card_row, R.id.card_text, TextUtils.buildSimpleStringList()));
- fm.beginTransaction().add(android.R.id.content, listFragment).commit();
- }
+ @Override
+ protected ListFragment createListFragment() {
+ return new NoDividerListFragment();
}
}
diff --git a/tests/UiBench/src/com/android/test/uibench/listview/CompatListActivity.java b/tests/UiBench/src/com/android/test/uibench/listview/CompatListActivity.java
index 66595585c525..9a4b5270d5a7 100644
--- a/tests/UiBench/src/com/android/test/uibench/listview/CompatListActivity.java
+++ b/tests/UiBench/src/com/android/test/uibench/listview/CompatListActivity.java
@@ -16,22 +16,29 @@
package com.android.test.uibench.listview;
import android.os.Bundle;
+import android.widget.ListAdapter;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.ListFragment;
-import androidx.appcompat.app.AppCompatActivity;
-import android.widget.ListAdapter;
public abstract class CompatListActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ initializeActivity();
+ int containerViewId = getListFragmentContainerViewId();
FragmentManager fm = getSupportFragmentManager();
- if (fm.findFragmentById(android.R.id.content) == null) {
+ Fragment fragment = fm.findFragmentById(containerViewId);
+ if (fragment == null) {
ListFragment listFragment = createListFragment();
listFragment.setListAdapter(createListAdapter());
- fm.beginTransaction().add(android.R.id.content, listFragment).commit();
+ fm.beginTransaction().add(containerViewId, listFragment).commit();
+ } else if (fragment instanceof ListFragment) {
+ ((ListFragment) fragment).setListAdapter(createListAdapter());
}
}
@@ -40,4 +47,11 @@ public abstract class CompatListActivity extends AppCompatActivity {
protected ListFragment createListFragment() {
return new ListFragment();
}
+
+ protected int getListFragmentContainerViewId() {
+ return android.R.id.content;
+ }
+
+ protected void initializeActivity() {
+ }
}
diff --git a/tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java b/tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java
index bd313ad7636d..2f0d6ab901e2 100644
--- a/tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java
+++ b/tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java
@@ -17,15 +17,16 @@ package com.android.test.uibench.recyclerview;
import android.content.Context;
import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
import com.android.test.uibench.R;
@@ -51,14 +52,21 @@ public abstract class RvCompatListActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
FragmentManager fm = getSupportFragmentManager();
- if (fm.findFragmentById(android.R.id.content) == null) {
+ Fragment existingFragment = fm.findFragmentById(android.R.id.content);
+ if (existingFragment == null) {
RecyclerViewFragment fragment = new RecyclerViewFragment();
- fragment.layoutManager = createLayoutManager(this);
- fragment.adapter = createAdapter();
+ initializeRecyclerViewFragment(fragment);
fm.beginTransaction().add(android.R.id.content, fragment).commit();
+ } else if (existingFragment instanceof RecyclerViewFragment) {
+ initializeRecyclerViewFragment((RecyclerViewFragment) existingFragment);
}
}
+ private void initializeRecyclerViewFragment(RecyclerViewFragment fragment) {
+ fragment.layoutManager = createLayoutManager(this);
+ fragment.adapter = createAdapter();
+ }
+
protected RecyclerView.LayoutManager createLayoutManager(Context context) {
return new LinearLayoutManager(context);
}