More cts-verifier tests for profile-aware Settings.
Also auto-scroll the list of tests as they are growing longer.
Bug: 18928906
Change-Id: I214febc873a21f0ba10a49b3a4e30c4eaf51fd3f
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
index 057d00d..c1cc1f9 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
@@ -17,14 +17,12 @@
package com.android.cts.verifier.managedprovisioning;
import android.app.AlertDialog;
-import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.provider.Settings;
@@ -64,20 +62,26 @@
private ComponentName mAdminReceiverComponent;
- private TestAdapter mAdapter;
+ private TestAdapter mTestListAdapter;
private View mStartProvisioningButton;
private List<TestItem> mTests = new ArrayList<TestItem>();
protected DevicePolicyManager mDevicePolicyManager;
private TestItem mProfileOwnerInstalled;
- private TestItem mProfileVisibleTest;
+ private TestItem mProfileAccountVisibleTest;
private TestItem mDeviceAdminVisibleTest;
private TestItem mWorkAppVisibleTest;
private TestItem mCrossProfileIntentFiltersTest;
private TestItem mDisableNonMarketTest;
private TestItem mEnableNonMarketTest;
private TestItem mWorkNotificationBadgedTest;
+ private TestItem mAppSettingsVisibleTest;
+ private TestItem mLocationSettingsVisibleTest;
+ private TestItem mCredSettingsVisibleTest;
+ private TestItem mPrintSettingsVisibleTest;
+
+ private int mCurrentTestPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -94,9 +98,11 @@
setupTests();
- mAdapter = new TestAdapter(this);
- setListAdapter(mAdapter);
- mAdapter.addAll(mTests);
+ mTestListAdapter = new TestAdapter(this);
+ setListAdapter(mTestListAdapter);
+ mTestListAdapter.addAll(mTests);
+
+ mCurrentTestPosition = 0;
mStartProvisioningButton = findViewById(R.id.byod_start);
mStartProvisioningButton.setOnClickListener(new OnClickListener() {
@@ -159,21 +165,13 @@
}
};
- mProfileVisibleTest = new TestItem(this, R.string.provisioning_byod_profile_visible,
- R.string.provisioning_byod_profile_visible_instruction,
- new Intent(Settings.ACTION_SETTINGS));
-
- mDeviceAdminVisibleTest = new TestItem(this, R.string.provisioning_byod_admin_visible,
- R.string.provisioning_byod_admin_visible_instruction,
- new Intent(Settings.ACTION_SECURITY_SETTINGS));
-
/*
* To keep the image in this test up to date, use the instructions in
* {@link ByodIconSamplerActivity}.
*/
mWorkAppVisibleTest = new TestItemWithIcon(this,
R.string.provisioning_byod_workapps_visible,
- R.string.provisioning_byod_profile_visible_instruction,
+ R.string.provisioning_byod_workapps_visible_instruction,
new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),
R.drawable.badged_icon);
@@ -193,18 +191,53 @@
new Intent(ByodHelperActivity.ACTION_INSTALL_APK)
.putExtra(ByodHelperActivity.EXTRA_ALLOW_NON_MARKET_APPS, true));
+ mProfileAccountVisibleTest = new TestItem(this, R.string.provisioning_byod_profile_visible,
+ R.string.provisioning_byod_profile_visible_instruction,
+ new Intent(Settings.ACTION_SETTINGS));
+
+ mAppSettingsVisibleTest = new TestItem(this, R.string.provisioning_byod_app_settings,
+ R.string.provisioning_byod_app_settings_instruction,
+ new Intent(Settings.ACTION_APPLICATION_SETTINGS));
+
+ mDeviceAdminVisibleTest = new TestItem(this, R.string.provisioning_byod_admin_visible,
+ R.string.provisioning_byod_admin_visible_instruction,
+ new Intent(Settings.ACTION_SECURITY_SETTINGS));
+
+ mCredSettingsVisibleTest = new TestItem(this, R.string.provisioning_byod_cred_settings,
+ R.string.provisioning_byod_cred_settings_instruction,
+ new Intent(Settings.ACTION_SECURITY_SETTINGS));
+
+ mLocationSettingsVisibleTest = new TestItem(this,
+ R.string.provisioning_byod_location_settings,
+ R.string.provisioning_byod_location_settings_instruction,
+ new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
+
+ mPrintSettingsVisibleTest = new TestItem(this, R.string.provisioning_byod_print_settings,
+ R.string.provisioning_byod_print_settings_instruction,
+ new Intent(Settings.ACTION_PRINT_SETTINGS));
+
Intent intent = new Intent(CrossProfileTestActivity.ACTION_CROSS_PROFILE);
- Intent chooser = Intent.createChooser(intent, getResources().getString(R.string.provisioning_cross_profile_chooser));
+ Intent chooser = Intent.createChooser(intent,
+ getResources().getString(R.string.provisioning_cross_profile_chooser));
mCrossProfileIntentFiltersTest = new TestItem(this,
R.string.provisioning_byod_cross_profile,
R.string.provisioning_byod_cross_profile_instruction,
chooser);
mTests.add(mProfileOwnerInstalled);
- mTests.add(mProfileVisibleTest);
- mTests.add(mDeviceAdminVisibleTest);
+
+ // Badge related tests
mTests.add(mWorkAppVisibleTest);
mTests.add(mWorkNotificationBadgedTest);
+
+ // Settings related tests.
+ mTests.add(mProfileAccountVisibleTest);
+ mTests.add(mDeviceAdminVisibleTest);
+ mTests.add(mCredSettingsVisibleTest);
+ mTests.add(mAppSettingsVisibleTest);
+ mTests.add(mLocationSettingsVisibleTest);
+ mTests.add(mPrintSettingsVisibleTest);
+
mTests.add(mCrossProfileIntentFiltersTest);
mTests.add(mDisableNonMarketTest);
mTests.add(mEnableNonMarketTest);
@@ -213,6 +246,7 @@
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
+ mCurrentTestPosition = position;
TestItem test = (TestItem) getListAdapter().getItem(position);
test.performTest(this);
}
@@ -242,13 +276,20 @@
} else {
dialogBuilder.setMessage(test.getManualTestInstruction());
}
- AlertDialog dialog = dialogBuilder.show();
+ final AlertDialog dialog = dialogBuilder.show();
// Note: Setting the OnClickListener on the Dialog rather than the Builder, prevents the
// dialog being dismissed on onClick.
dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- ByodFlowTestActivity.this.startActivity(test.getManualTestIntent());
+ try {
+ ByodFlowTestActivity.this.startActivity(test.getManualTestIntent());
+ } catch (ActivityNotFoundException e) {
+ Toast.makeText(ByodFlowTestActivity.this,
+ "Cannot start " + test.getManualTestIntent(), Toast.LENGTH_LONG).show();
+ setTestResult(test, TestResult.Failed);
+ dialog.dismiss();
+ }
}
});
}
@@ -256,8 +297,12 @@
private void clearRemainingState(final TestItem test) {
if (WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION.equals(
test.getManualTestIntent().getAction())) {
- ByodFlowTestActivity.this.startActivity(new Intent(
- WorkNotificationTestActivity.ACTION_CLEAR_WORK_NOTIFICATION));
+ try {
+ ByodFlowTestActivity.this.startActivity(new Intent(
+ WorkNotificationTestActivity.ACTION_CLEAR_WORK_NOTIFICATION));
+ } catch (ActivityNotFoundException e) {
+ // User shouldn't run this test before work profile is set up.
+ }
}
}
@@ -269,7 +314,9 @@
testSucceeds &= (aTest.getPassFailState() == TestResult.Passed);
}
getPassButton().setEnabled(testSucceeds);
- mAdapter.notifyDataSetChanged();
+ mTestListAdapter.notifyDataSetChanged();
+
+ this.getListView().smoothScrollToPosition(mCurrentTestPosition + 1);
}
private void startByodProvisioning() {