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

Issue 794273004: Add a Java API for UMA histograms. (Closed)

Created:
6 years ago by ppi
Modified:
5 years, 11 months ago
CC:
chromium-reviews, erikwright+watch_chromium.org, asvitkine+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Add a Java API for UMA histograms. This patch adds a simple Java API for base/metrics, allowing to record boolean and enumerated histograms directly from the Java code. A test util (HistogramDelta) for histograms is also upstreamed from Chrome for Android and used for testing the new API. BUG=442300 Committed: https://crrev.com/dde405ee64e9cf1dab9bf38995acef27014de2f9 Cr-Commit-Position: refs/heads/master@{#312513}

Patch Set 1 #

Total comments: 13

Patch Set 2 : Address Ilya's comments. #

Patch Set 3 : Update the GN build. #

Total comments: 8

Patch Set 4 : Rebase. #

Patch Set 5 : Address Maria's comments. #

Total comments: 6

Patch Set 6 : Address Alexei's comments. #

Total comments: 3

Patch Set 7 : Rebase. #

Patch Set 8 : Rebase over the cronet proguard config fix. #

Total comments: 3
Unified diffs Side-by-side diffs Delta from patch set Stats (+299 lines, -39 lines) Patch
M base/BUILD.gn View 1 2 3 4 5 6 7 3 chunks +13 lines, -10 lines 0 comments Download
M base/android/base_jni_registrar.cc View 2 chunks +24 lines, -22 lines 0 comments Download
A base/android/java/src/org/chromium/base/metrics/RecordHistogram.java View 1 2 3 4 1 chunk +62 lines, -0 lines 0 comments Download
A base/android/javatests/src/org/chromium/base/metrics/RecordHistogramTest.java View 1 chunk +78 lines, -0 lines 0 comments Download
A + base/android/record_histogram.h View 1 2 3 4 5 1 chunk +4 lines, -4 lines 0 comments Download
A base/android/record_histogram.cc View 1 2 3 4 5 1 chunk +69 lines, -0 lines 3 comments Download
M base/base.gyp View 1 2 3 4 5 6 1 chunk +4 lines, -3 lines 0 comments Download
M base/base.gypi View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
A base/test/android/javatests/src/org/chromium/base/test/util/MetricsUtils.java View 1 chunk +43 lines, -0 lines 0 comments Download

Messages

Total messages: 42 (13 generated)
ppi
Hi Alexei, Maria ptal. We will need a review or a stamp from a base/android ...
6 years ago (2014-12-16 19:55:28 UTC) #2
ppi
+Ilya as Alexei is ooo for two weeks. Ilya, could you take a look?
6 years ago (2014-12-16 19:56:37 UTC) #4
Ilya Sherman
Seems like a reasonable thing to add :) https://codereview.chromium.org/794273004/diff/1/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/1/base/android/record_histogram.cc#newcode20 base/android/record_histogram.cc:20: int ...
6 years ago (2014-12-16 20:14:08 UTC) #5
ppi
Thanks Ilya, ptal. https://codereview.chromium.org/794273004/diff/1/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/1/base/android/record_histogram.cc#newcode20 base/android/record_histogram.cc:20: int sample = static_cast<int>(j_sample); On 2014/12/16 ...
6 years ago (2014-12-17 13:15:32 UTC) #6
Maria
https://codereview.chromium.org/794273004/diff/40001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java File base/android/java/src/org/chromium/base/metrics/RecordHistogram.java (right): https://codereview.chromium.org/794273004/diff/40001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java#newcode20 base/android/java/src/org/chromium/base/metrics/RecordHistogram.java:20: * @param histogramName name of the histogram histogramName -> ...
6 years ago (2014-12-17 19:49:29 UTC) #7
Ilya Sherman
LGTM, thanks. https://codereview.chromium.org/794273004/diff/1/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/1/base/android/record_histogram.cc#newcode54 base/android/record_histogram.cc:54: } On 2014/12/17 13:15:31, ppi wrote: > ...
6 years ago (2014-12-17 22:58:51 UTC) #8
ppi
Thanks, Ilya and Maria! Maria, could you take another look? https://codereview.chromium.org/794273004/diff/40001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java File base/android/java/src/org/chromium/base/metrics/RecordHistogram.java (right): https://codereview.chromium.org/794273004/diff/40001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java#newcode20 ...
6 years ago (2014-12-18 14:08:22 UTC) #9
Maria
lgtm
6 years ago (2014-12-18 19:13:47 UTC) #10
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/794273004/80001
6 years ago (2014-12-18 19:38:38 UTC) #12
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/31438)
6 years ago (2014-12-18 20:09:59 UTC) #14
ppi
Thanks, Maria! Jam, could you stamp based on Ilya's and Maria's review?
6 years ago (2014-12-18 20:40:24 UTC) #16
Alexei Svitkine (slow)
lgtm % nits https://codereview.chromium.org/794273004/diff/80001/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/80001/base/android/record_histogram.cc#newcode16 base/android/record_histogram.cc:16: jclass, Nit: I thought Chromium style ...
5 years, 11 months ago (2015-01-05 15:54:41 UTC) #17
ppi
Thanks, Alexei! Adding Nico as Jam is ooo. Nico, could you review this or stamp ...
5 years, 11 months ago (2015-01-08 10:54:22 UTC) #20
Nico
https://codereview.chromium.org/794273004/diff/100001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java File base/android/java/src/org/chromium/base/metrics/RecordHistogram.java (right): https://codereview.chromium.org/794273004/diff/100001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java#newcode13 base/android/java/src/org/chromium/base/metrics/RecordHistogram.java:13: * these methods in performance-critical code. Isn't it a ...
5 years, 11 months ago (2015-01-08 18:32:12 UTC) #21
ppi
https://codereview.chromium.org/794273004/diff/100001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java File base/android/java/src/org/chromium/base/metrics/RecordHistogram.java (right): https://codereview.chromium.org/794273004/diff/100001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java#newcode13 base/android/java/src/org/chromium/base/metrics/RecordHistogram.java:13: * these methods in performance-critical code. On 2015/01/08 18:32:11, ...
5 years, 11 months ago (2015-01-08 21:39:36 UTC) #22
Nico
https://codereview.chromium.org/794273004/diff/100001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java File base/android/java/src/org/chromium/base/metrics/RecordHistogram.java (right): https://codereview.chromium.org/794273004/diff/100001/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java#newcode13 base/android/java/src/org/chromium/base/metrics/RecordHistogram.java:13: * these methods in performance-critical code. On 2015/01/08 21:39:36, ...
5 years, 11 months ago (2015-01-08 21:43:45 UTC) #23
ppi
Thanks!
5 years, 11 months ago (2015-01-08 21:51:53 UTC) #24
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/794273004/100001
5 years, 11 months ago (2015-01-08 21:52:45 UTC) #26
commit-bot: I haz the power
Try jobs failed on following builders: android_compile_rel on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/android_compile_rel/builds/4092)
5 years, 11 months ago (2015-01-08 22:31:27 UTC) #28
ppi
Update on this after chatting with cjhopman@ - the android_compile_rel bot fails on building cronet, ...
5 years, 11 months ago (2015-01-21 01:27:12 UTC) #29
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/794273004/180001
5 years, 11 months ago (2015-01-21 23:22:32 UTC) #33
commit-bot: I haz the power
Committed patchset #8 (id:180001)
5 years, 11 months ago (2015-01-22 01:13:21 UTC) #34
commit-bot: I haz the power
Patchset 8 (id:??) landed as https://crrev.com/dde405ee64e9cf1dab9bf38995acef27014de2f9 Cr-Commit-Position: refs/heads/master@{#312513}
5 years, 11 months ago (2015-01-22 01:14:48 UTC) #35
jdduke (slow)
https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc#newcode19 base/android/record_histogram.cc:19: std::string histogram_name = ConvertJavaStringToUTF8(env, j_histogram_name); Ouch, JNI + string ...
5 years, 11 months ago (2015-01-23 17:33:41 UTC) #37
Alexei Svitkine (slow)
https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc#newcode19 base/android/record_histogram.cc:19: std::string histogram_name = ConvertJavaStringToUTF8(env, j_histogram_name); On 2015/01/23 17:33:41, jdduke ...
5 years, 11 months ago (2015-01-23 17:52:07 UTC) #38
Nico
On 2015/01/23 17:33:41, jdduke wrote: > https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc > File base/android/record_histogram.cc (right): > > https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc#newcode19 > ...
5 years, 11 months ago (2015-01-23 18:10:05 UTC) #39
jdduke (slow)
On 2015/01/23 18:10:05, Nico wrote: > On 2015/01/23 17:33:41, jdduke wrote: > > > https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc ...
5 years, 11 months ago (2015-01-23 18:15:05 UTC) #40
jdduke (slow)
https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc File base/android/record_histogram.cc (right): https://codereview.chromium.org/794273004/diff/180001/base/android/record_histogram.cc#newcode19 base/android/record_histogram.cc:19: std::string histogram_name = ConvertJavaStringToUTF8(env, j_histogram_name); On 2015/01/23 17:52:07, Alexei ...
5 years, 11 months ago (2015-01-23 18:19:31 UTC) #41
jdduke (slow)
5 years, 11 months ago (2015-01-23 20:23:28 UTC) #42
Message was sent while issue was closed.
On 2015/01/23 18:19:31, jdduke wrote:
>
https://codereview.chromium.org/794273004/diff/180001/base/android/record_his...
> File base/android/record_histogram.cc (right):
> 
>
https://codereview.chromium.org/794273004/diff/180001/base/android/record_his...
> base/android/record_histogram.cc:19: std::string histogram_name =
> ConvertJavaStringToUTF8(env, j_histogram_name);
> On 2015/01/23 17:52:07, Alexei Svitkine wrote:
> > On 2015/01/23 17:33:41, jdduke wrote:
> > > Ouch, JNI + string conversion isn't exactly the cheapest operation. Do we
> > > typically pass a Java string to native when recording UMA? Or is the
string
> > > already embedded in the native code? We already have to modify the
manifest
> > with
> > > the string, would it be absurd to have a shared enum type that's used to
> > convey
> > > the metric?
> > 
> > Having a shared enum adds more boiler plate that this change is trying to
> avoid.
> > i.e. you'd need to update two extra files in addition to calling the API.
> > 
> > Here's another idea:
> > 
> > Have a map keyed by the Java string pointer that maps to the Histogram
object.
> > As a first try, look up the entry in this map. If found, done - and no
string
> > conversion was done in the process. If not found, use this code path (i.e.
> > looking in the internal FactoryGet map).
> > 
> > This way, in the common case, where a string literal from the Java side is
> > passed (which is interned), it can just do a map look up based on the
pointer
> > without any conversion.
> > 
> > You only need to do the conversion the first time that histogram is hit
(where
> > it's a cache miss) and in cases where the histogram name is not a string
> literal
> > (i.e. if people concatenate histogram names - which shouldn't be a common
use
> > case).
> 
> That sounds pretty reasonable, any objections?

Posted a variant thereof here: https://codereview.chromium.org/867063006/.

Powered by Google App Engine
This is Rietveld 408576698