19d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall/* 29d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * Copyright (C) 2013 The Android Open Source Project 39d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * 49d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * Licensed under the Apache License, Version 2.0 (the "License"); 59d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * you may not use this file except in compliance with the License. 69d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * You may obtain a copy of the License at 79d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * 89d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * http://www.apache.org/licenses/LICENSE-2.0 99d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * 109d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * Unless required by applicable law or agreed to in writing, software 119d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * distributed under the License is distributed on an "AS IS" BASIS, 129d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * See the License for the specific language governing permissions and 149d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * limitations under the License. 159d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall */ 169d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 179d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallpackage com.android.settings; 189d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 199d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.app.Activity; 209d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.app.AlertDialog; 219d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.app.admin.DevicePolicyManager; 229d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.DialogInterface; 239d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.DialogInterface.OnClickListener; 2417ead044e16878546828d2aedbbd187cfa17cac8Victor Changimport android.content.DialogInterface.OnDismissListener; 259d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.Intent; 269d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.os.Bundle; 27caa8877f756dccd5cbe7524050b15afed2ebc42aVictor Changimport android.os.UserHandle; 2817ead044e16878546828d2aedbbd187cfa17cac8Victor Changimport android.provider.Settings; 299d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 3071d1fed0e716746fb229cd02e7b2c059fa677e1aVictor Changimport com.android.settingslib.RestrictedLockUtils; 3171d1fed0e716746fb229cd02e7b2c059fa677e1aVictor Chang 329d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall/** 339d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * Activity that shows a dialog explaining that a CA cert is allowing someone to monitor network 3401f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang * traffic. This activity should be launched for the user into which the CA cert is installed 3501f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang * unless Intent.EXTRA_USER_ID is provided. 369d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall */ 3717ead044e16878546828d2aedbbd187cfa17cac8Victor Changpublic class MonitoringCertInfoActivity extends Activity implements OnClickListener, 3817ead044e16878546828d2aedbbd187cfa17cac8Victor Chang OnDismissListener { 399d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 4001f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang private int mUserId; 4101f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang 429d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall @Override 439d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall protected void onCreate(Bundle savedStates) { 449d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall super.onCreate(savedStates); 459d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 4601f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang mUserId = getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); 4701f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang 4817ead044e16878546828d2aedbbd187cfa17cac8Victor Chang DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class); 4917ead044e16878546828d2aedbbd187cfa17cac8Victor Chang final int numberOfCertificates = getIntent().getIntExtra( 5017ead044e16878546828d2aedbbd187cfa17cac8Victor Chang Settings.EXTRA_NUMBER_OF_CERTIFICATES, 1); 5171d1fed0e716746fb229cd02e7b2c059fa677e1aVictor Chang final int titleId = RestrictedLockUtils.getProfileOrDeviceOwner(this, mUserId) != null 5271d1fed0e716746fb229cd02e7b2c059fa677e1aVictor Chang ? R.plurals.ssl_ca_cert_settings_button // Check certificate 5371d1fed0e716746fb229cd02e7b2c059fa677e1aVictor Chang : R.plurals.ssl_ca_cert_dialog_title; // Trust or remove certificate 5471d1fed0e716746fb229cd02e7b2c059fa677e1aVictor Chang final CharSequence title = getResources().getQuantityText(titleId, numberOfCertificates); 55e8a46f2838ef9c73f45797b0b726f18cacb672b2Victor Chang setTitle(title); 569d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 579d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall final AlertDialog.Builder builder = new AlertDialog.Builder(this); 58e8a46f2838ef9c73f45797b0b726f18cacb672b2Victor Chang builder.setTitle(title); 599d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall builder.setCancelable(true); 6017ead044e16878546828d2aedbbd187cfa17cac8Victor Chang builder.setPositiveButton(getResources().getQuantityText( 6117ead044e16878546828d2aedbbd187cfa17cac8Victor Chang R.plurals.ssl_ca_cert_settings_button, numberOfCertificates) , this); 6217ead044e16878546828d2aedbbd187cfa17cac8Victor Chang builder.setNeutralButton(R.string.cancel, null); 6317ead044e16878546828d2aedbbd187cfa17cac8Victor Chang builder.setOnDismissListener(this); 6417ead044e16878546828d2aedbbd187cfa17cac8Victor Chang 6501f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang if (dpm.getProfileOwnerAsUser(mUserId) != null) { 6617ead044e16878546828d2aedbbd187cfa17cac8Victor Chang builder.setMessage(getResources().getQuantityString(R.plurals.ssl_ca_cert_info_message, 67cba033e4b528bf16499ce5b121693007a5fd2010Victor Chang numberOfCertificates, dpm.getProfileOwnerNameAsUser(mUserId))); 6817ead044e16878546828d2aedbbd187cfa17cac8Victor Chang } else if (dpm.getDeviceOwnerComponentOnCallingUser() != null) { 69f5b2fea636e862fb1c055485c799741d44ecb60cVictor Chang builder.setMessage(getResources().getQuantityString( 70f5b2fea636e862fb1c055485c799741d44ecb60cVictor Chang R.plurals.ssl_ca_cert_info_message_device_owner, numberOfCertificates, 71f5b2fea636e862fb1c055485c799741d44ecb60cVictor Chang dpm.getDeviceOwnerNameOnAnyUser())); 7217ead044e16878546828d2aedbbd187cfa17cac8Victor Chang } else { 739d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall // Consumer case. Show scary warning. 749d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall builder.setIcon(android.R.drawable.stat_notify_error); 759d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall builder.setMessage(R.string.ssl_ca_cert_warning_message); 769d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall } 779d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 7817ead044e16878546828d2aedbbd187cfa17cac8Victor Chang builder.show(); 799d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall } 809d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall 819d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall @Override 829d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall public void onClick(DialogInterface dialog, int which) { 8317ead044e16878546828d2aedbbd187cfa17cac8Victor Chang Intent intent = new Intent(android.provider.Settings.ACTION_TRUSTED_CREDENTIALS_USER); 8417ead044e16878546828d2aedbbd187cfa17cac8Victor Chang intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 8501f4dbcc1cfb70502e7b7deb5017e92d56e0b855Victor Chang intent.putExtra(TrustedCredentialsSettings.ARG_SHOW_NEW_FOR_USER, mUserId); 8617ead044e16878546828d2aedbbd187cfa17cac8Victor Chang startActivity(intent); 8717ead044e16878546828d2aedbbd187cfa17cac8Victor Chang finish(); 8817ead044e16878546828d2aedbbd187cfa17cac8Victor Chang } 8917ead044e16878546828d2aedbbd187cfa17cac8Victor Chang 9017ead044e16878546828d2aedbbd187cfa17cac8Victor Chang @Override 9117ead044e16878546828d2aedbbd187cfa17cac8Victor Chang public void onDismiss(DialogInterface dialogInterface) { 9217ead044e16878546828d2aedbbd187cfa17cac8Victor Chang finish(); 939d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall } 949d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall} 95