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) {} ...@@ -76,6 +76,7 @@ Stroke::Stroke(int max_length) : max_length_(max_length) {}
Stroke::~Stroke() {} Stroke::~Stroke() {}
void Stroke::AddSample(const Sample& samp) { void Stroke::AddSample(const Sample& samp) {
samples_seen_++;
if (samples_.empty()) { if (samples_.empty()) {
tracking_id_ = samp.tracking_id; tracking_id_ = samp.tracking_id;
} }
...@@ -99,10 +100,22 @@ gfx::PointF Stroke::GetCentroid() const { ...@@ -99,10 +100,22 @@ gfx::PointF Stroke::GetCentroid() const {
return gfx::ScalePoint(unscaled_centroid, 1.f / samples_.size()); return gfx::ScalePoint(unscaled_centroid, 1.f / samples_.size());
} }
const std::deque<Sample>& Stroke::samples() const {
return samples_;
}
int Stroke::tracking_id() const { int Stroke::tracking_id() const {
return tracking_id_; 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 Stroke::BiggestSize() const {
float biggest = 0; float biggest = 0;
for (const auto& sample : samples_) { for (const auto& sample : samples_) {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#ifndef UI_EVENTS_OZONE_EVDEV_TOUCH_FILTER_NEURAL_STYLUS_PALM_DETECTION_FILTER_UTIL_H_ #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_ #define UI_EVENTS_OZONE_EVDEV_TOUCH_FILTER_NEURAL_STYLUS_PALM_DETECTION_FILTER_UTIL_H_
#include <cstdint>
#include <deque> #include <deque>
#include <vector> #include <vector>
...@@ -58,13 +59,15 @@ class EVENTS_OZONE_EVDEV_EXPORT Stroke { ...@@ -58,13 +59,15 @@ class EVENTS_OZONE_EVDEV_EXPORT Stroke {
void AddSample(const Sample& sample); void AddSample(const Sample& sample);
gfx::PointF GetCentroid() const; gfx::PointF GetCentroid() const;
float BiggestSize() const; float BiggestSize() const;
void SetTrackingId(int tracking_id);
const std::deque<Sample>& samples() const; const std::deque<Sample>& samples() const;
uint64_t samples_seen() const;
int tracking_id() const; int tracking_id() const;
private: private:
std::deque<Sample> samples_; std::deque<Sample> samples_;
int tracking_id_ = 0; int tracking_id_ = 0;
unsigned long max_length_; uint64_t samples_seen_ = 0;
uint64_t max_length_;
}; };
} // namespace ui } // namespace ui
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h" #include "ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_util.h"
#include <algorithm>
#include <cstdint>
#include <utility> #include <utility>
#include <vector> #include <vector>
...@@ -50,6 +52,18 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, DistilledNocturneTest) { ...@@ -50,6 +52,18 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, DistilledNocturneTest) {
nocturne_touchscreen_.GetAbsResolution(ABS_MT_TOUCH_MINOR)); 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) { TEST_F(NeuralStylusPalmDetectionFilterUtilTest, DistillerKohakuTest) {
EventDeviceInfo kohaku_touchscreen; EventDeviceInfo kohaku_touchscreen;
ASSERT_TRUE( ASSERT_TRUE(
...@@ -134,6 +148,8 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeTest) { ...@@ -134,6 +148,8 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeTest) {
ASSERT_FLOAT_EQ(expected_centroid.x(), stroke.GetCentroid().x()) ASSERT_FLOAT_EQ(expected_centroid.x(), stroke.GetCentroid().x())
<< "failed at i " << i; << "failed at i " << i;
} }
stroke.SetTrackingId(55);
EXPECT_EQ(55, stroke.tracking_id());
} }
TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) { TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) {
...@@ -148,6 +164,7 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) { ...@@ -148,6 +164,7 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) {
touch_.major = 2 + i; touch_.major = 2 + i;
touch_.minor = 1 + i; touch_.minor = 1 + i;
Sample s(touch_, t, nocturne_distilled); Sample s(touch_, t, nocturne_distilled);
EXPECT_EQ(static_cast<uint64_t>(i), stroke.samples_seen());
stroke.AddSample(std::move(s)); stroke.AddSample(std::move(s));
EXPECT_FLOAT_EQ((1 + i) * (2 + i), stroke.BiggestSize()); EXPECT_FLOAT_EQ((1 + i) * (2 + i), stroke.BiggestSize());
...@@ -155,6 +172,7 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) { ...@@ -155,6 +172,7 @@ TEST_F(NeuralStylusPalmDetectionFilterUtilTest, StrokeBiggestSizeTest) {
second_s.minor_radius = 0; second_s.minor_radius = 0;
no_minor_stroke.AddSample(std::move(second_s)); no_minor_stroke.AddSample(std::move(second_s));
EXPECT_FLOAT_EQ((2 + i) * (2 + i), no_minor_stroke.BiggestSize()); 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