13ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee/*
23ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * Copyright 2014, The Android Open Source Project
33ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee *
43ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * Licensed under the Apache License, Version 2.0 (the "License");
53ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * you may not use this file except in compliance with the License.
63ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * You may obtain a copy of the License at
73ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee *
83ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee *     http://www.apache.org/licenses/LICENSE-2.0
93ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee *
103ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * Unless required by applicable law or agreed to in writing, software
113ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * distributed under the License is distributed on an "AS IS" BASIS,
123ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * See the License for the specific language governing permissions and
143ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * limitations under the License.
153ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee */
16f7a9eea8fe577f2f5edbbe6e73891a54351286c6Benjamin Franzpackage com.android.managedprovisioning.preprovisioning;
173ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee
1849dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franzimport static android.app.admin.DevicePolicyManager.ACTION_START_ENCRYPTION;
193cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak
2092013087f0eb359c2ab56564b08be8d3382afbceTamas Berghammerimport static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENCRYPT_DEVICE_ACTIVITY_TIME_MS;
21eca5fc2ef6652fc14d272acf7fbe084ebdebce4cMahaver Chopra
223ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Leeimport android.content.Intent;
23e3146e92028e1aee45082d1b925ff45feee789c8Jessica Hummelimport android.os.Bundle;
24e3146e92028e1aee45082d1b925ff45feee789c8Jessica Hummelimport android.view.View;
25efd16c808b000fecc83671273b138328a956ac30Nicolas Prevotimport android.widget.Button;
26a36dd9919e54ae848875205c1bb2f4bab3f66584Sander Alewijnseimport android.widget.TextView;
27fc98d5780a1ce96277b8a962e10a35401af2ef78Nicolas Prevot
28c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franzimport com.android.managedprovisioning.R;
2949dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franzimport com.android.managedprovisioning.common.ProvisionLogger;
305d71a12cb40f72157b983c365f3eee584d55e22cJakub Gielzakimport com.android.managedprovisioning.common.SetupGlifLayoutActivity;
313cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport com.android.managedprovisioning.model.CustomizationParams;
32d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport com.android.managedprovisioning.model.ProvisioningParams;
33c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz
343ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee/**
353ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee * Activity to ask for permission to activate full-filesystem encryption.
363ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee *
37a0e00a5c36469ceef697d062143343a434534677Kenny Guy * Pressing 'settings' will launch settings to prompt the user to encrypt
38a0e00a5c36469ceef697d062143343a434534677Kenny Guy * the device.
393ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee */
405d71a12cb40f72157b983c365f3eee584d55e22cJakub Gielzakpublic class EncryptDeviceActivity extends SetupGlifLayoutActivity {
410a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz    private ProvisioningParams mParams;
42a36dd9919e54ae848875205c1bb2f4bab3f66584Sander Alewijnse
4349dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz    protected EncryptionController getEncryptionController() {
4449dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz        return EncryptionController.getInstance(this);
4549dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz    }
4649dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz
473ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee    @Override
4849dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz    protected void onCreate(Bundle savedInstanceState) {
493ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee        super.onCreate(savedInstanceState);
503ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee
5149dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz        mParams = getIntent().getParcelableExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS);
520a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz        if (mParams == null) {
53c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz            ProvisionLogger.loge("Missing params in EncryptDeviceActivity activity");
54c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz            finish();
5549dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz            return;
56c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz        }
57c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz
5849dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz        if (getUtils().isProfileOwnerAction(mParams.provisioningAction)) {
590a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz            initializeUi(R.string.setup_work_profile,
600a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz                    R.string.setup_profile_encryption,
61137a5aa0f8af9e73ffdd0a54719c25a9c6f5ec82Sudheer Shanka                    R.string.encrypt_device_text_for_profile_owner_setup);
6249dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz        } else if (getUtils().isDeviceOwnerAction(mParams.provisioningAction)) {
630a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz            initializeUi(R.string.setup_work_device,
640a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz                    R.string.setup_device_encryption,
65137a5aa0f8af9e73ffdd0a54719c25a9c6f5ec82Sudheer Shanka                    R.string.encrypt_device_text_for_device_owner_setup);
66c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz        } else {
670a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz            ProvisionLogger.loge("Unknown provisioning action: " + mParams.provisioningAction);
68c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz            finish();
6949dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz            return;
70a36dd9919e54ae848875205c1bb2f4bab3f66584Sander Alewijnse        }
71efd16c808b000fecc83671273b138328a956ac30Nicolas Prevot
72efd16c808b000fecc83671273b138328a956ac30Nicolas Prevot        Button encryptButton = (Button) findViewById(R.id.encrypt_button);
7349dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz        encryptButton.setOnClickListener((View v) -> {
7449dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz                    getEncryptionController().setEncryptionReminder(mParams);
75efd16c808b000fecc83671273b138328a956ac30Nicolas Prevot                    // Use settings so user confirms password/pattern and its passed
76efd16c808b000fecc83671273b138328a956ac30Nicolas Prevot                    // to encryption tool.
7749dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz                    startActivity(new Intent(ACTION_START_ENCRYPTION));
7849dbaa804b8fd5d1845f6ace366b93c0c5e3bd44Benjamin Franz                });
790a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz    }
80c79c4bc4e83edd3938e13dc4a434d5a1bb638498Benjamin Franz
81eca5fc2ef6652fc14d272acf7fbe084ebdebce4cMahaver Chopra    @Override
82eca5fc2ef6652fc14d272acf7fbe084ebdebce4cMahaver Chopra    protected int getMetricsCategory() {
83eca5fc2ef6652fc14d272acf7fbe084ebdebce4cMahaver Chopra        return PROVISIONING_ENCRYPT_DEVICE_ACTIVITY_TIME_MS;
84eca5fc2ef6652fc14d272acf7fbe084ebdebce4cMahaver Chopra    }
85eca5fc2ef6652fc14d272acf7fbe084ebdebce4cMahaver Chopra
860a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz    private void initializeUi(int headerRes, int titleRes, int mainTextRes) {
873cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak        initializeLayoutParams(R.layout.encrypt_device, headerRes, false,
88b0e275f0511cfe10c698d6a260fcfdb194e7c810Jakub Gielzak                CustomizationParams.createInstance(mParams, this, mUtils).statusBarColor);
890a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz        setTitle(titleRes);
900a964a32b7e8e7b2207416530f8f4575e1cde46eBenjamin Franz        ((TextView) findViewById(R.id.encrypt_main_text)).setText(mainTextRes);
913ab2b570bd2e18bbdd742ade979de5d368aa0a0eRobin Lee    }
923cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak}