1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.cts.verifier.managedprovisioning; 18 19 import android.app.AlertDialog; 20 import android.app.admin.DevicePolicyManager; 21 import android.content.ComponentName; 22 import android.content.Context; 23 import android.content.DialogInterface; 24 import android.content.Intent; 25 import android.os.Bundle; 26 import android.view.View; 27 28 import com.android.cts.verifier.ArrayTestListAdapter; 29 import com.android.cts.verifier.DialogTestListActivity; 30 import com.android.cts.verifier.R; 31 32 /** 33 * This test verifies that if a work profile is locked with a separate password, Recents views for 34 * for applications in the work profile are redacted appropriately. 35 */ 36 public class RecentsRedactionActivity extends DialogTestListActivity { 37 private static final String TAG = RecentsRedactionActivity.class.getSimpleName(); 38 39 public static final String ACTION_RECENTS = 40 "com.android.cts.verifier.managedprovisioning.RECENTS"; 41 42 private ComponentName mAdmin; 43 private DevicePolicyManager mDevicePolicyManager; 44 45 private DialogTestListItem mVerifyRedacted; 46 private DialogTestListItem mVerifyNotRedacted; 47 RecentsRedactionActivity()48 public RecentsRedactionActivity() { 49 super(R.layout.provisioning_byod, 50 /* title */ R.string.provisioning_byod_recents, 51 /* description */ R.string.provisioning_byod_recents_info, 52 /* instructions */ R.string.provisioning_byod_recents_instructions); 53 } 54 55 @Override onCreate(Bundle savedInstanceState)56 protected void onCreate(Bundle savedInstanceState) { 57 super.onCreate(savedInstanceState); 58 59 mPrepareTestButton.setText(R.string.provisioning_byod_recents_lock_now); 60 mPrepareTestButton.setOnClickListener((View view) -> { 61 mDevicePolicyManager.lockNow(); 62 }); 63 64 mAdmin = new ComponentName(this, DeviceAdminTestReceiver.class.getName()); 65 mDevicePolicyManager = (DevicePolicyManager) 66 getSystemService(Context.DEVICE_POLICY_SERVICE); 67 } 68 69 @Override setupTests(ArrayTestListAdapter adapter)70 protected void setupTests(ArrayTestListAdapter adapter) { 71 mVerifyRedacted = new DialogTestListItem(this, 72 /* name */ R.string.provisioning_byod_recents_verify_redacted, 73 /* testId */ "BYOD_recents_verify_redacted", 74 /* instruction */ R.string.provisioning_byod_recents_verify_redacted_instruction, 75 /* action */ new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD)); 76 77 mVerifyNotRedacted = new DialogTestListItem(this, 78 /* name */ R.string.provisioning_byod_recents_verify_not_redacted, 79 /* testId */ "BYOD_recents_verify_not_redacted", 80 /* intruction */ R.string.provisioning_byod_recents_verify_not_redacted_instruction, 81 /* action */ new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD)); 82 83 adapter.add(mVerifyRedacted); 84 adapter.add(mVerifyNotRedacted); 85 } 86 87 @Override onBackPressed()88 public void onBackPressed() { 89 if (hasPassword()) { 90 requestRemovePassword(); 91 return; 92 } 93 super.onBackPressed(); 94 } 95 hasPassword()96 private boolean hasPassword() { 97 try { 98 mDevicePolicyManager.setPasswordQuality(mAdmin, 99 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); 100 return mDevicePolicyManager.isActivePasswordSufficient(); 101 } finally { 102 mDevicePolicyManager.setPasswordQuality(mAdmin, 103 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); 104 } 105 } 106 requestRemovePassword()107 private void requestRemovePassword() { 108 new AlertDialog.Builder(this) 109 .setIcon(android.R.drawable.ic_dialog_info) 110 .setTitle(R.string.provisioning_byod_recents) 111 .setMessage(R.string.provisioning_byod_recents_remove_password) 112 .setPositiveButton(android.R.string.ok, (DialogInterface dialog, int which) -> { 113 startActivity(new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD)); 114 }) 115 .show(); 116 } 117 } 118