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