Chromium Code Reviews| 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; |
| + } |
| } |