BaseIDevicePolicyManager.java revision e3d9c099e5b27779ea112408e5a74599d1cfc8ec
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
73a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri    public boolean generateKeyPair(ComponentName who, String callerPackage, String algorithm,
7494d56761249a8e8c073867c17bba59b4a898f113Eran Messeri            ParcelableKeyGenParameterSpec keySpec, int idAttestationFlags,
7594d56761249a8e8c073867c17bba59b4a898f113Eran Messeri            KeymasterCertificateChain attestationChain) {
76a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri        return false;
77a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri    }
78c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov
797f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    @Override
807f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    public boolean setPasswordBlacklist(ComponentName who, String name, List<String> blacklist,
817f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru            boolean parent) {
827f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru        return false;
837f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    }
847f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
857f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    @Override
867f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    public String getPasswordBlacklistName(ComponentName who, @UserIdInt int userId,
877f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru            boolean parent) {
887f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru        return null;
897f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    }
907f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
917f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    @Override
927f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    public boolean isPasswordBlacklisted(@UserIdInt int userId, String password) {
937f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru        return false;
947f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru    }
957f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
96c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov    public boolean isUsingUnifiedPassword(ComponentName who) {
97c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov        return true;
98c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov    }
99ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri
100ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri    public boolean setKeyPairCertificate(ComponentName who, String callerPackage, String alias,
101ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri            byte[] cert, byte[] chain, boolean isUserSelectable) {
102ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri        return false;
103ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri    }
104b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau
105b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    @Override
106b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    public boolean startUserInBackground(ComponentName who, UserHandle userHandle) {
107b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau        return false;
108b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    }
10993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
11093ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
11193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public void setStartUserSessionMessage(
11293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau            ComponentName admin, CharSequence startUserSessionMessage) {}
11393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
11493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
11593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public void setEndUserSessionMessage(ComponentName admin, CharSequence endUserSessionMessage) {}
11693ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
11793ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
11893ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public String getStartUserSessionMessage(ComponentName admin) {
11993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau        return null;
12093ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    }
12193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
12293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
12393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public String getEndUserSessionMessage(ComponentName admin) {
12493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau        return null;
12593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    }
126792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
127792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
128792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    public void setPrintingEnabled(ComponentName admin, boolean enabled) {
129792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov        throw new UnsupportedOperationException();
130792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    }
131792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
132792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
133792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    public boolean isPrintingEnabled() {
134792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov        return true;
135792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    }
136792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
137792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
138792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    public CharSequence getPrintingDisabledReason() {
139792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov        return null;
140792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    }
14104d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
14204d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    @Override
14304d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    public List<String> setMeteredDataDisabled(ComponentName admin, List<String> packageNames) {
14404d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka        return packageNames;
14504d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    }
14604d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
14704d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    @Override
14804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    public List<String> getMeteredDataDisabled(ComponentName admin) {
14904d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka        return new ArrayList<>();
15004d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    }
151e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
152e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
153e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public int addOverrideApn(ComponentName admin, ApnSetting apnSetting) {
154e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return -1;
155e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
156e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
157e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
158e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean updateOverrideApn(ComponentName admin, int apnId, ApnSetting apnSetting) {
159e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
160e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
161e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
162e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
163e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean removeOverrideApn(ComponentName admin, int apnId) {
164e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
165e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
166e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
167e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
168e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public List<ApnSetting> getOverrideApns(ComponentName admin) {
169e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return Collections.emptyList();
170e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
171e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
172e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
173e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public void setOverrideApnsEnabled(ComponentName admin, boolean enabled) {}
174e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
175e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
176e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean isOverrideApnEnabled(ComponentName admin) {
177e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
178e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
179031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova}
180