0

[PDF Ink Signatures] Add stroke highlighter color metric

Add a metric to track the brush colors of highlighter strokes.

Bug: 380433757
Change-Id: Ica404ba842c66b85ff3789efcce104d6744065ed
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6055730
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Alan Screen <awscreen@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1391317}
This commit is contained in:
Andy Phan
2024-12-03 23:09:30 +00:00
committed by Chromium LUCI CQ
parent fe27f54674
commit de22bc5538
5 changed files with 104 additions and 0 deletions

@ -61,6 +61,27 @@ constexpr auto kPenColors =
{SkColorSetRGB(0x88, 0x59, 0x45), StrokeMetricPenColor::kTan3},
});
constexpr auto kHighlighterColors =
base::MakeFixedFlatMap<SkColor, StrokeMetricHighlighterColor>({
{SkColorSetRGB(0xF2, 0x8B, 0x82),
StrokeMetricHighlighterColor::kLightRed},
{SkColorSetRGB(0xFD, 0xD6, 0x63),
StrokeMetricHighlighterColor::kLightYellow},
{SkColorSetRGB(0x34, 0xA8, 0x53),
StrokeMetricHighlighterColor::kLightGreen},
{SkColorSetRGB(0x42, 0x85, 0xF4),
StrokeMetricHighlighterColor::kLightBlue},
{SkColorSetRGB(0xFF, 0xAE, 0x80),
StrokeMetricHighlighterColor::kLightOrange},
{SkColorSetRGB(0xD9, 0x30, 0x25), StrokeMetricHighlighterColor::kRed},
{SkColorSetRGB(0xDD, 0xF3, 0x00),
StrokeMetricHighlighterColor::kYellow},
{SkColorSetRGB(0x25, 0xE3, 0x87), StrokeMetricHighlighterColor::kGreen},
{SkColorSetRGB(0x53, 0x79, 0xFF), StrokeMetricHighlighterColor::kBlue},
{SkColorSetRGB(0xFF, 0x63, 0x0C),
StrokeMetricHighlighterColor::kOrange},
});
void ReportStrokeTypeAndSize(StrokeMetricBrushType type,
StrokeMetricBrushSize size) {
base::UmaHistogramEnumeration("PDF.Ink2StrokeBrushType", type);
@ -97,6 +118,11 @@ void ReportDrawStroke(PdfInkBrush::Type type, const ink::Brush& brush) {
auto color_iter = kPenColors.find(sk_color);
CHECK(color_iter != kPenColors.end());
base::UmaHistogramEnumeration("PDF.Ink2StrokePenColor", color_iter->second);
} else {
auto color_iter = kHighlighterColors.find(sk_color);
CHECK(color_iter != kHighlighterColors.end());
base::UmaHistogramEnumeration("PDF.Ink2StrokeHighlighterColor",
color_iter->second);
}
}

@ -38,6 +38,25 @@ enum class StrokeMetricBrushType {
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/pdf/enums.xml:PDFInk2StrokeBrushType)
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// LINT.IfChange(PDFInk2StrokeHighlighterColor)
enum class StrokeMetricHighlighterColor {
kLightRed = 0,
kLightYellow = 1,
kLightGreen = 2,
kLightBlue = 3,
kLightOrange = 4,
kRed = 5,
kYellow = 6,
kGreen = 7,
kBlue = 8,
kOrange = 9,
kMaxValue = 9,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/pdf/enums.xml:PDFInk2StrokeHighlighterColor)
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//

@ -2060,6 +2060,8 @@ TEST_F(PdfInkModuleGetVisibleStrokesTest, MultiplePageStrokes) {
class PdfInkModuleMetricsTest : public PdfInkModuleUndoRedoTest {
protected:
static constexpr char kPenColorMetric[] = "PDF.Ink2StrokePenColor";
static constexpr char kHighlighterColorMetric[] =
"PDF.Ink2StrokeHighlighterColor";
static constexpr char kPenSizeMetric[] = "PDF.Ink2StrokePenSize";
static constexpr char kHighlighterSizeMetric[] =
"PDF.Ink2StrokeHighlighterSize";
@ -2124,6 +2126,35 @@ TEST_F(PdfInkModuleMetricsTest, StrokeBrushColorPen) {
histograms.ExpectBucketCount(kPenColorMetric, StrokeMetricPenColor::kTan3, 1);
histograms.ExpectTotalCount(kPenColorMetric, 3);
histograms.ExpectTotalCount(kHighlighterColorMetric, 0);
}
TEST_F(PdfInkModuleMetricsTest, StrokeBrushColorHighlighter) {
EnableAnnotationMode();
InitializeSimpleSinglePageBasicLayout();
base::HistogramTester histograms;
// Draw a stroke with "Light Red" color.
TestAnnotationBrushMessageParams params = {/*color_r=*/0xF2, /*color_g=*/0x8B,
/*color_b=*/0x82};
SelectBrushTool(PdfInkBrush::Type::kHighlighter, 6.0f, params);
ApplyStrokeWithMouseAtMouseDownPoint();
histograms.ExpectBucketCount(kHighlighterColorMetric,
StrokeMetricHighlighterColor::kLightRed, 1);
histograms.ExpectTotalCount(kHighlighterColorMetric, 1);
// Draw a stroke with "Orange" color.
params.color_r = 0xFF;
params.color_g = 0x63;
params.color_b = 0x0C;
SelectBrushTool(PdfInkBrush::Type::kHighlighter, 6.0f, params);
ApplyStrokeWithMouseAtMouseDownPoint();
histograms.ExpectBucketCount(kHighlighterColorMetric,
StrokeMetricHighlighterColor::kOrange, 1);
histograms.ExpectTotalCount(kHighlighterColorMetric, 2);
histograms.ExpectTotalCount(kPenColorMetric, 0);
}
TEST_F(PdfInkModuleMetricsTest, StrokeBrushSizePen) {

@ -166,6 +166,23 @@ chromium-metrics-reviews@google.com.
<!-- LINT.ThenChange(//pdf/pdf_ink_metrics_handler.h:PDFInk2StrokeBrushType) -->
<!-- LINT.IfChange(PDFInk2StrokeHighlighterColor) -->
<enum name="PDFInk2StrokeHighlighterColor">
<int value="0" label="LightRed"/>
<int value="1" label="LightYellow"/>
<int value="2" label="LightGreen"/>
<int value="3" label="LightBlue"/>
<int value="4" label="LightOrange"/>
<int value="5" label="Red"/>
<int value="6" label="Yellow"/>
<int value="7" label="Green"/>
<int value="8" label="Blue"/>
<int value="9" label="Orange"/>
</enum>
<!-- LINT.ThenChange(//pdf/pdf_ink_metrics_handler.h:PDFInk2StrokeHighlighterColor) -->
<!-- LINT.IfChange(PDFInk2StrokePenColor) -->
<enum name="PDFInk2StrokePenColor">

@ -91,6 +91,17 @@ chromium-metrics-reviews@google.com.
</summary>
</histogram>
<histogram name="PDF.Ink2StrokeHighlighterColor"
enum="PDFInk2StrokeHighlighterColor" expires_after="2025-12-01">
<owner>andyphan@chromium.org</owner>
<owner>thestig@chromium.org</owner>
<summary>
Tracks the brush color used for an Ink2 Highlighter stroke modification in
the PDF viewer. This is only recorded when drawing actions are performed by
the user, but not if they occur as part of undo or redo operations.
</summary>
</histogram>
<histogram name="PDF.Ink2StrokePenColor" enum="PDFInk2StrokePenColor"
expires_after="2025-12-01">
<owner>andyphan@chromium.org</owner>