Commit a9e984ab authored by Rob Schonberger's avatar Rob Schonberger Committed by Commit Bot

Add more methods to NeuralFilterUtil, and increase test coverage to 100.

Bug: 1009290
Change-Id: Ie3a17a6df2f7190cf9536e5414fc814f3d1f21e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1846214Reviewed-by: default avatarMichael Spang <spang@chromium.org>
Commit-Queue: Rob Schonberger <robsc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#706184}
parent 0eacdf2d
......@@ -76,6 +76,7 @@ Stroke::Stroke(int max_length) : max_length_(max_length) {}
Stroke::~Stroke() {}
void Stroke::AddSample(const Sample& samp) {
samples_seen_++;
if (samples_.empty()) {
tracking_id_ = samp.tracking_id;
}
......@@ -99,10 +100,22 @@ gfx::PointF Stroke::GetCentroid() const {
return gfx::ScalePoint(unscaled_centroid, 1.f / samples_.size());
}
const std::deque<Sample>& Stroke::samples() const {
return samples_;
}
int Stroke::tracking_id() const {
return tracking_id_;
}
uint64_t Stroke::samples_seen() const {
return samples_seen_;
}
void Stroke::SetTrackingId(int tracking_id) {
tracking_id_ = tracking_id;
}
float Stroke::BiggestSize() const {
float biggest = 0;
for (const auto& sample : samples_) {
......
......@@ -4,6 +4,7 @@
#ifndef UI_EVENTS_OZONE_EVDEV_TOUCH_FILTER_NEURAL_STYLUS_PALM_DETECTION_FILTER_UTIL_H_
#define UI_EVENTS_OZONE_EVDEV_TOUCH_FILTER_NEURAL_STYLUS_PALM_DETECTION_FILTER_UTIL_H_
#include <cstdint>
#include <deque>
#include <vector>
......@@ -58,13 +59,15 @@ class EVENTS_OZONE_EVDEV_EXPORT Stroke {
void AddSample(const Sample& sample);
gfx::PointF GetCentroid() const;
float BiggestSize() const;
void SetTrackingId(int tracking_id);
const std::deque<Sample>& samples() const;
uint64_t samples_seen() const;
int tracking_id() const;
private:
std::deque<Sample> samples_;
int tracking_id_ = 0;
unsigned long max_length_;
uint64_t samples_seen_ = 0;
uint64_t max_length_;
};
} // namespace ui
......
......@@ -3,6 +3,8 @@
// found in the LICENSE file.
#include "ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h"
#include <algorithm>
#include <cstdint>
#include <utility>
#include <vector>
......@@ -50,6 +52,18 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, DistilledNocturneTest) {
nocturne_touchscreen_.GetAbsResolution(ABS_MT_TOUCH_MINOR));
}
TEST_F(NeuralStylusPalmDetectionFilterUtilTest, NoMinorResTest) {
// Nocturne has minor resolution: but lets pretend it didnt. we should recover
// "1" as the resolution.
auto abs_info = nocturne_touchscreen_.GetAbsInfoByCode(ABS_MT_TOUCH_MINOR);
abs_info.resolution = 0;
nocturne_touchscreen_.SetAbsInfo(ABS_MT_TOUCH_MINOR, abs_info);
const DistilledDevInfo nocturne_distilled =
DistilledDevInfo::Create(nocturne_touchscreen_);
EXPECT_EQ(1, nocturne_distilled.minor_radius_res);
EXPECT_EQ(1, nocturne_distilled.major_radius_res);
}
TEST_F(NeuralStylusPalmDetectionFilterUtilTest, DistillerKohakuTest) {
EventDeviceInfo kohaku_touchscreen;
ASSERT_TRUE(
......@@ -134,6 +148,8 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeTest) {
ASSERT_FLOAT_EQ(expected_centroid.x(), stroke.GetCentroid().x())
<< "failed at i " << i;
}
stroke.SetTrackingId(55);
EXPECT_EQ(55, stroke.tracking_id());
}
TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) {
......@@ -148,6 +164,7 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) {
touch_.major = 2 + i;
touch_.minor = 1 + i;
Sample s(touch_, t, nocturne_distilled);
EXPECT_EQ(static_cast<uint64_t>(i), stroke.samples_seen());
stroke.AddSample(std::move(s));
EXPECT_FLOAT_EQ((1 + i) * (2 + i), stroke.BiggestSize());
......@@ -155,6 +172,7 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) {
second_s.minor_radius = 0;
no_minor_stroke.AddSample(std::move(second_s));
EXPECT_FLOAT_EQ((2 + i) * (2 + i), no_minor_stroke.BiggestSize());
EXPECT_EQ(std::min(3ul, 1ul + i), stroke.samples().size());
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment