Revert of Allow custom metrics implementations on Android. (patchset #11 id:260001 of https://codereview.webrtc.org/2403463002/ )

Reason for revert:
Break downstream tests.

Original issue's description:
> Allow custom metrics implementations on Android.
>
> BUG=webrtc:6499
>
> Committed: https://crrev.com/de609b26c5fc77fd3388eae5594ee8a634edf8da
> Cr-Commit-Position: refs/heads/master@{#15169}

TBR=kjellander@webrtc.org,magjed@webrtc.org,sakal@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6499

Review-Url: https://codereview.webrtc.org/2516403002
Cr-Commit-Position: refs/heads/master@{#15171}
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index cefe106..17e3c2a 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -708,6 +708,7 @@
       deps = [
         "//base:base_java_test_support",
         "//webrtc/api:libjingle_peerconnection_java",
+        "//webrtc/api:libjingle_peerconnection_jni",
         "//webrtc/examples:AppRTCMobile_javalib",
       ]
     }
diff --git a/webrtc/api/BUILD.gn b/webrtc/api/BUILD.gn
index ee64e60..01aacb7 100644
--- a/webrtc/api/BUILD.gn
+++ b/webrtc/api/BUILD.gn
@@ -171,12 +171,12 @@
 
   rtc_static_library("libjingle_peerconnection_jni") {
     sources = [
-      "android/jni/androidhistogram_jni.cc",
       "android/jni/androidmediacodeccommon.h",
       "android/jni/androidmediadecoder_jni.cc",
       "android/jni/androidmediadecoder_jni.h",
       "android/jni/androidmediaencoder_jni.cc",
       "android/jni/androidmediaencoder_jni.h",
+      "android/jni/androidmetrics_jni.cc",
       "android/jni/androidnetworkmonitor_jni.cc",
       "android/jni/androidnetworkmonitor_jni.h",
       "android/jni/androidvideotracksource_jni.cc",
@@ -215,6 +215,8 @@
 
     deps = [
       ":libjingle_peerconnection",
+      "../system_wrappers:field_trial_default",
+      "../system_wrappers:metrics_default",
     ]
 
     if (rtc_build_libyuv) {
@@ -228,20 +230,6 @@
     }
   }
 
-  rtc_static_library("libjingle_peerconnection_metrics_default_jni") {
-    sources = [
-      "android/jni/androidmetrics_jni.cc",
-    ]
-
-    configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
-
-    deps = [
-      ":libjingle_peerconnection",
-      "../system_wrappers:field_trial_default",
-      "../system_wrappers:metrics_default",
-    ]
-  }
-
   rtc_shared_library("libjingle_peerconnection_so") {
     sources = [
       "android/jni/jni_onload.cc",
@@ -252,7 +240,6 @@
     deps = [
       ":libjingle_peerconnection",
       ":libjingle_peerconnection_jni",
-      ":libjingle_peerconnection_metrics_default_jni",
     ]
     output_extension = "so"
   }
@@ -292,7 +279,6 @@
       "android/java/src/org/webrtc/GlShader.java",
       "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
       "android/java/src/org/webrtc/GlUtil.java",
-      "android/java/src/org/webrtc/Histogram.java",
       "android/java/src/org/webrtc/IceCandidate.java",
       "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
       "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
@@ -300,6 +286,7 @@
       "android/java/src/org/webrtc/MediaSource.java",
       "android/java/src/org/webrtc/MediaStream.java",
       "android/java/src/org/webrtc/MediaStreamTrack.java",
+      "android/java/src/org/webrtc/Metrics.java",
       "android/java/src/org/webrtc/NetworkMonitor.java",
       "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
       "android/java/src/org/webrtc/PeerConnection.java",
@@ -329,14 +316,6 @@
       "../base:base_java",
     ]
   }
-
-  android_library("libjingle_peerconnection_metrics_default_java") {
-    java_files = [ "android/java/src/org/webrtc/Metrics.java" ]
-
-    deps = [
-      "//webrtc/base:base_java",
-    ]
-  }
 }
 
 rtc_source_set("rtc_stats_api") {
@@ -506,7 +485,6 @@
 
       deps = [
         ":libjingle_peerconnection_java",
-        ":libjingle_peerconnection_metrics_default_java",
         "../base:base_java",
         "//base:base_java",
       ]
diff --git a/webrtc/api/android/java/src/org/webrtc/Camera1Session.java b/webrtc/api/android/java/src/org/webrtc/Camera1Session.java
index 8f29886..6ff9c8a 100644
--- a/webrtc/api/android/java/src/org/webrtc/Camera1Session.java
+++ b/webrtc/api/android/java/src/org/webrtc/Camera1Session.java
@@ -20,6 +20,7 @@
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import org.webrtc.CameraEnumerationAndroid.CaptureFormat;
+import org.webrtc.Metrics.Histogram;
 
 @SuppressWarnings("deprecation")
 public class Camera1Session implements CameraSession {
diff --git a/webrtc/api/android/java/src/org/webrtc/Camera2Session.java b/webrtc/api/android/java/src/org/webrtc/Camera2Session.java
index 2552b24..3734860 100644
--- a/webrtc/api/android/java/src/org/webrtc/Camera2Session.java
+++ b/webrtc/api/android/java/src/org/webrtc/Camera2Session.java
@@ -29,6 +29,7 @@
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import org.webrtc.CameraEnumerationAndroid.CaptureFormat;
+import org.webrtc.Metrics.Histogram;
 
 @TargetApi(21)
 public class Camera2Session implements CameraSession {
diff --git a/webrtc/api/android/java/src/org/webrtc/CameraEnumerationAndroid.java b/webrtc/api/android/java/src/org/webrtc/CameraEnumerationAndroid.java
index de2b919..c5cdcf7d 100644
--- a/webrtc/api/android/java/src/org/webrtc/CameraEnumerationAndroid.java
+++ b/webrtc/api/android/java/src/org/webrtc/CameraEnumerationAndroid.java
@@ -18,6 +18,7 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import org.webrtc.Metrics.Histogram;
 
 @SuppressWarnings("deprecation")
 public class CameraEnumerationAndroid {
diff --git a/webrtc/api/android/java/src/org/webrtc/Histogram.java b/webrtc/api/android/java/src/org/webrtc/Histogram.java
deleted file mode 100644
index 8779861..0000000
--- a/webrtc/api/android/java/src/org/webrtc/Histogram.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-package org.webrtc;
-
-/**
- * Class for holding the native pointer of a histogram. Since there is no way to destroy a
- * histogram, please don't create unnecessary instances of this object. This class is thread safe.
- *
- * Usage example:
- * private static final Histogram someMetricHistogram =
- *     Histogram.createCounts("WebRTC.Video.SomeMetric", 1, 10000, 50);
- * someMetricHistogram.addSample(someVariable);
- */
-class Histogram {
-  private final long handle;
-
-  private Histogram(long handle) {
-    this.handle = handle;
-  }
-
-  static public Histogram createCounts(String name, int min, int max, int bucketCount) {
-    return new Histogram(nativeCreateCounts(name, min, max, bucketCount));
-  }
-
-  static public Histogram createEnumeration(String name, int max) {
-    return new Histogram(nativeCreateEnumeration(name, max));
-  }
-
-  public void addSample(int sample) {
-    nativeAddSample(handle, sample);
-  }
-
-  private static native long nativeCreateCounts(String name, int min, int max, int bucketCount);
-  private static native long nativeCreateEnumeration(String name, int max);
-  private static native void nativeAddSample(long handle, int sample);
-}
diff --git a/webrtc/api/android/java/src/org/webrtc/Metrics.java b/webrtc/api/android/java/src/org/webrtc/Metrics.java
index ca19489..7d715fb 100644
--- a/webrtc/api/android/java/src/org/webrtc/Metrics.java
+++ b/webrtc/api/android/java/src/org/webrtc/Metrics.java
@@ -59,6 +59,41 @@
     }
   }
 
+  /**
+   * Class for holding the native pointer of a histogram. Since there is no way to destroy a
+   * histogram, please don't create unnecessary instances of this object. This class is thread safe.
+   *
+   * Usage example:
+   * private static final Histogram someMetricHistogram =
+   *     Histogram.createCounts("WebRTC.Video.SomeMetric", 1, 10000, 50);
+   * someMetricHistogram.addSample(someVariable);
+   */
+  static class Histogram {
+    private final long handle;
+    private final String name; // Only used for logging.
+
+    private Histogram(long handle, String name) {
+      this.handle = handle;
+      this.name = name;
+    }
+
+    static public Histogram createCounts(String name, int min, int max, int bucketCount) {
+      return new Histogram(nativeCreateCounts(name, min, max, bucketCount), name);
+    }
+
+    static public Histogram createEnumeration(String name, int max) {
+      return new Histogram(nativeCreateEnumeration(name, max), name);
+    }
+
+    public void addSample(int sample) {
+      nativeAddSample(handle, sample);
+    }
+
+    private static native long nativeCreateCounts(String name, int min, int max, int bucketCount);
+    private static native long nativeCreateEnumeration(String name, int max);
+    private static native void nativeAddSample(long handle, int sample);
+  }
+
   private void add(String name, HistogramInfo info) {
     map.put(name, info);
   }
diff --git a/webrtc/api/android/java/src/org/webrtc/OWNERS b/webrtc/api/android/java/src/org/webrtc/OWNERS
index e6ccc2d..38f3f6f 100644
--- a/webrtc/api/android/java/src/org/webrtc/OWNERS
+++ b/webrtc/api/android/java/src/org/webrtc/OWNERS
@@ -1,3 +1,2 @@
 per-file Camera*=sakal@webrtc.org
-per-file Histogram.java=sakal@webrtc.org
 per-file Metrics.java=sakal@webrtc.org
diff --git a/webrtc/api/android/java/src/org/webrtc/VideoCapturerAndroid.java b/webrtc/api/android/java/src/org/webrtc/VideoCapturerAndroid.java
index da32eb5..08c5c13 100644
--- a/webrtc/api/android/java/src/org/webrtc/VideoCapturerAndroid.java
+++ b/webrtc/api/android/java/src/org/webrtc/VideoCapturerAndroid.java
@@ -24,6 +24,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.webrtc.CameraEnumerationAndroid.CaptureFormat;
+import org.webrtc.Metrics.Histogram;
 
 // Android specific implementation of VideoCapturer.
 // An instance of this class can be created by an application using
diff --git a/webrtc/api/android/jni/OWNERS b/webrtc/api/android/jni/OWNERS
index 4da3451..96da1b9 100644
--- a/webrtc/api/android/jni/OWNERS
+++ b/webrtc/api/android/jni/OWNERS
@@ -1,3 +1,2 @@
-per-file androidhistogram_jni.cc=sakal@webrtc.org
 per-file androidmetrics_jni.cc=sakal@webrtc.org
 per-file androidvideotracksource_jni.cc=sakal@webrtc.org
diff --git a/webrtc/api/android/jni/androidhistogram_jni.cc b/webrtc/api/android/jni/androidhistogram_jni.cc
deleted file mode 100644
index 9ccd2b7..0000000
--- a/webrtc/api/android/jni/androidhistogram_jni.cc
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <map>
-#include <memory>
-
-#include "webrtc/api/android/jni/classreferenceholder.h"
-#include "webrtc/api/android/jni/jni_helpers.h"
-#include "webrtc/api/android/jni/native_handle_impl.h"
-#include "webrtc/system_wrappers/include/metrics.h"
-
-// Enables collection of native histograms and creating them.
-namespace webrtc_jni {
-
-JOW(jlong, Histogram_nativeCreateCounts)
-(JNIEnv* jni, jclass, jstring j_name, jint min, jint max, jint buckets) {
-  std::string name = JavaToStdString(jni, j_name);
-  return jlongFromPointer(
-      webrtc::metrics::HistogramFactoryGetCounts(name, min, max, buckets));
-}
-
-JOW(jlong, Histogram_nativeCreateEnumeration)
-(JNIEnv* jni, jclass, jstring j_name, jint max) {
-  std::string name = JavaToStdString(jni, j_name);
-  return jlongFromPointer(
-      webrtc::metrics::HistogramFactoryGetEnumeration(name, max));
-}
-
-JOW(void, Histogram_nativeAddSample)
-(JNIEnv* jni, jclass, jlong histogram, jint sample) {
-  if (histogram) {
-    HistogramAdd(reinterpret_cast<webrtc::metrics::Histogram*>(histogram),
-                 sample);
-  }
-}
-
-}  // namespace webrtc_jni
diff --git a/webrtc/api/android/jni/androidmetrics_jni.cc b/webrtc/api/android/jni/androidmetrics_jni.cc
index 62efc1b..f63e604 100644
--- a/webrtc/api/android/jni/androidmetrics_jni.cc
+++ b/webrtc/api/android/jni/androidmetrics_jni.cc
@@ -13,6 +13,7 @@
 
 #include "webrtc/api/android/jni/classreferenceholder.h"
 #include "webrtc/api/android/jni/jni_helpers.h"
+#include "webrtc/api/android/jni/native_handle_impl.h"
 #include "webrtc/system_wrappers/include/metrics.h"
 #include "webrtc/system_wrappers/include/metrics_default.h"
 
@@ -25,11 +26,11 @@
 
 // Gets and clears native histograms.
 JOW(jobject, Metrics_nativeGetAndReset)(JNIEnv* jni, jclass) {
-  jclass j_metrics_class = jni->FindClass("org/webrtc/Metrics");
+  jclass j_metrics_class = FindClass(jni, "org/webrtc/Metrics");
   jmethodID j_add =
       GetMethodID(jni, j_metrics_class, "add",
                   "(Ljava/lang/String;Lorg/webrtc/Metrics$HistogramInfo;)V");
-  jclass j_info_class = jni->FindClass("org/webrtc/Metrics$HistogramInfo");
+  jclass j_info_class = FindClass(jni, "org/webrtc/Metrics$HistogramInfo");
   jmethodID j_add_sample = GetMethodID(jni, j_info_class, "addSample", "(II)V");
 
   // Create |Metrics|.
@@ -58,4 +59,26 @@
   return j_metrics;
 }
 
+JOW(jlong, Metrics_00024Histogram_nativeCreateCounts)
+(JNIEnv* jni, jclass, jstring j_name, jint min, jint max, jint buckets) {
+  std::string name = JavaToStdString(jni, j_name);
+  return jlongFromPointer(
+      webrtc::metrics::HistogramFactoryGetCounts(name, min, max, buckets));
+}
+
+JOW(jlong, Metrics_00024Histogram_nativeCreateEnumeration)
+(JNIEnv* jni, jclass, jstring j_name, jint max) {
+  std::string name = JavaToStdString(jni, j_name);
+  return jlongFromPointer(
+      webrtc::metrics::HistogramFactoryGetEnumeration(name, max));
+}
+
+JOW(void, Metrics_00024Histogram_nativeAddSample)
+(JNIEnv* jni, jclass, jlong histogram, jint sample) {
+  if (histogram) {
+    HistogramAdd(reinterpret_cast<webrtc::metrics::Histogram*>(histogram),
+                 sample);
+  }
+}
+
 }  // namespace webrtc_jni
diff --git a/webrtc/api/android/jni/classreferenceholder.cc b/webrtc/api/android/jni/classreferenceholder.cc
index ee68112..bfc03a3 100644
--- a/webrtc/api/android/jni/classreferenceholder.cc
+++ b/webrtc/api/android/jni/classreferenceholder.cc
@@ -69,6 +69,8 @@
   LoadClass(jni, "org/webrtc/MediaSource$State");
   LoadClass(jni, "org/webrtc/MediaStream");
   LoadClass(jni, "org/webrtc/MediaStreamTrack$State");
+  LoadClass(jni, "org/webrtc/Metrics");
+  LoadClass(jni, "org/webrtc/Metrics$HistogramInfo");
   LoadClass(jni, "org/webrtc/NetworkMonitor");
   LoadClass(jni, "org/webrtc/NetworkMonitorAutoDetect$ConnectionType");
   LoadClass(jni, "org/webrtc/NetworkMonitorAutoDetect$IPAddress");
diff --git a/webrtc/examples/BUILD.gn b/webrtc/examples/BUILD.gn
index d419d94..58ae8a4 100644
--- a/webrtc/examples/BUILD.gn
+++ b/webrtc/examples/BUILD.gn
@@ -93,7 +93,6 @@
     deps = [
       ":AppRTCMobile_resources",
       "//webrtc/api:libjingle_peerconnection_java",
-      "//webrtc/api:libjingle_peerconnection_metrics_default_java",
       "//webrtc/base:base_java",
       "//webrtc/examples/androidapp/third_party/autobanh:autobanh_java",
     ]