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;
22a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keymaster.KeymasterCertificateChain;
23a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keystore.ParcelableKeyGenParameterSpec;
24e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingwimport android.telephony.data.ApnSetting;
25031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova
26031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaimport com.android.server.SystemService;
27031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova
2804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shankaimport java.util.ArrayList;
29e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingwimport java.util.Collections;
307f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaruimport java.util.List;
317f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru
32031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova/**
33031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Defines the required interface for IDevicePolicyManager implemenation.
34031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
35031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * <p>The interface consists of public parts determined by {@link IDevicePolicyManager} and also
36031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * several package private methods required by internal infrastructure.
37031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova *
38031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * <p>Whenever adding an AIDL method to {@link IDevicePolicyManager}, an empty override method
39031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * should be added here to avoid build breakage in downstream branches.
40031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */
41031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaabstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub {
42031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
43031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} during the various boot phases.
44031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
45031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onBootPhase}.
46031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
47031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void systemReady(int phase);
48031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
49031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} when a new user starts.
50031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
51031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onStartUser}
52031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
53031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void handleStartUser(int userId);
54031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
55031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} when a user is being unlocked.
56031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
57031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onUnlockUser}
58031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
59031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void handleUnlockUser(int userId);
60031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    /**
61031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * To be called by {@link DevicePolicyManagerService#Lifecycle} when a user is being stopped.
62031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     *
63031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     * @see {@link SystemService#onStopUser}
64031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova     */
65031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova    abstract void handleStopUser(int userId);
66a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri
670de748d833bef8e08329ef1abb9b681391e34ac8yuemingw    public void setSystemSetting(ComponentName who, String setting, String value){}
6808841efcdf4ff8cf5d743fd5f6f995730b5f876farangelov
698bae4eaa4db74c71d5658d8ee1905be8ecf4dfc2arangelov    public void transferOwnership(ComponentName admin, ComponentName target, PersistableBundle bundle) {}
70c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov
7191201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov    public PersistableBundle getTransferOwnershipBundle() {
7291201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov        return null;
7391201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov    }
7491201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov
75a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri    public boolean generateKeyPair(ComponentName who, String callerPackage, String algorithm,
7694d56761249a8e8c073867c17bba59b4a898f113Eran Messeri            ParcelableKeyGenParameterSpec keySpec, int idAttestationFlags,
7794d56761249a8e8c073867c17bba59b4a898f113Eran Messeri            KeymasterCertificateChain attestationChain) {
78a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri        return false;
79a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri    }
80c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov
81c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov    public boolean isUsingUnifiedPassword(ComponentName who) {
82c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov        return true;
83c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov    }
84ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri
85ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri    public boolean setKeyPairCertificate(ComponentName who, String callerPackage, String alias,
86ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri            byte[] cert, byte[] chain, boolean isUserSelectable) {
87ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri        return false;
88ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri    }
89b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau
90b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau    @Override
9193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public void setStartUserSessionMessage(
9293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau            ComponentName admin, CharSequence startUserSessionMessage) {}
9393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
9493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
9593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public void setEndUserSessionMessage(ComponentName admin, CharSequence endUserSessionMessage) {}
9693ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
9793ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
9893ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public String getStartUserSessionMessage(ComponentName admin) {
9993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau        return null;
10093ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    }
10193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau
10293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    @Override
10393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    public String getEndUserSessionMessage(ComponentName admin) {
10493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau        return null;
10593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau    }
106792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov
107792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov    @Override
1085416468217e5c79b54d795cb6227e5b9312c24d6Michael Wachenschwanz    public List<String> setMeteredDataDisabledPackages(ComponentName admin, List<String> packageNames) {
10904d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka        return packageNames;
11004d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    }
11104d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka
11204d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    @Override
1135416468217e5c79b54d795cb6227e5b9312c24d6Michael Wachenschwanz    public List<String> getMeteredDataDisabledPackages(ComponentName admin) {
11404d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka        return new ArrayList<>();
11504d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka    }
116e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
117e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
118e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public int addOverrideApn(ComponentName admin, ApnSetting apnSetting) {
119e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return -1;
120e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
121e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
122e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
123e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean updateOverrideApn(ComponentName admin, int apnId, ApnSetting apnSetting) {
124e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
125e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
126e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
127e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
128e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean removeOverrideApn(ComponentName admin, int apnId) {
129e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
130e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
131e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
132e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
133e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public List<ApnSetting> getOverrideApns(ComponentName admin) {
134e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return Collections.emptyList();
135e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
136e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
137e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
138e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public void setOverrideApnsEnabled(ComponentName admin, boolean enabled) {}
139e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw
140e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    @Override
141e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    public boolean isOverrideApnEnabled(ComponentName admin) {
142e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw        return false;
143e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw    }
14429b9a7d1f4168d888ee2f4a0ff3882523f655e6bRubin Xu
14529b9a7d1f4168d888ee2f4a0ff3882523f655e6bRubin Xu    public void clearSystemUpdatePolicyFreezePeriodRecord() {
14629b9a7d1f4168d888ee2f4a0ff3882523f655e6bRubin Xu    }
1475be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka
1485be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka    @Override
1495416468217e5c79b54d795cb6227e5b9312c24d6Michael Wachenschwanz    public boolean isMeteredDataDisabledPackageForUser(ComponentName admin,
1505be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka            String packageName, int userId) {
1515be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka        return false;
1525be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka    }
1535bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov
1545bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov    @Override
1555bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov    public long forceSecurityLogs() {
1565bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov        return 0;
1575bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov    }
15826449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks
15926449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks    @Override
16026449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks    public void setDefaultSmsApplication(ComponentName admin, String packageName) {
16126449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks    }
162031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova}
163