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