• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.settings.testutils.shadow;
2 
3 import android.annotation.NonNull;
4 import android.annotation.Nullable;
5 import android.annotation.UserIdInt;
6 import android.app.admin.DevicePolicyManager;
7 import android.content.ComponentName;
8 
9 import org.robolectric.RuntimeEnvironment;
10 import org.robolectric.annotation.Implementation;
11 import org.robolectric.annotation.Implements;
12 import org.robolectric.shadow.api.Shadow;
13 
14 import java.util.HashMap;
15 import java.util.Map;
16 import java.util.Objects;
17 
18 @Implements(DevicePolicyManager.class)
19 public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDevicePolicyManager {
20 
21     private final Map<Integer, Long> mProfileTimeouts = new HashMap<>();
22     private Map<Integer, CharSequence> mSupportMessagesMap = new HashMap<>();
23     private boolean mIsAdminActiveAsUser = false;
24     ComponentName mDeviceOwnerComponentName;
25     private int mDeviceOwnerUserId = -1;
26 
setShortSupportMessageForUser(ComponentName admin, int userHandle, String message)27     public void setShortSupportMessageForUser(ComponentName admin, int userHandle, String message) {
28         mSupportMessagesMap.put(Objects.hash(admin, userHandle), message);
29     }
30 
31     @Implementation
32     public @Nullable
getShortSupportMessageForUser(@onNull ComponentName admin, int userHandle)33     CharSequence getShortSupportMessageForUser(@NonNull ComponentName admin,
34             int userHandle) {
35         return mSupportMessagesMap.get(Objects.hash(admin, userHandle));
36     }
37 
38     @Implementation
isAdminActiveAsUser(@onNull ComponentName admin, int userId)39     public boolean isAdminActiveAsUser(@NonNull ComponentName admin, int userId) {
40         return mIsAdminActiveAsUser;
41     }
42 
43     @Implementation
getDeviceOwnerUserId()44     public int getDeviceOwnerUserId() {
45         return mDeviceOwnerUserId;
46     }
47 
48     @Implementation
getMaximumTimeToLock(ComponentName admin, @UserIdInt int userHandle)49     public long getMaximumTimeToLock(ComponentName admin, @UserIdInt int userHandle) {
50         return mProfileTimeouts.getOrDefault(userHandle, 0L);
51     }
52 
53     @Implementation
getDeviceOwnerComponentOnAnyUser()54     public ComponentName getDeviceOwnerComponentOnAnyUser() {
55         return mDeviceOwnerComponentName;
56     }
57 
setIsAdminActiveAsUser(boolean active)58     public void setIsAdminActiveAsUser(boolean active) {
59         mIsAdminActiveAsUser = active;
60     }
61 
setDeviceOwnerUserId(int id)62     public void setDeviceOwnerUserId(int id) {
63         mDeviceOwnerUserId = id;
64     }
65 
setMaximumTimeToLock(@serIdInt int userHandle, Long timeout)66     public void setMaximumTimeToLock(@UserIdInt int userHandle, Long timeout) {
67         mProfileTimeouts.put(userHandle, timeout);
68     }
69 
setDeviceOwnerComponentOnAnyUser(ComponentName admin)70     public void setDeviceOwnerComponentOnAnyUser(ComponentName admin) {
71         mDeviceOwnerComponentName = admin;
72     }
73 
getShadow()74     public static ShadowDevicePolicyManager getShadow() {
75         return (ShadowDevicePolicyManager) Shadow.extract(
76                 RuntimeEnvironment.application.getSystemService(DevicePolicyManager.class));
77     }
78 }
79