BaseIDevicePolicyManager.java revision 91201bdbcab8a1010bf66e3dd03375bc4082ab18
1031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova/*
2031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Copyright (C) 2017 The Android Open Source Project
3031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
4031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Licensed under the Apache License, Version 2.0 (the "License");
5031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * you may not use this file except in compliance with the License.
6031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * You may obtain a copy of the License at
7031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
8031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *      http://www.apache.org/licenses/LICENSE-2.0
9031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
10031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Unless required by applicable law or agreed to in writing, software
11031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * distributed under the License is distributed on an "AS IS" BASIS,
12031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * See the License for the specific language governing permissions and
14031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * limitations under the License.
15031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */
16031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovapackage com.android.server.devicepolicy;
17031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova
187f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaruimport android.annotation.UserIdInt;
19031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaimport android.app.admin.IDevicePolicyManager;
200de748d833bef8e08329ef1abb9b681391e34ac8yuemingwimport android.content.ComponentName;
2108841efcdf4ff8cf5d743fd5f6f995730b5f876farangelovimport android.os.PersistableBundle;
22b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chauimport android.os.UserHandle;
23a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keymaster.KeymasterCertificateChain;
24a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keystore.ParcelableKeyGenParameterSpec;
25e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingwimport android.telephony.data.ApnSetting;
26031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova
27031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaimport com.android.internal.R;
28031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaimport com.android.server.SystemService;
29031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova
3004d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shankaimport java.util.ArrayList;
31e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingwimport java.util.Collections;
327f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaruimport java.util.List;
337f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
34031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova/**
35031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Defines the required interface for IDevicePolicyManager implemenation.
36031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
37031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * <p>The interface consists of public parts determined by {@link IDevicePolicyManager} and also
38031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * several package private methods required by internal infrastructure.
39031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
40031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * <p>Whenever adding an AIDL method to {@link IDevicePolicyManager}, an empty override method
41031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * should be added here to avoid build breakage in downstream branches.
42031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */
43031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaabstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub {
44031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
45031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} during the various boot phases.
46031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
47031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onBootPhase}.
48031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
49031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void systemReady(int phase);
50031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
51031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} when a new user starts.
52031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
53031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onStartUser}
54031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
55031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void handleStartUser(int userId);
56031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
57031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} when a user is being unlocked.
58031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
59031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onUnlockUser}
60031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
61031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void handleUnlockUser(int userId);
62031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
63031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} when a user is being stopped.
64031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
65031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onStopUser}
66031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
67031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void handleStopUser(int userId);
68a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri
690de748d833bef8e08329ef1abb9b681391e34ac8yuemingw    public void setSystemSetting(ComponentName who, String setting, String value){}
7008841efcdf4ff8cf5d743fd5f6f995730b5f876farangelov
718bae4eaa4db74c71d5658d8ee1905be8ecf4dfc2arangelov    public void transferOwnership(ComponentName admin, ComponentName target, PersistableBundle bundle) {}
72c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov
7391201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov    public PersistableBundle getTransferOwnershipBundle() {
7491201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov        return null;
7591201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov    }
7691201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov
77a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri    public boolean generateKeyPair(ComponentName who, String callerPackage, String algorithm,
7894d56761249a8e8c073867c17bba59b4a898f113Eran Messeri            ParcelableKeyGenParameterSpec keySpec, int idAttestationFlags,
7994d56761249a8e8c073867c17bba59b4a898f113Eran Messeri            KeymasterCertificateChain attestationChain) {
80a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri        return false;
81a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri    }
82c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov
837f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    @Override
847f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    public boolean setPasswordBlacklist(ComponentName who, String name, List<String> blacklist,
857f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru            boolean parent) {
867f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru        return false;
877f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    }
887f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
897f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    @Override
907f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    public String getPasswordBlacklistName(ComponentName who, @UserIdInt int userId,
917f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru            boolean parent) {
927f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru        return null;
937f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    }
947f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
957f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    @Override
967f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    public boolean isPasswordBlacklisted(@UserIdInt int userId, String password) {
977f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru        return false;
987f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    }
997f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
100c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov    public boolean isUsingUnifiedPassword(ComponentName who) {
101c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov        return true;
102c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov    }
103ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri
104ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri    public boolean setKeyPairCertificate(ComponentName who, String callerPackage, String alias,
105ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri            byte[] cert, byte[] chain, boolean isUserSelectable) {
106ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri        return false;
107ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri    }
108b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau
109b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    @Override
110b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    public boolean startUserInBackground(ComponentName who, UserHandle userHandle) {
111b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau        return false;
112b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    }
11393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
11493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
11593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public void setStartUserSessionMessage(
11693ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau            ComponentName admin, CharSequence startUserSessionMessage) {}
11793ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
11893ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
11993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public void setEndUserSessionMessage(ComponentName admin, CharSequence endUserSessionMessage) {}
12093ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
12193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
12293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public String getStartUserSessionMessage(ComponentName admin) {
12393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau        return null;
12493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    }
12593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
12693ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
12793ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public String getEndUserSessionMessage(ComponentName admin) {
12893ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau        return null;
12993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    }
130792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
131792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
132792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    public void setPrintingEnabled(ComponentName admin, boolean enabled) {
133792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov        throw new UnsupportedOperationException();
134792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    }
135792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
136792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
137792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    public boolean isPrintingEnabled() {
138792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov        return true;
139792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    }
140792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
141792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
142792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    public CharSequence getPrintingDisabledReason() {
143792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov        return null;
144792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    }
14504d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
14604d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    @Override
14704d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    public List<String> setMeteredDataDisabled(ComponentName admin, List<String> packageNames) {
14804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka        return packageNames;
14904d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    }
15004d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
15104d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    @Override
15204d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    public List<String> getMeteredDataDisabled(ComponentName admin) {
15304d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka        return new ArrayList<>();
15404d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    }
155e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
156e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
157e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public int addOverrideApn(ComponentName admin, ApnSetting apnSetting) {
158e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return -1;
159e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
160e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
161e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
162e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean updateOverrideApn(ComponentName admin, int apnId, ApnSetting apnSetting) {
163e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
164e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
165e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
166e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
167e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean removeOverrideApn(ComponentName admin, int apnId) {
168e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
169e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
170e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
171e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
172e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public List<ApnSetting> getOverrideApns(ComponentName admin) {
173e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return Collections.emptyList();
174e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
175e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
176e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
177e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public void setOverrideApnsEnabled(ComponentName admin, boolean enabled) {}
178e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
179e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
180e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean isOverrideApnEnabled(ComponentName admin) {
181e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
182e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
183031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova}
184