blob: 8ff0f6196e3f2ce0404f721d28affe94fefc4a7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package org.robolectric.plugins;
import com.google.auto.service.AutoService;
import java.lang.reflect.Method;
import java.util.Properties;
import javax.annotation.Nonnull;
import org.robolectric.annotation.GraphicsMode;
import org.robolectric.annotation.GraphicsMode.Mode;
import org.robolectric.pluginapi.config.Configurer;
/** Provides configuration to Robolectric for its @{@link GraphicsMode} annotation. */
@AutoService(Configurer.class)
public class GraphicsModeConfigurer implements Configurer<GraphicsMode.Mode> {
private final Properties systemProperties;
public GraphicsModeConfigurer(Properties systemProperties) {
this.systemProperties = systemProperties;
}
@Override
public Class<GraphicsMode.Mode> getConfigClass() {
return GraphicsMode.Mode.class;
}
@Nonnull
@Override
public GraphicsMode.Mode defaultConfig() {
return GraphicsMode.Mode.valueOf(
systemProperties.getProperty("robolectric.graphicsMode", "LEGACY"));
}
@Override
public GraphicsMode.Mode getConfigFor(@Nonnull String packageName) {
try {
Package pkg = Class.forName(packageName + ".package-info").getPackage();
return valueFrom(pkg.getAnnotation(GraphicsMode.class));
} catch (ClassNotFoundException e) {
// ignore
}
return null;
}
@Override
public GraphicsMode.Mode getConfigFor(@Nonnull Class<?> testClass) {
return valueFrom(testClass.getAnnotation(GraphicsMode.class));
}
@Override
public GraphicsMode.Mode getConfigFor(@Nonnull Method method) {
return valueFrom(method.getAnnotation(GraphicsMode.class));
}
@Nonnull
@Override
public GraphicsMode.Mode merge(
@Nonnull GraphicsMode.Mode parentConfig, @Nonnull GraphicsMode.Mode childConfig) {
// just take the childConfig - since GraphicsMode only has a single 'value' attribute
return childConfig;
}
private Mode valueFrom(GraphicsMode graphicsMode) {
return graphicsMode == null ? null : graphicsMode.value();
}
}
|