• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.settings.testutils.shadow;
18 
19 import android.content.ComponentName;
20 import android.content.Context;
21 import android.content.pm.ApplicationInfo;
22 import android.content.pm.PackageManager;
23 import android.graphics.drawable.ColorDrawable;
24 import android.graphics.drawable.Drawable;
25 import android.hardware.fingerprint.FingerprintManager;
26 import android.os.UserHandle;
27 import android.os.UserManager;
28 import android.util.ArraySet;
29 
30 import com.android.settings.Utils;
31 
32 import org.robolectric.annotation.Implementation;
33 import org.robolectric.annotation.Implements;
34 
35 import java.util.HashMap;
36 import java.util.Map;
37 
38 @Implements(Utils.class)
39 public class ShadowUtils {
40 
41     private static FingerprintManager sFingerprintManager = null;
42     private static boolean sIsUserAMonkey;
43     private static boolean sIsDemoUser;
44     private static ComponentName sDeviceOwnerComponentName;
45     private static Map<String, String> sAppNameMap;
46     private static boolean sIsSystemAlertWindowEnabled;
47     private static boolean sIsVoiceCapable;
48     private static ArraySet<String> sResultLinks = new ArraySet<>();
49     private static boolean sIsBatteryPresent;
50 
51     @Implementation
enforceSameOwner(Context context, int userId)52     protected static int enforceSameOwner(Context context, int userId) {
53         return userId;
54     }
55 
56     @Implementation
getFingerprintManagerOrNull(Context context)57     protected static FingerprintManager getFingerprintManagerOrNull(Context context) {
58         return sFingerprintManager;
59     }
60 
setFingerprintManager(FingerprintManager fingerprintManager)61     public static void setFingerprintManager(FingerprintManager fingerprintManager) {
62         sFingerprintManager = fingerprintManager;
63     }
64 
reset()65     public static void reset() {
66         sFingerprintManager = null;
67         sIsUserAMonkey = false;
68         sIsDemoUser = false;
69         sIsVoiceCapable = false;
70         sResultLinks = new ArraySet<>();
71         sIsBatteryPresent = true;
72     }
73 
setIsDemoUser(boolean isDemoUser)74     public static void setIsDemoUser(boolean isDemoUser) {
75         sIsDemoUser = isDemoUser;
76     }
77 
78     @Implementation
isDemoUser(Context context)79     public static boolean isDemoUser(Context context) {
80         return sIsDemoUser;
81     }
82 
setIsUserAMonkey(boolean isUserAMonkey)83     public static void setIsUserAMonkey(boolean isUserAMonkey) {
84         sIsUserAMonkey = isUserAMonkey;
85     }
86 
87     /**
88      * Returns true if Monkey is running.
89      */
90     @Implementation
isMonkeyRunning()91     protected static boolean isMonkeyRunning() {
92         return sIsUserAMonkey;
93     }
94 
setDeviceOwnerComponent(ComponentName componentName)95     public static void setDeviceOwnerComponent(ComponentName componentName) {
96         sDeviceOwnerComponentName = componentName;
97     }
98 
99     @Implementation
getDeviceOwnerComponent(Context context)100     protected static ComponentName getDeviceOwnerComponent(Context context) {
101         return sDeviceOwnerComponentName;
102     }
103 
104     @Implementation
getManagedProfileId(UserManager um, int parentUserId)105     protected static int getManagedProfileId(UserManager um, int parentUserId) {
106         return UserHandle.USER_NULL;
107     }
108 
109     @Implementation
getApplicationLabel(Context context, String packageName)110     protected static CharSequence getApplicationLabel(Context context, String packageName) {
111         if (sAppNameMap != null) {
112             return sAppNameMap.get(packageName);
113         }
114         return null;
115     }
116 
117     @Implementation
isPackageEnabled(Context context, String packageName)118     protected static boolean isPackageEnabled(Context context, String packageName) {
119         return true;
120     }
121 
setApplicationLabel(String packageName, String appLabel)122     public static void setApplicationLabel(String packageName, String appLabel) {
123         if (sAppNameMap == null) {
124             sAppNameMap = new HashMap<>();
125         }
126         sAppNameMap.put(packageName, appLabel);
127     }
128 
129     @Implementation
isSystemAlertWindowEnabled(Context context)130     protected static boolean isSystemAlertWindowEnabled(Context context) {
131         return sIsSystemAlertWindowEnabled;
132     }
133 
setIsSystemAlertWindowEnabled(boolean enabled)134     public static void setIsSystemAlertWindowEnabled(boolean enabled) {
135         sIsSystemAlertWindowEnabled = enabled;
136     }
137 
138     @Implementation
isVoiceCapable(Context context)139     protected static boolean isVoiceCapable(Context context) {
140         return sIsVoiceCapable;
141     }
142 
setIsVoiceCapable(boolean isVoiceCapable)143     public static void setIsVoiceCapable(boolean isVoiceCapable) {
144         sIsVoiceCapable = isVoiceCapable;
145     }
146 
147     @Implementation
getHandledDomains(PackageManager pm, String packageName)148     protected static ArraySet<String> getHandledDomains(PackageManager pm, String packageName) {
149         return sResultLinks;
150     }
151 
152     @Implementation
getBadgedIcon(Context context, ApplicationInfo appInfo)153     protected static Drawable getBadgedIcon(Context context, ApplicationInfo appInfo) {
154         return new ColorDrawable(0);
155     }
156 
setHandledDomains(ArraySet<String> links)157     public static void setHandledDomains(ArraySet<String> links) {
158         sResultLinks = links;
159     }
160 
161     @Implementation
isBatteryPresent(Context context)162     protected static boolean isBatteryPresent(Context context) {
163         return sIsBatteryPresent;
164     }
165 
setIsBatteryPresent(boolean isBatteryPresent)166     public static void setIsBatteryPresent(boolean isBatteryPresent) {
167         sIsBatteryPresent = isBatteryPresent;
168     }
169 }
170