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.Dialog;
229d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.app.admin.DevicePolicyManager;
239d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.Context;
249d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.DialogInterface;
259d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.DialogInterface.OnClickListener;
269d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.content.Intent;
279d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.os.Bundle;
289d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.os.RemoteException;
299d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.view.WindowManager;
309d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallimport android.view.WindowManagerGlobal;
319d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
329d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall/**
339d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * Activity that shows a dialog explaining that a CA cert is allowing someone to monitor network
349d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall * traffic.
359d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall */
369d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthallpublic class MonitoringCertInfoActivity extends Activity implements OnClickListener {
379d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
389d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    private boolean hasDeviceOwner = false;
399d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
409d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    @Override
419d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    protected void onCreate(Bundle savedStates) {
429d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        super.onCreate(savedStates);
439d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
449d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        DevicePolicyManager dpm =
459d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall                (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
469d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
479d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
489d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        builder.setTitle(R.string.ssl_ca_cert_dialog_title);
499d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        builder.setCancelable(true);
509d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        hasDeviceOwner = dpm.getDeviceOwner() != null;
519d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        int buttonLabel;
529d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        if (hasDeviceOwner) {
539d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            // Institutional case.  Show informational message.
549d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            String message = this.getResources().getString(R.string.ssl_ca_cert_info_message,
559d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall                    dpm.getDeviceOwnerName());
569d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            builder.setMessage(message);
579d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            buttonLabel = R.string.done_button;
589d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        } else {
599d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            // Consumer case.  Show scary warning.
609d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            builder.setIcon(android.R.drawable.stat_notify_error);
619d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            builder.setMessage(R.string.ssl_ca_cert_warning_message);
629d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            buttonLabel = R.string.ssl_ca_cert_settings_button;
639d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        }
649d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
659d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        builder.setPositiveButton(buttonLabel, this);
669d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
679d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        final Dialog dialog = builder.create();
689d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
699d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        try {
709d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            WindowManagerGlobal.getWindowManagerService().dismissKeyguard();
719d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        } catch (RemoteException e) {
729d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        }
739d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
749d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            @Override public void onCancel(DialogInterface dialog) {
759d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall                finish();
769d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            }
779d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        });
789d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
799d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        dialog.show();
809d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    }
819d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall
829d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    @Override
839d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    public void onClick(DialogInterface dialog, int which) {
849d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        if (hasDeviceOwner) {
859d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            finish();
869d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        } else {
879d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            Intent intent =
889d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall                    new Intent(android.provider.Settings.ACTION_TRUSTED_CREDENTIALS_USER);
899d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
909d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            startActivity(intent);
919d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall            finish();
929d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall        }
939d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall    }
949d6c40e56d799427ba30495238b2077cdc3c2115Maggie Benthall}
95