1cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki/* 2cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * Copyright (C) 2015 The Android Open Source Project 3cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * 4cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 5cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * you may not use this file except in compliance with the License. 6cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * You may obtain a copy of the License at 7cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * 8cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 9cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * 10cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * Unless required by applicable law or agreed to in writing, software 11cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 12cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * See the License for the specific language governing permissions and 14cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * limitations under the License. 15cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki */ 16cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukipackage com.android.server.devicepolicy; 17cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 18cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.app.IActivityManager; 19cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.app.NotificationManager; 20b643fb0e67460344ade2e3db92738999f8168496Makoto Onukiimport android.app.backup.IBackupManager; 21f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onukiimport android.content.pm.IPackageManager; 22cb6fd80721253ffa9dcab5cf8c2f4e9b9cd17cccFyodor Kupolovimport android.content.pm.PackageManagerInternal; 233e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport android.database.ContentObserver; 24b643fb0e67460344ade2e3db92738999f8168496Makoto Onukiimport android.media.IAudioService; 253e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport android.net.Uri; 26cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.os.Looper; 27cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.os.PowerManagerInternal; 28cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.os.UserHandle; 29cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.os.UserManager; 30068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onukiimport android.os.UserManagerInternal; 311216ae5d023e8f6e4f158a447a5764288e4ccc3eMahaver Chopraimport android.telephony.TelephonyManager; 323e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport android.util.ArrayMap; 333e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport android.util.Pair; 34cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukiimport android.view.IWindowManager; 35cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 363e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport com.android.internal.widget.LockPatternUtils; 37cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 383e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport java.io.File; 393e794afb82228199c0a83bed5463dbeb3c48dd62Victor Changimport java.util.Map; 40cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 41cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki/** 42cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * Overrides {@link #DevicePolicyManagerService} for dependency injection. 43cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki */ 44cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onukipublic class DevicePolicyManagerServiceTestable extends DevicePolicyManagerService { 45cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki /** 46cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki * Overrides {@link #Owners} for dependency injection. 47cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki */ 48cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki public static class OwnersTestable extends Owners { 49cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki public static final String LEGACY_FILE = "legacy.xml"; 50cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki public static final String DEVICE_OWNER_FILE = "device_owner2.xml"; 51cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki public static final String PROFILE_OWNER_FILE_BASE = "profile_owner.xml"; 52cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 53f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki private final File mLegacyFile; 54f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki private final File mDeviceOwnerFile; 55f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki private final File mProfileOwnerBase; 56cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 57d932f7689d799b07a6776bc7c59749f672528239Makoto Onuki public OwnersTestable(DpmMockContext context) { 58c29f62c7388f550da2c7368c5dbc0aec7d1564feMakoto Onuki super(context.userManager, context.userManagerInternal, context.packageManagerInternal); 59d932f7689d799b07a6776bc7c59749f672528239Makoto Onuki mLegacyFile = new File(context.dataDir, LEGACY_FILE); 60d932f7689d799b07a6776bc7c59749f672528239Makoto Onuki mDeviceOwnerFile = new File(context.dataDir, DEVICE_OWNER_FILE); 61d932f7689d799b07a6776bc7c59749f672528239Makoto Onuki mProfileOwnerBase = new File(context.dataDir, PROFILE_OWNER_FILE_BASE); 62cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki } 63cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 64cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki @Override 65cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki File getLegacyConfigFileWithTestOverride() { 66cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki return mLegacyFile; 67cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki } 68cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 69cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki @Override 70cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki File getDeviceOwnerFileWithTestOverride() { 71cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki return mDeviceOwnerFile; 72cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki } 73cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 74cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki @Override 75cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki File getProfileOwnerFileWithTestOverride(int userId) { 76cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki return new File(mDeviceOwnerFile.getAbsoluteFile() + "-" + userId); 77cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki } 78cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki } 79cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 80b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki public final DpmMockContext context; 813e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang private final MockInjector mMockInjector; 82cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 83cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki public DevicePolicyManagerServiceTestable(DpmMockContext context, File dataDir) { 84b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki this(new MockInjector(context, dataDir)); 85b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 86cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 87b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki private DevicePolicyManagerServiceTestable(MockInjector injector) { 88b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki super(injector); 893e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang mMockInjector = injector; 90b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki this.context = injector.context; 91b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 92cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 933e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang 943e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang public void notifyChangeToContentObserver(Uri uri, int userHandle) { 953e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang ContentObserver co = mMockInjector.mContentObservers 963e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang .get(new Pair<Uri, Integer>(uri, userHandle)); 973e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang if (co != null) { 983e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang co.onChange(false, uri, userHandle); // notify synchronously 993e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang } 1003e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang 1013e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang // Notify USER_ALL observer too. 1023e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang co = mMockInjector.mContentObservers 1033e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang .get(new Pair<Uri, Integer>(uri, UserHandle.USER_ALL)); 1043e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang if (co != null) { 1053e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang co.onChange(false, uri, userHandle); // notify synchronously 1063e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang } 1073e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang } 1083e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang 1093e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang 110b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki private static class MockInjector extends Injector { 111cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 112b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki public final DpmMockContext context; 113cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 114b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki public final File dataDir; 115cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 1163e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang // Key is a pair of uri and userId 1173e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang private final Map<Pair<Uri, Integer>, ContentObserver> mContentObservers = new ArrayMap<>(); 1183e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang 119b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki private MockInjector(DpmMockContext context, File dataDir) { 120b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki super(context); 121b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki this.context = context; 122b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki this.dataDir = dataDir; 123b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 124cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 125b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 126b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki Owners newOwners() { 127d932f7689d799b07a6776bc7c59749f672528239Makoto Onuki return new OwnersTestable(context); 128b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 129cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 130b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 131b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki UserManager getUserManager() { 132b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.userManager; 133b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 134cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 135b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 136068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onuki UserManagerInternal getUserManagerInternal() { 137068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onuki return context.userManagerInternal; 138068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onuki } 139068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onuki 140068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onuki @Override 141cb6fd80721253ffa9dcab5cf8c2f4e9b9cd17cccFyodor Kupolov PackageManagerInternal getPackageManagerInternal() { 142cb6fd80721253ffa9dcab5cf8c2f4e9b9cd17cccFyodor Kupolov return context.packageManagerInternal; 143cb6fd80721253ffa9dcab5cf8c2f4e9b9cd17cccFyodor Kupolov } 144cb6fd80721253ffa9dcab5cf8c2f4e9b9cd17cccFyodor Kupolov 145cb6fd80721253ffa9dcab5cf8c2f4e9b9cd17cccFyodor Kupolov @Override 146b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki PowerManagerInternal getPowerManagerInternal() { 147b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.powerManagerInternal; 148b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 149f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki 150b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 151b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki NotificationManager getNotificationManager() { 152b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.notificationManager; 153b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 154cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 155b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 156b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki IWindowManager getIWindowManager() { 157b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.iwindowManager; 158b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 159cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 160b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 161219bbafc3fa40dae163d652365cc4a97d613011fMakoto Onuki IActivityManager getIActivityManager() { 162b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.iactivityManager; 163b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 164cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 165b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 166b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki IPackageManager getIPackageManager() { 167b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.ipackageManager; 168b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 169cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 170b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 171b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki IBackupManager getIBackupManager() { 172b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.ibackupManager; 173b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 174cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 175b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 176b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki IAudioService getIAudioService() { 177b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.iaudioService; 178b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 179cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 180b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 181b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki Looper getMyLooper() { 182b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return Looper.getMainLooper(); 183b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 184cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 185b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 186b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki LockPatternUtils newLockPatternUtils() { 187b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.lockPatternUtils; 188b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 189cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 190b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 191d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki boolean storageManagerIsFileBasedEncryptionEnabled() { 192d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki return context.storageManager.isFileBasedEncryptionEnabled(); 193d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki } 194d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki 195d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki @Override 196d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki boolean storageManagerIsNonDefaultBlockEncrypted() { 197d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki return context.storageManager.isNonDefaultBlockEncrypted(); 198d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki } 199d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki 200d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki @Override 201d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki boolean storageManagerIsEncrypted() { 202d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki return context.storageManager.isEncrypted(); 203d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki } 204d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki 205d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki @Override 206d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki boolean storageManagerIsEncryptable() { 207d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki return context.storageManager.isEncryptable(); 208d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki } 209d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki 210d4c9e541ec7110d3c842d6f92c3ec6beb0b6d997Makoto Onuki @Override 211b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki String getDevicePolicyFilePathForSystemUser() { 212068c54a5be697c3df4657dcda33cd17c4b547710Makoto Onuki return context.systemUserDataDir.getAbsolutePath() + "/"; 213b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 214cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 215b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 216b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki long binderClearCallingIdentity() { 217b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.binder.clearCallingIdentity(); 218b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 219cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 220b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 221b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki void binderRestoreCallingIdentity(long token) { 222b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki context.binder.restoreCallingIdentity(token); 223b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 224f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki 225b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 226b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki int binderGetCallingUid() { 227b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.binder.getCallingUid(); 228b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 229cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki 230b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 231b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki int binderGetCallingPid() { 232b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.binder.getCallingPid(); 233b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 234f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki 235b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 236b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki UserHandle binderGetCallingUserHandle() { 237b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.binder.getCallingUserHandle(); 238b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 239f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki 240b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 241b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki boolean binderIsCallingUidMyUid() { 242b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.binder.isCallerUidMyUid(); 243b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 244b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 245b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 246b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki File environmentGetUserSystemDirectory(int userId) { 247b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.environment.getUserSystemDirectory(userId); 248b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 249b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 250b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 251b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki void powerManagerGoToSleep(long time, int reason, int flags) { 252b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki context.powerManager.goToSleep(time, reason, flags); 253b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 254b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 255b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 256f8373b5afc6dd25350bbca7093178807f1cc9ed6Mahaver Chopra void powerManagerReboot(String reason) { 257f8373b5afc6dd25350bbca7093178807f1cc9ed6Mahaver Chopra context.powerManager.reboot(reason); 258f8373b5afc6dd25350bbca7093178807f1cc9ed6Mahaver Chopra } 259f8373b5afc6dd25350bbca7093178807f1cc9ed6Mahaver Chopra 260f8373b5afc6dd25350bbca7093178807f1cc9ed6Mahaver Chopra @Override 261b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki boolean systemPropertiesGetBoolean(String key, boolean def) { 262b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.systemProperties.getBoolean(key, def); 263b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 264b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 265b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 266b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki long systemPropertiesGetLong(String key, long def) { 267b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.systemProperties.getLong(key, def); 268b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 269f76b06a6b546f430cf85e561858ed12eedc32b81Makoto Onuki 270b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 271b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki String systemPropertiesGet(String key, String def) { 272b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.systemProperties.get(key, def); 273b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 274b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 275b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 276b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki String systemPropertiesGet(String key) { 277b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.systemProperties.get(key); 278b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 279b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 280b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 281b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki void systemPropertiesSet(String key, String value) { 282b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki context.systemProperties.set(key, value); 283b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 284b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki 285b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki @Override 286b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki boolean userManagerIsSplitSystemUser() { 287b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki return context.userManagerForMock.isSplitSystemUser(); 288b643fb0e67460344ade2e3db92738999f8168496Makoto Onuki } 289a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 290a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 2913e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang void registerContentObserver(Uri uri, boolean notifyForDescendents, 2923e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang ContentObserver observer, int userHandle) { 2933e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang mContentObservers.put(new Pair<Uri, Integer>(uri, userHandle), observer); 2943e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang } 2953e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang 2963e794afb82228199c0a83bed5463dbeb3c48dd62Victor Chang @Override 297a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki int settingsSecureGetIntForUser(String name, int def, int userHandle) { 298a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki return context.settings.settingsSecureGetIntForUser(name, def, userHandle); 299a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 300a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 301a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 302a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsSecurePutIntForUser(String name, int value, int userHandle) { 303a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsSecurePutIntForUser(name, value, userHandle); 304a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 305a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 306a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 307a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsSecurePutStringForUser(String name, String value, int userHandle) { 308a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsSecurePutStringForUser(name, value, userHandle); 309a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 310a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 311a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 312a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsGlobalPutStringForUser(String name, String value, int userHandle) { 313a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsGlobalPutStringForUser(name, value, userHandle); 314a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 315a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 316a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 317a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsSecurePutInt(String name, int value) { 318a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsSecurePutInt(name, value); 319a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 320a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 321a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 322a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsGlobalPutInt(String name, int value) { 323a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsGlobalPutInt(name, value); 324a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 325a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 326a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 327a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsSecurePutString(String name, String value) { 328a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsSecurePutString(name, value); 329a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 330a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki 331a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki @Override 332a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki void settingsGlobalPutString(String name, String value) { 333a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki context.settings.settingsGlobalPutString(name, value); 334a4f119790e32fcce56586e7324d508e35cb30a2aMakoto Onuki } 3353f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki 3363f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki @Override 3373f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki int settingsGlobalGetInt(String name, int def) { 3383f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki return context.settings.settingsGlobalGetInt(name, def); 3393f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki } 3403f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki 3413f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki @Override 3423f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki void securityLogSetLoggingEnabledProperty(boolean enabled) { 3433f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki context.settings.securityLogSetLoggingEnabledProperty(enabled); 3443f3657a61b54d495bf2e692289eb92a48fe5a0b2Makoto Onuki } 34549caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu 34649caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu @Override 34749caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu boolean securityLogGetLoggingEnabledProperty() { 34849caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu return context.settings.securityLogGetLoggingEnabledProperty(); 34949caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu } 35049caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu 35149caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu @Override 35249caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu boolean securityLogIsLoggingEnabled() { 35349caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu return context.settings.securityLogIsLoggingEnabled(); 35449caead1c2608f57ac6c260396c6bfd058b921aeRubin Xu } 3551216ae5d023e8f6e4f158a447a5764288e4ccc3eMahaver Chopra 3561216ae5d023e8f6e4f158a447a5764288e4ccc3eMahaver Chopra @Override 3571216ae5d023e8f6e4f158a447a5764288e4ccc3eMahaver Chopra TelephonyManager getTelephonyManager() { 3581216ae5d023e8f6e4f158a447a5764288e4ccc3eMahaver Chopra return context.telephonyManager; 3591216ae5d023e8f6e4f158a447a5764288e4ccc3eMahaver Chopra } 360cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki } 361cc4bbeb76af92a8484fe05f37c4ff412b4c47cccMakoto Onuki} 362