1 /*
2  * Copyright (C) 2017 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  */
16 
17 package com.android.server.locksettings;
18 
19 import android.app.KeyguardManager;
20 import android.app.NotificationManager;
21 import android.app.admin.DevicePolicyManager;
22 import android.app.trust.TrustManager;
23 import android.content.BroadcastReceiver;
24 import android.content.ContentResolver;
25 import android.content.Context;
26 import android.content.ContextWrapper;
27 import android.content.Intent;
28 import android.content.IntentFilter;
29 import android.content.pm.PackageManager;
30 import android.content.res.Resources;
31 import android.hardware.face.FaceManager;
32 import android.hardware.fingerprint.FingerprintManager;
33 import android.os.Handler;
34 import android.os.UserHandle;
35 import android.os.UserManager;
36 import android.os.storage.StorageManager;
37 
38 public class MockLockSettingsContext extends ContextWrapper {
39 
40     private final Resources mResources;
41     private final ContentResolver mContentResolver;
42     private final UserManager mUserManager;
43     private final NotificationManager mNotificationManager;
44     private final DevicePolicyManager mDevicePolicyManager;
45     private final StorageManager mStorageManager;
46     private final TrustManager mTrustManager;
47     private final KeyguardManager mKeyguardManager;
48     private final FingerprintManager mFingerprintManager;
49     private final FaceManager mFaceManager;
50     private final PackageManager mPackageManager;
51 
MockLockSettingsContext(Context base, Resources resources, ContentResolver contentResolver, UserManager userManager, NotificationManager notificationManager, DevicePolicyManager devicePolicyManager, StorageManager storageManager, TrustManager trustManager, KeyguardManager keyguardManager, FingerprintManager fingerprintManager, FaceManager faceManager, PackageManager packageManager)52     public MockLockSettingsContext(Context base, Resources resources,
53             ContentResolver contentResolver, UserManager userManager,
54             NotificationManager notificationManager, DevicePolicyManager devicePolicyManager,
55             StorageManager storageManager, TrustManager trustManager,
56             KeyguardManager keyguardManager, FingerprintManager fingerprintManager,
57             FaceManager faceManager, PackageManager packageManager) {
58         super(base);
59         mResources = resources;
60         mContentResolver = contentResolver;
61         mUserManager = userManager;
62         mNotificationManager = notificationManager;
63         mDevicePolicyManager = devicePolicyManager;
64         mStorageManager = storageManager;
65         mTrustManager = trustManager;
66         mKeyguardManager = keyguardManager;
67         mFingerprintManager = fingerprintManager;
68         mFaceManager = faceManager;
69         mPackageManager = packageManager;
70     }
71 
72     @Override
getResources()73     public Resources getResources() {
74         return mResources;
75     }
76 
77     @Override
getContentResolver()78     public ContentResolver getContentResolver() {
79         return mContentResolver;
80     }
81 
82     @Override
getSystemService(String name)83     public Object getSystemService(String name) {
84         if (USER_SERVICE.equals(name)) {
85             return mUserManager;
86         } else if (NOTIFICATION_SERVICE.equals(name)) {
87             return mNotificationManager;
88         } else if (DEVICE_POLICY_SERVICE.equals(name)) {
89             return mDevicePolicyManager;
90         } else if (STORAGE_SERVICE.equals(name)) {
91             return mStorageManager;
92         } else if (TRUST_SERVICE.equals(name)) {
93             return mTrustManager;
94         } else if (KEYGUARD_SERVICE.equals(name)) {
95             return mKeyguardManager;
96         } else if (FINGERPRINT_SERVICE.equals(name)) {
97             return mFingerprintManager;
98         } else if (FACE_SERVICE.equals(name)) {
99             return mFaceManager;
100         } else {
101             throw new RuntimeException("System service not mocked: " + name);
102         }
103     }
104 
105     @Override
getPackageManager()106     public PackageManager getPackageManager() {
107         return mPackageManager;
108     }
109 
110     @Override
enforceCallingOrSelfPermission(String permission, String message)111     public void enforceCallingOrSelfPermission(String permission, String message) {
112         // Skip permission checks for unit tests.
113     }
114 
115     @Override
checkCallingOrSelfPermission(String permission)116     public int checkCallingOrSelfPermission(String permission) {
117         return PackageManager.PERMISSION_GRANTED;
118     }
119 
120     @Override
registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, String broadcastPermission, Handler scheduler)121     public Intent registerReceiverAsUser(BroadcastReceiver receiver,
122             UserHandle user, IntentFilter filter, String broadcastPermission,
123             Handler scheduler) {
124         return null;
125     }
126 }
127