Merge "Adjust tap targets in history" into rvc-dev am: 7c4557bec8 am: ceac4f44b9
Change-Id: Ib835a71df1f54be8544e4d85f872dd9e43defcba
diff --git a/src/com/android/settings/applications/AppStorageSettings.java b/src/com/android/settings/applications/AppStorageSettings.java
index f07c66c..b0c3b65 100644
--- a/src/com/android/settings/applications/AppStorageSettings.java
+++ b/src/com/android/settings/applications/AppStorageSettings.java
@@ -315,10 +315,7 @@
.setButton1Text(R.string.clear_user_data_text)
.setButton1Icon(R.drawable.ic_settings_delete);
}
- mButtonsPref
- .setButton1Text(R.string.clear_user_data_text)
- .setButton1Icon(R.drawable.ic_settings_delete)
- .setButton1OnClickListener(v -> handleClearDataClick());
+ mButtonsPref.setButton1OnClickListener(v -> handleClearDataClick());
}
if (mAppsControlDisallowedBySystem) {
diff --git a/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java b/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
index 1078a21..6a13a96 100644
--- a/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
+++ b/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
@@ -97,7 +97,7 @@
// New version - uses a separate screen.
new SubSettingLauncher(mFragment.getContext())
.setDestination(UsbDetailsFragment.class.getName())
- .setTitleRes(R.string.device_details_title)
+ .setTitleRes(R.string.usb_preference)
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.launch();
return true;
diff --git a/src/com/android/settings/datetime/timezone/OWNERS b/src/com/android/settings/datetime/timezone/OWNERS
index 02cf23c..7ad770a 100644
--- a/src/com/android/settings/datetime/timezone/OWNERS
+++ b/src/com/android/settings/datetime/timezone/OWNERS
@@ -1,6 +1,5 @@
# Default reviewers for this and subdirectories.
vichang@google.com
-tobiast@google.com
nfuller@google.com
# Emergency approvers in case the above are not available
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
index 626390a..2eda9d9 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
@@ -176,7 +176,11 @@
private void dismissProgressBar() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
- mProgressDialog.dismiss();
+ try {
+ mProgressDialog.dismiss();
+ } catch (IllegalArgumentException e) {
+ // Ignore exception since the dialog will be gone anyway.
+ }
}
}
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 14450a3..fbb2c41 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -156,8 +156,13 @@
private void createPanelContent() {
final FragmentActivity activity = getActivity();
+ if (activity == null) {
+ return;
+ }
+
if (mLayoutView == null) {
activity.finish();
+ return;
}
mPanelSlices = mLayoutView.findViewById(R.id.panel_parent_layout);
@@ -183,6 +188,7 @@
if (mPanel == null) {
activity.finish();
+ return;
}
mPanel.registerCallback(new LocalPanelCallback());
diff --git a/src/com/android/settings/users/EditUserInfoController.java b/src/com/android/settings/users/EditUserInfoController.java
index 373d6a9..afa7cdd 100644
--- a/src/com/android/settings/users/EditUserInfoController.java
+++ b/src/com/android/settings/users/EditUserInfoController.java
@@ -95,8 +95,7 @@
}
public void onSaveInstanceState(Bundle outState) {
- if (mEditUserInfoDialog != null && mEditUserInfoDialog.isShowing()
- && mEditUserPhotoController != null) {
+ if (mEditUserInfoDialog != null && mEditUserPhotoController != null) {
// Bitmap cannot be stored into bundle because it may exceed parcel limit
// Store it in a temporary file instead
File file = mEditUserPhotoController.saveNewUserPhotoBitmap();
diff --git a/src/com/android/settings/vpn2/ConfigDialog.java b/src/com/android/settings/vpn2/ConfigDialog.java
index a0aac19..4c50b74 100644
--- a/src/com/android/settings/vpn2/ConfigDialog.java
+++ b/src/com/android/settings/vpn2/ConfigDialog.java
@@ -342,14 +342,14 @@
mView.findViewById(R.id.vpn_proxy_fields).setVisibility(visible);
}
- private boolean hasAdvancedOptionsEnabled() {
+ private boolean isAdvancedOptionsEnabled() {
return mSearchDomains.getText().length() > 0 || mDnsServers.getText().length() > 0 ||
mRoutes.getText().length() > 0 || mProxyHost.getText().length() > 0
|| mProxyPort.getText().length() > 0;
}
private void configureAdvancedOptionsVisibility() {
- if (mShowOptions.isChecked() || hasAdvancedOptionsEnabled()) {
+ if (mShowOptions.isChecked() || isAdvancedOptionsEnabled()) {
mView.findViewById(R.id.options).setVisibility(View.VISIBLE);
mShowOptions.setVisibility(View.GONE);
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 735fecc..a59f137 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -34,6 +34,7 @@
import android.telephony.ims.ImsMmTelManager;
import android.telephony.ims.ProvisioningManager;
import android.text.TextUtils;
+import android.text.util.Linkify;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -183,6 +184,7 @@
mEmptyView = getView().findViewById(android.R.id.empty);
setEmptyView(mEmptyView);
+ mEmptyView.setAutoLinkMask(Linkify.WEB_URLS);
final Resources res = getResourcesForSubId();
final String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
res.getString(R.string.wifi_calling_off_explanation_2));
diff --git a/tests/perftests/AndroidManifest.xml b/tests/perftests/AndroidManifest.xml
index 4ce6a54..8aae24a 100644
--- a/tests/perftests/AndroidManifest.xml
+++ b/tests/perftests/AndroidManifest.xml
@@ -22,7 +22,7 @@
</application>
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
- android:targetPackage="com.android.settings"
+ android:targetPackage="com.android.settings.tests.perf"
android:label="Settings Performance Test Cases">
</instrumentation>
diff --git a/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java b/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
index 5140be2..ec2a311 100644
--- a/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
+++ b/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
@@ -15,8 +15,17 @@
*/
package com.android.settings.tests.perf;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static junit.framework.TestCase.fail;
+
import android.app.Instrumentation;
import android.os.Bundle;
+import android.util.Log;
+import android.support.test.uiautomator.By;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.UiSelector;
+import android.support.test.uiautomator.Until;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
@@ -26,23 +35,119 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Collections;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
@RunWith(AndroidJUnit4.class)
public class LaunchSettingsTest {
+ private static class Page {
+ String action;
+ String displayName;
+ String title;
+
+ Page(String action, String displayName, String title) {
+ this.action = action;
+ this.displayName = displayName;
+ this.title = title;
+ }
+ }
+
+ private static final int TIME_OUT = 5000;
+ private static final int TEST_TIME = 10;
+ private static final Pattern PATTERN = Pattern.compile("TotalTime:\\s[0-9]*");
+ private static final Page[] PAGES;
+
+ static {
+ PAGES = new Page[]{
+ new Page("android.settings.SETTINGS", "Search settings", "Settings"),
+ new Page("android.settings.WIFI_SETTINGS", "Use Wi‑Fi", "Wi-Fi"),
+ new Page("android.settings.BLUETOOTH_SETTINGS", "Connected devices", "BlueTooth"),
+ new Page("android.settings.APPLICATION_SETTINGS", "App info", "Application"),
+ new Page("android.intent.action.POWER_USAGE_SUMMARY", "Battery", "Battery")
+ };
+ }
+
+ private Bundle mBundle;
+ private UiDevice mDevice;
+ private Instrumentation mInstrumentation;
+ private Map<String, ArrayList<Integer>> mResult;
@Before
public void setUp() throws Exception {
+ mBundle = new Bundle();
+ mDevice = UiDevice.getInstance(getInstrumentation());
+ mInstrumentation = InstrumentationRegistry.getInstrumentation();
+ mResult = new LinkedHashMap<>();
+ mDevice.pressHome();
+ mDevice.waitForIdle(TIME_OUT);
+
+ for (Page page : PAGES) {
+ mResult.put(page.title, new ArrayList<Integer>());
+ }
}
@After
public void tearDown() throws Exception {
+ putResultToBundle();
+ mInstrumentation.sendStatus(0, mBundle);
}
@Test
- public void testReportMetrics() throws Exception {
- Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
- final Bundle result = new Bundle();
- result.putString("LaunchSettingsTest_metric_key1", "1000");
- result.putString("LaunchSettingsTest_metric_key2", "5000");
- instrumentation.sendStatus(0, result);
+ public void settingsPerformanceTest() throws Exception {
+ for (int i = 0; i < TEST_TIME; i++) {
+ for (Page page : PAGES) {
+ executePreformanceTest(page.action, page.displayName, page.title);
+ }
+ }
}
-}
+
+ private void executePreformanceTest(String action, String displayName, String title)
+ throws Exception {
+ final String mString = mDevice.executeShellCommand("am start -W -a" + action);
+ mDevice.wait(Until.findObject(By.text(displayName)), TIME_OUT);
+ handleLaunchResult(title, mString);
+ closeApp();
+ mDevice.waitForIdle(TIME_OUT);
+ }
+
+ private void handleLaunchResult(String title, String s) {
+ Matcher mMatcher = PATTERN.matcher(s);
+ if (mMatcher.find()) {
+ mResult.get(title).add(Integer.valueOf(mMatcher.group().split("\\s")[1]));
+ } else {
+ fail("Some pages can't be found");
+ }
+ }
+
+ private void closeApp() throws Exception {
+ mDevice.executeShellCommand("am force-stop com.android.settings");
+ Thread.sleep(1000);
+ }
+
+ private void putResultToBundle() {
+ for (String string : mResult.keySet()) {
+ mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "max"),
+ getMax(mResult.get(string)));
+ mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "min"),
+ getMin(mResult.get(string)));
+ mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "avg"),
+ getAvg(mResult.get(string)));
+ }
+ }
+
+ private String getMax(ArrayList<Integer> launchResult) {
+ return String.format("%s", launchResult.isEmpty() ? "null" : Collections.max(launchResult));
+ }
+
+ private String getMin(ArrayList<Integer> launchResult) {
+ return String.format("%s", launchResult.isEmpty() ? "null" : Collections.min(launchResult));
+ }
+
+ private String getAvg(ArrayList<Integer> launchResult) {
+ return String.valueOf((int) launchResult.stream().mapToInt(i -> i).average().orElse(0));
+ }
+}
\ No newline at end of file