Index: components/cronet/android/java/src/org/chromium/net/HistogramManager.java |
diff --git a/components/cronet/android/java/src/org/chromium/net/HistogramManager.java b/components/cronet/android/java/src/org/chromium/net/HistogramManager.java |
index 498392005142d8a89593c8e8e4ef701a19c07dbc..458b6ff1e59c47e8fe2f7d89cfbe7839c824068e 100644 |
--- a/components/cronet/android/java/src/org/chromium/net/HistogramManager.java |
+++ b/components/cronet/android/java/src/org/chromium/net/HistogramManager.java |
@@ -4,25 +4,38 @@ |
package org.chromium.net; |
-import org.chromium.base.JNINamespace; |
+import java.lang.reflect.Constructor; |
+ |
/** |
* Controls UMA histograms. |
xunjieli
2015/02/06 19:05:01
nit: Maybe add a comment saying that this class is
mef
2015/02/06 19:28:55
Done. I'll add a test that it handles 'no native l
|
*/ |
-@JNINamespace("cronet") |
-public final class HistogramManager { |
- public HistogramManager() { |
- nativeEnsureInitialized(); |
- } |
+public abstract class HistogramManager { |
+ private static final String CRONET_HISTOGRAM_MANAGER = |
+ "org.chromium.net.CronetHistogramManager"; |
/** |
* Get histogram deltas serialized as protobuf. |
*/ |
- public byte[] getHistogramDeltas() { |
- return nativeGetHistogramDeltas(); |
- } |
+ public abstract byte[] getHistogramDeltas(); |
- private native byte[] nativeGetHistogramDeltas(); |
- |
- private native void nativeEnsureInitialized(); |
+ public static HistogramManager createHistogramManager() { |
+ HistogramManager histogramManager = null; |
+ try { |
+ Class<? extends HistogramManager> histogramManagerClass = |
+ HistogramManager.class.getClassLoader() |
+ .loadClass(CRONET_HISTOGRAM_MANAGER) |
+ .asSubclass(HistogramManager.class); |
+ Constructor<? extends HistogramManager> constructor = |
+ histogramManagerClass.getConstructor(); |
+ histogramManager = constructor.newInstance(); |
+ } catch (ClassNotFoundException e) { |
+ // Leave as null. |
+ } catch (Exception e) { |
+ throw new IllegalStateException( |
+ "Cannot instantiate: " + CRONET_HISTOGRAM_MANAGER, |
+ e); |
+ } |
+ return histogramManager; |
+ } |
} |