Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(681)

Unified Diff: components/cronet/android/java/src/org/chromium/net/HistogramManager.java

Issue 904033004: [Cronet] Make HistogramManager an abstract class to break dependency on native library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698