• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import static android.os.Build.VERSION_CODES.Q;
4 
5 import android.Manifest;
6 import android.annotation.RequiresPermission;
7 import android.annotation.SystemApi;
8 import android.hardware.display.ColorDisplayManager.AutoMode;
9 import java.util.HashMap;
10 import java.util.Map;
11 import org.robolectric.annotation.Implementation;
12 import org.robolectric.annotation.Implements;
13 
14 @Implements(
15     className = "android.hardware.display.ColorDisplayManager",
16     isInAndroidSdk = false,
17     minSdk = Q)
18 public class ShadowColorDisplayManager {
19 
20   private boolean isNightDisplayActivated;
21   private int nightDisplayTemperature;
22   private int nightDisplayAutoMode;
23   private final Map<String, Integer> packagesToSaturation = new HashMap<>();
24 
25   // Full saturation by default
26   private int saturationLevel = 100;
27   // No capabilities by default
28   private int transformCapabilities = 0x0;
29 
30   @Implementation
__constructor__()31   protected void __constructor__() {
32     // Don't initialize ColorDisplayManagerInternal.
33   }
34 
35   @Implementation
36   @SystemApi
37   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
getTransformCapabilities()38   protected int getTransformCapabilities() {
39     return transformCapabilities;
40   }
41 
42   @Implementation
43   @SystemApi
44   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
setNightDisplayActivated(boolean activated)45   protected boolean setNightDisplayActivated(boolean activated) {
46     isNightDisplayActivated = activated;
47     return true;
48   }
49 
50   @Implementation
51   @SystemApi
52   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
isNightDisplayActivated()53   protected boolean isNightDisplayActivated() {
54     return isNightDisplayActivated;
55   }
56 
57   @Implementation
58   @SystemApi
59   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
setNightDisplayColorTemperature(int temperature)60   protected boolean setNightDisplayColorTemperature(int temperature) {
61     nightDisplayTemperature = temperature;
62     return true;
63   }
64 
65   @Implementation
66   @SystemApi
67   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
getNightDisplayColorTemperature()68   protected int getNightDisplayColorTemperature() {
69     return nightDisplayTemperature;
70   }
71 
72   @Implementation
73   @SystemApi
74   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
setNightDisplayAutoMode(@utoMode int autoMode)75   protected boolean setNightDisplayAutoMode(@AutoMode int autoMode) {
76     nightDisplayAutoMode = autoMode;
77     return true;
78   }
79 
80   @Implementation
81   @SystemApi
82   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
83   @AutoMode
getNightDisplayAutoMode()84   protected int getNightDisplayAutoMode() {
85     return nightDisplayAutoMode;
86   }
87 
88   @Implementation
89   @SystemApi
90   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
setSaturationLevel(int saturationLevel)91   protected boolean setSaturationLevel(int saturationLevel) {
92     this.saturationLevel = saturationLevel;
93     return true;
94   }
95 
96   @Implementation
97   @SystemApi
98   @RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
setAppSaturationLevel(String packageName, int saturationLevel)99   protected boolean setAppSaturationLevel(String packageName, int saturationLevel) {
100     packagesToSaturation.put(packageName, saturationLevel);
101     return true;
102   }
103 
104   /** Sets the current transform capabilities. */
setTransformCapabilities(int transformCapabilities)105   public boolean setTransformCapabilities(int transformCapabilities) {
106     this.transformCapabilities = transformCapabilities;
107     return true;
108   }
109 
110   /** Returns the current display saturation level for the {@code packageName}. */
getAppSaturationLevel(String packageName)111   public int getAppSaturationLevel(String packageName) {
112     return packagesToSaturation.getOrDefault(packageName, 100);
113   }
114 
115   /** Returns the current display saturation level. */
getSaturationLevel()116   public int getSaturationLevel() {
117     return saturationLevel;
118   }
119 }
120