diff options
author | Christian Williams <christianw@google.com> | 2017-12-14 17:59:12 -0800 |
---|---|---|
committer | Christian Williams <christianw@google.com> | 2017-12-14 17:59:47 -0800 |
commit | 575e13d9e4be7bd4796b8e9a90d0e24f072256c2 (patch) | |
tree | f8d7de14fa091d2ee22575e00bf010e755170fe5 /resources/src/main/java/org | |
parent | abdade6ee52a8d1491f3b8ca517c24ae857cf21c (diff) | |
download | robolectric-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.java | 73 |
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) { |