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