blob: 00e27c9a54cb10241e2619131d28520371bd32c4 [file] [log] [blame]
Makoto Onukicc4bbeb2015-09-17 10:28:24 -07001/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.server.devicepolicy;
17
Alex Chaub6ef8692018-01-09 14:16:36 +000018import android.app.ActivityManagerInternal;
yuemingwe43cdf72017-10-12 16:52:11 +010019import android.app.AlarmManager;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070020import android.app.IActivityManager;
21import android.app.NotificationManager;
Robin Lee088d7aa2017-03-17 12:50:08 +000022import android.app.PendingIntent;
Makoto Onukib643fb02015-09-22 15:03:44 -070023import android.app.backup.IBackupManager;
Sudheer Shanka101c3532018-01-08 16:28:42 -080024import android.app.usage.UsageStatsManagerInternal;
Robin Lee088d7aa2017-03-17 12:50:08 +000025import android.content.Context;
26import android.content.Intent;
Makoto Onukif76b06a2015-09-22 15:03:44 -070027import android.content.pm.IPackageManager;
Fyodor Kupolovcb6fd802015-11-05 14:27:06 -080028import android.content.pm.PackageManagerInternal;
Victor Chang3e794af2016-03-04 13:48:17 +000029import android.database.ContentObserver;
Makoto Onukib643fb02015-09-22 15:03:44 -070030import android.media.IAudioService;
Bartosz Fabianowskib21b2412016-11-17 04:53:33 +010031import android.net.IIpConnectivityMetrics;
Victor Chang3e794af2016-03-04 13:48:17 +000032import android.net.Uri;
Robin Lee088d7aa2017-03-17 12:50:08 +000033import android.os.Bundle;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070034import android.os.Looper;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070035import android.os.PowerManagerInternal;
36import android.os.UserHandle;
37import android.os.UserManager;
Makoto Onuki068c54a2015-10-13 14:34:03 -070038import android.os.UserManagerInternal;
Robin Lee7f5c91c2017-02-08 21:27:02 +000039import android.security.KeyChain;
yuemingwe43cdf72017-10-12 16:52:11 +010040import android.support.annotation.NonNull;
Mahaver Chopra1216ae52016-03-11 15:39:48 +000041import android.telephony.TelephonyManager;
Victor Chang3e794af2016-03-04 13:48:17 +000042import android.util.ArrayMap;
Victor Chang3e794af2016-03-04 13:48:17 +000043import android.util.Pair;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070044import android.view.IWindowManager;
45
yuemingwe43cdf72017-10-12 16:52:11 +010046import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
Victor Chang3e794af2016-03-04 13:48:17 +000047import com.android.internal.widget.LockPatternUtils;
Sudheer Shankac53c47f2018-01-16 12:01:00 -080048import com.android.server.net.NetworkPolicyManagerInternal;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070049
Victor Chang3e794af2016-03-04 13:48:17 +000050import java.io.File;
Esteban Talaverab88f42b2017-01-24 16:47:16 +000051import java.io.IOException;
Victor Chang3e794af2016-03-04 13:48:17 +000052import java.util.Map;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070053
54/**
55 * Overrides {@link #DevicePolicyManagerService} for dependency injection.
56 */
57public class DevicePolicyManagerServiceTestable extends DevicePolicyManagerService {
58 /**
59 * Overrides {@link #Owners} for dependency injection.
60 */
61 public static class OwnersTestable extends Owners {
62 public static final String LEGACY_FILE = "legacy.xml";
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070063
Pavel Grafov75c0a892017-05-18 17:28:27 +010064 public OwnersTestable(MockSystemServices services) {
65 super(services.userManager, services.userManagerInternal,
arangelov91201bd2018-01-04 17:10:21 +000066 services.packageManagerInternal, new MockInjector(services));
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070067 }
68
arangelov91201bd2018-01-04 17:10:21 +000069 static class MockInjector extends Injector {
70 private final MockSystemServices mServices;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070071
arangelov91201bd2018-01-04 17:10:21 +000072 private MockInjector(MockSystemServices services) {
73 mServices = services;
74 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070075
arangelov91201bd2018-01-04 17:10:21 +000076 @Override
77 File environmentGetDataSystemDirectory() {
78 return mServices.dataDir;
79 }
80
81 @Override
82 File environmentGetUserSystemDirectory(int userId) {
83 return mServices.environment.getUserSystemDirectory(userId);
84 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070085 }
86 }
87
Makoto Onukib643fb02015-09-22 15:03:44 -070088 public final DpmMockContext context;
arangelov91201bd2018-01-04 17:10:21 +000089 protected final MockInjector mMockInjector;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070090
Pavel Grafov75c0a892017-05-18 17:28:27 +010091 public DevicePolicyManagerServiceTestable(MockSystemServices services, DpmMockContext context) {
92 this(new MockInjector(services, context));
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070093 }
94
Makoto Onukib643fb02015-09-22 15:03:44 -070095 private DevicePolicyManagerServiceTestable(MockInjector injector) {
96 super(injector);
Victor Chang3e794af2016-03-04 13:48:17 +000097 mMockInjector = injector;
Makoto Onukib643fb02015-09-22 15:03:44 -070098 this.context = injector.context;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -070099 }
100
Alexandru-Andrei Rotaru7f31bb02017-09-07 16:29:48 +0100101 @Override
102 public boolean isPasswordBlacklisted(int userId, String password) {
103 return false;
104 }
105
Victor Chang3e794af2016-03-04 13:48:17 +0000106
107 public void notifyChangeToContentObserver(Uri uri, int userHandle) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100108 ContentObserver co = mMockInjector.mContentObservers.get(new Pair<>(uri, userHandle));
Victor Chang3e794af2016-03-04 13:48:17 +0000109 if (co != null) {
110 co.onChange(false, uri, userHandle); // notify synchronously
111 }
112
113 // Notify USER_ALL observer too.
Pavel Grafov75c0a892017-05-18 17:28:27 +0100114 co = mMockInjector.mContentObservers.get(new Pair<>(uri, UserHandle.USER_ALL));
Victor Chang3e794af2016-03-04 13:48:17 +0000115 if (co != null) {
116 co.onChange(false, uri, userHandle); // notify synchronously
117 }
118 }
119
arangelov91201bd2018-01-04 17:10:21 +0000120 static class MockInjector extends Injector {
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700121
Makoto Onukib643fb02015-09-22 15:03:44 -0700122 public final DpmMockContext context;
Pavel Grafov75c0a892017-05-18 17:28:27 +0100123 private final MockSystemServices services;
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700124
Victor Chang3e794af2016-03-04 13:48:17 +0000125 // Key is a pair of uri and userId
126 private final Map<Pair<Uri, Integer>, ContentObserver> mContentObservers = new ArrayMap<>();
127
arangelov91201bd2018-01-04 17:10:21 +0000128 public MockInjector(MockSystemServices services, DpmMockContext context) {
Makoto Onukib643fb02015-09-22 15:03:44 -0700129 super(context);
Pavel Grafov75c0a892017-05-18 17:28:27 +0100130 this.services = services;
Makoto Onukib643fb02015-09-22 15:03:44 -0700131 this.context = context;
Makoto Onukib643fb02015-09-22 15:03:44 -0700132 }
Makoto Onukif76b06a2015-09-22 15:03:44 -0700133
Makoto Onukib643fb02015-09-22 15:03:44 -0700134 @Override
135 Owners newOwners() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100136 return new OwnersTestable(services);
Makoto Onukib643fb02015-09-22 15:03:44 -0700137 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700138
Makoto Onukib643fb02015-09-22 15:03:44 -0700139 @Override
140 UserManager getUserManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100141 return services.userManager;
Makoto Onukib643fb02015-09-22 15:03:44 -0700142 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700143
Makoto Onukib643fb02015-09-22 15:03:44 -0700144 @Override
Makoto Onuki068c54a2015-10-13 14:34:03 -0700145 UserManagerInternal getUserManagerInternal() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100146 return services.userManagerInternal;
Makoto Onuki068c54a2015-10-13 14:34:03 -0700147 }
148
149 @Override
Sudheer Shanka101c3532018-01-08 16:28:42 -0800150 UsageStatsManagerInternal getUsageStatsManagerInternal() {
151 return services.usageStatsManagerInternal;
152 }
153
154 @Override
Sudheer Shankac53c47f2018-01-16 12:01:00 -0800155 NetworkPolicyManagerInternal getNetworkPolicyManagerInternal() {
156 return services.networkPolicyManagerInternal;
157 }
158
159 @Override
Fyodor Kupolovcb6fd802015-11-05 14:27:06 -0800160 PackageManagerInternal getPackageManagerInternal() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100161 return services.packageManagerInternal;
Fyodor Kupolovcb6fd802015-11-05 14:27:06 -0800162 }
163
164 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700165 PowerManagerInternal getPowerManagerInternal() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100166 return services.powerManagerInternal;
Makoto Onukib643fb02015-09-22 15:03:44 -0700167 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700168
Makoto Onukib643fb02015-09-22 15:03:44 -0700169 @Override
170 NotificationManager getNotificationManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100171 return services.notificationManager;
Makoto Onukib643fb02015-09-22 15:03:44 -0700172 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700173
Makoto Onukib643fb02015-09-22 15:03:44 -0700174 @Override
Bartosz Fabianowskib21b2412016-11-17 04:53:33 +0100175 IIpConnectivityMetrics getIIpConnectivityMetrics() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100176 return services.iipConnectivityMetrics;
Bartosz Fabianowskib21b2412016-11-17 04:53:33 +0100177 }
178
179 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700180 IWindowManager getIWindowManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100181 return services.iwindowManager;
Makoto Onukib643fb02015-09-22 15:03:44 -0700182 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700183
Makoto Onukib643fb02015-09-22 15:03:44 -0700184 @Override
Makoto Onuki219bbaf2015-11-12 01:38:47 +0000185 IActivityManager getIActivityManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100186 return services.iactivityManager;
Makoto Onukib643fb02015-09-22 15:03:44 -0700187 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700188
Makoto Onukib643fb02015-09-22 15:03:44 -0700189 @Override
Alex Chaub6ef8692018-01-09 14:16:36 +0000190 ActivityManagerInternal getActivityManagerInternal() {
191 return services.activityManagerInternal;
192 }
193
194 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700195 IPackageManager getIPackageManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100196 return services.ipackageManager;
Makoto Onukib643fb02015-09-22 15:03:44 -0700197 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700198
Makoto Onukib643fb02015-09-22 15:03:44 -0700199 @Override
200 IBackupManager getIBackupManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100201 return services.ibackupManager;
Makoto Onukib643fb02015-09-22 15:03:44 -0700202 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700203
Makoto Onukib643fb02015-09-22 15:03:44 -0700204 @Override
205 IAudioService getIAudioService() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100206 return services.iaudioService;
Makoto Onukib643fb02015-09-22 15:03:44 -0700207 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700208
Makoto Onukib643fb02015-09-22 15:03:44 -0700209 @Override
210 Looper getMyLooper() {
211 return Looper.getMainLooper();
212 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700213
Makoto Onukib643fb02015-09-22 15:03:44 -0700214 @Override
yuemingwe43cdf72017-10-12 16:52:11 +0100215 AlarmManager getAlarmManager() {return services.alarmManager;}
216
217 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700218 LockPatternUtils newLockPatternUtils() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100219 return services.lockPatternUtils;
Makoto Onukib643fb02015-09-22 15:03:44 -0700220 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700221
Makoto Onukib643fb02015-09-22 15:03:44 -0700222 @Override
Alexandru-Andrei Rotaru7f31bb02017-09-07 16:29:48 +0100223 PasswordBlacklist newPasswordBlacklist(File file) {
224 return services.passwordBlacklist;
225 }
226
227 @Override
Makoto Onukid4c9e542016-02-25 18:17:30 -0800228 boolean storageManagerIsFileBasedEncryptionEnabled() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100229 return services.storageManager.isFileBasedEncryptionEnabled();
Makoto Onukid4c9e542016-02-25 18:17:30 -0800230 }
231
232 @Override
233 boolean storageManagerIsNonDefaultBlockEncrypted() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100234 return services.storageManager.isNonDefaultBlockEncrypted();
Makoto Onukid4c9e542016-02-25 18:17:30 -0800235 }
236
237 @Override
238 boolean storageManagerIsEncrypted() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100239 return services.storageManager.isEncrypted();
Makoto Onukid4c9e542016-02-25 18:17:30 -0800240 }
241
242 @Override
243 boolean storageManagerIsEncryptable() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100244 return services.storageManager.isEncryptable();
Makoto Onukid4c9e542016-02-25 18:17:30 -0800245 }
246
247 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700248 String getDevicePolicyFilePathForSystemUser() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100249 return services.systemUserDataDir.getAbsolutePath() + "/";
Makoto Onukib643fb02015-09-22 15:03:44 -0700250 }
Makoto Onukif76b06a2015-09-22 15:03:44 -0700251
Makoto Onukib643fb02015-09-22 15:03:44 -0700252 @Override
253 long binderClearCallingIdentity() {
254 return context.binder.clearCallingIdentity();
255 }
Makoto Onukif76b06a2015-09-22 15:03:44 -0700256
Makoto Onukib643fb02015-09-22 15:03:44 -0700257 @Override
258 void binderRestoreCallingIdentity(long token) {
259 context.binder.restoreCallingIdentity(token);
260 }
Makoto Onukif76b06a2015-09-22 15:03:44 -0700261
Makoto Onukib643fb02015-09-22 15:03:44 -0700262 @Override
yuemingwe43cdf72017-10-12 16:52:11 +0100263 void binderWithCleanCallingIdentity(@NonNull ThrowingRunnable action) {
264 context.binder.withCleanCallingIdentity(action);
265 }
266
267 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700268 int binderGetCallingUid() {
269 return context.binder.getCallingUid();
270 }
Makoto Onukif76b06a2015-09-22 15:03:44 -0700271
Makoto Onukib643fb02015-09-22 15:03:44 -0700272 @Override
273 int binderGetCallingPid() {
274 return context.binder.getCallingPid();
275 }
276
277 @Override
278 UserHandle binderGetCallingUserHandle() {
279 return context.binder.getCallingUserHandle();
280 }
281
282 @Override
283 boolean binderIsCallingUidMyUid() {
284 return context.binder.isCallerUidMyUid();
285 }
286
287 @Override
288 File environmentGetUserSystemDirectory(int userId) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100289 return services.environment.getUserSystemDirectory(userId);
Makoto Onukib643fb02015-09-22 15:03:44 -0700290 }
291
292 @Override
293 void powerManagerGoToSleep(long time, int reason, int flags) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100294 services.powerManager.goToSleep(time, reason, flags);
Makoto Onukib643fb02015-09-22 15:03:44 -0700295 }
296
297 @Override
Mahaver Chopraf8373b52015-12-23 14:42:18 +0000298 void powerManagerReboot(String reason) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100299 services.powerManager.reboot(reason);
Mahaver Chopraf8373b52015-12-23 14:42:18 +0000300 }
301
302 @Override
yinxuf4f9cec2017-06-19 10:28:19 -0700303 void recoverySystemRebootWipeUserData(boolean shutdown, String reason, boolean force,
304 boolean wipeEuicc) throws IOException {
305 services.recoverySystem.rebootWipeUserData(shutdown, reason, force, wipeEuicc);
Esteban Talaverab88f42b2017-01-24 16:47:16 +0000306 }
307
308 @Override
Makoto Onukib643fb02015-09-22 15:03:44 -0700309 boolean systemPropertiesGetBoolean(String key, boolean def) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100310 return services.systemProperties.getBoolean(key, def);
Makoto Onukib643fb02015-09-22 15:03:44 -0700311 }
312
313 @Override
314 long systemPropertiesGetLong(String key, long def) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100315 return services.systemProperties.getLong(key, def);
Makoto Onukib643fb02015-09-22 15:03:44 -0700316 }
317
318 @Override
319 String systemPropertiesGet(String key, String def) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100320 return services.systemProperties.get(key, def);
Makoto Onukib643fb02015-09-22 15:03:44 -0700321 }
322
323 @Override
324 String systemPropertiesGet(String key) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100325 return services.systemProperties.get(key);
Makoto Onukib643fb02015-09-22 15:03:44 -0700326 }
327
328 @Override
329 void systemPropertiesSet(String key, String value) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100330 services.systemProperties.set(key, value);
Makoto Onukib643fb02015-09-22 15:03:44 -0700331 }
332
333 @Override
334 boolean userManagerIsSplitSystemUser() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100335 return services.userManagerForMock.isSplitSystemUser();
Makoto Onukib643fb02015-09-22 15:03:44 -0700336 }
Makoto Onukia4f11972015-10-01 13:19:58 -0700337
338 @Override
Robin Lee088d7aa2017-03-17 12:50:08 +0000339 PendingIntent pendingIntentGetActivityAsUser(Context context, int requestCode,
340 Intent intent, int flags, Bundle options, UserHandle user) {
341 return null;
342 }
343
344 @Override
Victor Chang3e794af2016-03-04 13:48:17 +0000345 void registerContentObserver(Uri uri, boolean notifyForDescendents,
346 ContentObserver observer, int userHandle) {
347 mContentObservers.put(new Pair<Uri, Integer>(uri, userHandle), observer);
348 }
349
350 @Override
Makoto Onukia4f11972015-10-01 13:19:58 -0700351 int settingsSecureGetIntForUser(String name, int def, int userHandle) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100352 return services.settings.settingsSecureGetIntForUser(name, def, userHandle);
Makoto Onukia4f11972015-10-01 13:19:58 -0700353 }
354
355 @Override
Bartosz Fabianowskiaff5e9c2017-01-25 06:09:13 +0100356 String settingsSecureGetStringForUser(String name, int userHandle) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100357 return services.settings.settingsSecureGetStringForUser(name, userHandle);
Bartosz Fabianowskiaff5e9c2017-01-25 06:09:13 +0100358 }
359
360 @Override
Makoto Onukia4f11972015-10-01 13:19:58 -0700361 void settingsSecurePutIntForUser(String name, int value, int userHandle) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100362 services.settings.settingsSecurePutIntForUser(name, value, userHandle);
Makoto Onukia4f11972015-10-01 13:19:58 -0700363 }
364
365 @Override
366 void settingsSecurePutStringForUser(String name, String value, int userHandle) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100367 services.settings.settingsSecurePutStringForUser(name, value, userHandle);
Makoto Onukia4f11972015-10-01 13:19:58 -0700368 }
369
370 @Override
371 void settingsGlobalPutStringForUser(String name, String value, int userHandle) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100372 services.settings.settingsGlobalPutStringForUser(name, value, userHandle);
Makoto Onukia4f11972015-10-01 13:19:58 -0700373 }
374
375 @Override
376 void settingsSecurePutInt(String name, int value) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100377 services.settings.settingsSecurePutInt(name, value);
Makoto Onukia4f11972015-10-01 13:19:58 -0700378 }
379
380 @Override
381 void settingsGlobalPutInt(String name, int value) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100382 services.settings.settingsGlobalPutInt(name, value);
Makoto Onukia4f11972015-10-01 13:19:58 -0700383 }
384
385 @Override
386 void settingsSecurePutString(String name, String value) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100387 services.settings.settingsSecurePutString(name, value);
Makoto Onukia4f11972015-10-01 13:19:58 -0700388 }
389
390 @Override
391 void settingsGlobalPutString(String name, String value) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100392 services.settings.settingsGlobalPutString(name, value);
Makoto Onukia4f11972015-10-01 13:19:58 -0700393 }
Makoto Onuki3f3657a2016-01-28 14:44:18 -0800394
395 @Override
yuemingw0de748d2017-11-15 19:22:27 +0000396 void settingsSystemPutString(String name, String value) {
397 services.settings.settingsSystemPutString(name, value);
398 }
399
400 @Override
Makoto Onuki3f3657a2016-01-28 14:44:18 -0800401 int settingsGlobalGetInt(String name, int def) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100402 return services.settings.settingsGlobalGetInt(name, def);
Makoto Onuki3f3657a2016-01-28 14:44:18 -0800403 }
404
405 @Override
Makoto Onuki09c529a2017-05-01 10:05:28 -0700406 String settingsGlobalGetString(String name) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100407 return services.settings.settingsGlobalGetString(name);
Makoto Onuki09c529a2017-05-01 10:05:28 -0700408 }
409
410 @Override
Makoto Onuki3f3657a2016-01-28 14:44:18 -0800411 void securityLogSetLoggingEnabledProperty(boolean enabled) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100412 services.settings.securityLogSetLoggingEnabledProperty(enabled);
Makoto Onuki3f3657a2016-01-28 14:44:18 -0800413 }
Rubin Xu49caead2016-02-02 18:00:28 +0000414
415 @Override
416 boolean securityLogGetLoggingEnabledProperty() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100417 return services.settings.securityLogGetLoggingEnabledProperty();
Rubin Xu49caead2016-02-02 18:00:28 +0000418 }
419
420 @Override
421 boolean securityLogIsLoggingEnabled() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100422 return services.settings.securityLogIsLoggingEnabled();
Rubin Xu49caead2016-02-02 18:00:28 +0000423 }
Mahaver Chopra1216ae52016-03-11 15:39:48 +0000424
425 @Override
426 TelephonyManager getTelephonyManager() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100427 return services.telephonyManager;
Mahaver Chopra1216ae52016-03-11 15:39:48 +0000428 }
Victor Chang3577ed22016-08-25 18:49:26 +0100429
430 @Override
431 boolean isBuildDebuggable() {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100432 return services.buildMock.isDebuggable;
Victor Chang3577ed22016-08-25 18:49:26 +0100433 }
Robin Lee7f5c91c2017-02-08 21:27:02 +0000434
435 @Override
436 KeyChain.KeyChainConnection keyChainBindAsUser(UserHandle user) {
Pavel Grafov75c0a892017-05-18 17:28:27 +0100437 return services.keyChainConnection;
Robin Lee7f5c91c2017-02-08 21:27:02 +0000438 }
Sudheer Shankac53c47f2018-01-16 12:01:00 -0800439
440 @Override
441 void postOnSystemServerInitThreadPool(Runnable runnable) {
442 runnable.run();
443 }
arangelov91201bd2018-01-04 17:10:21 +0000444
445 @Override
446 public TransferOwnershipMetadataManager newTransferOwnershipMetadataManager() {
447 return new TransferOwnershipMetadataManager(
448 new TransferOwnershipMetadataManagerTest.MockInjector());
449 }
Makoto Onukicc4bbeb2015-09-17 10:28:24 -0700450 }
451}