aboutsummaryrefslogtreecommitdiff
path: root/resources/src/main/java/org
diff options
context:
space:
mode:
authorChristian Williams <christianw@google.com>2017-12-14 17:59:12 -0800
committerChristian Williams <christianw@google.com>2017-12-14 17:59:47 -0800
commit575e13d9e4be7bd4796b8e9a90d0e24f072256c2 (patch)
treef8d7de14fa091d2ee22575e00bf010e755170fe5 /resources/src/main/java/org
parentabdade6ee52a8d1491f3b8ca517c24ae857cf21c (diff)
downloadrobolectric-shadows-575e13d9e4be7bd4796b8e9a90d0e24f072256c2.tar.gz
Add metric for loading resources.
Don't use streams yet, cuz Android.
Diffstat (limited to 'resources/src/main/java/org')
-rw-r--r--resources/src/main/java/org/robolectric/res/ResourceTableFactory.java73
1 files changed, 41 insertions, 32 deletions
diff --git a/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java b/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java
index 26150eb4f..a143a57fc 100644
--- a/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java
+++ b/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java
@@ -3,46 +3,55 @@ package org.robolectric.res;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import org.robolectric.util.Logger;
+import org.robolectric.util.PerfStatsCollector;
public class ResourceTableFactory {
- /**
- * Builds an Android framework resource table in the "android" package space.
- */
+ /** Builds an Android framework resource table in the "android" package space. */
public PackageResourceTable newFrameworkResourceTable(ResourcePath resourcePath) {
- PackageResourceTable resourceTable = new PackageResourceTable("android");
-
- if (resourcePath.getRClass() != null) {
- addRClassValues(resourceTable, resourcePath.getRClass());
- addMissingStyleableAttributes(resourceTable, resourcePath.getRClass());
- }
- if (resourcePath.getInternalRClass() != null) {
- addRClassValues(resourceTable, resourcePath.getInternalRClass());
- addMissingStyleableAttributes(resourceTable, resourcePath.getInternalRClass());
- }
-
- parseResourceFiles(resourcePath, resourceTable);
-
- return resourceTable;
+ return PerfStatsCollector.getInstance()
+ .measure(
+ "load legacy framework resources",
+ () -> {
+ PackageResourceTable resourceTable = new PackageResourceTable("android");
+
+ if (resourcePath.getRClass() != null) {
+ addRClassValues(resourceTable, resourcePath.getRClass());
+ addMissingStyleableAttributes(resourceTable, resourcePath.getRClass());
+ }
+ if (resourcePath.getInternalRClass() != null) {
+ addRClassValues(resourceTable, resourcePath.getInternalRClass());
+ addMissingStyleableAttributes(resourceTable, resourcePath.getInternalRClass());
+ }
+
+ parseResourceFiles(resourcePath, resourceTable);
+
+ return resourceTable;
+ });
}
/**
- * Creates an application resource table which can be constructed with multiple resources paths representing
- * overlayed resource libraries.
+ * Creates an application resource table which can be constructed with multiple resources paths
+ * representing overlayed resource libraries.
*/
public PackageResourceTable newResourceTable(String packageName, ResourcePath... resourcePaths) {
- PackageResourceTable resourceTable = new PackageResourceTable(packageName);
-
- for (ResourcePath resourcePath : resourcePaths) {
- if (resourcePath.getRClass() != null) {
- addRClassValues(resourceTable, resourcePath.getRClass());
- }
- }
-
- for (ResourcePath resourcePath : resourcePaths) {
- parseResourceFiles(resourcePath, resourceTable);
- }
-
- return resourceTable;
+ return PerfStatsCollector.getInstance()
+ .measure(
+ "load legacy app resources",
+ () -> {
+ PackageResourceTable resourceTable = new PackageResourceTable(packageName);
+
+ for (ResourcePath resourcePath : resourcePaths) {
+ if (resourcePath.getRClass() != null) {
+ addRClassValues(resourceTable, resourcePath.getRClass());
+ }
+ }
+
+ for (ResourcePath resourcePath : resourcePaths) {
+ parseResourceFiles(resourcePath, resourceTable);
+ }
+
+ return resourceTable;
+ });
}
private void addRClassValues(PackageResourceTable resourceTable, Class<?> rClass) {