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