Commit 28a79528 authored by prashant.n's avatar prashant.n Committed by Commit Bot

Fix crash in DarkModeImageClassifier::GetSamples().

For classifying images, DarkModeImageClassifier creates bitmap from
PaintImage. For empty paint images, this crashes. This patch prevents
classifying such empty paint images.

Bug: 1119761
Change-Id: I3961da716236b929cc5a6925ff5927d5e8f8ac60
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2368935
Commit-Queue: Prashant Nevase <prashant.n@samsung.com>
Reviewed-by: default avatarStephen Chenney <schenney@chromium.org>
Reviewed-by: default avatarPhilip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#801267}
parent eef4cc5c
...@@ -110,6 +110,10 @@ DarkModeClassification DarkModeImageClassifier::Classify( ...@@ -110,6 +110,10 @@ DarkModeClassification DarkModeImageClassifier::Classify(
const PaintImage& paint_image, const PaintImage& paint_image,
const SkRect& src, const SkRect& src,
const SkRect& dst) { const SkRect& dst) {
// Empty paint image cannot be classified.
if (!paint_image)
return DarkModeClassification::kDoNotApplyFilter;
DarkModeImageClassificationCache* cache = DarkModeImageClassificationCache* cache =
DarkModeImageClassificationCache::GetInstance(); DarkModeImageClassificationCache::GetInstance();
PaintImage::Id image_id = paint_image.stable_id(); PaintImage::Id image_id = paint_image.stable_id();
...@@ -131,6 +135,8 @@ DarkModeClassification DarkModeImageClassifier::Classify( ...@@ -131,6 +135,8 @@ DarkModeClassification DarkModeImageClassifier::Classify(
bool DarkModeImageClassifier::GetBitmap(const PaintImage& paint_image, bool DarkModeImageClassifier::GetBitmap(const PaintImage& paint_image,
const SkRect& src, const SkRect& src,
SkBitmap* bitmap) { SkBitmap* bitmap) {
DCHECK(paint_image);
if (!src.width() || !src.height()) if (!src.width() || !src.height())
return false; return false;
......
...@@ -150,6 +150,14 @@ TEST_F(DarkModeImageClassifierTest, FeaturesAndClassification) { ...@@ -150,6 +150,14 @@ TEST_F(DarkModeImageClassifierTest, FeaturesAndClassification) {
EXPECT_NEAR(0.0f, features.background_ratio, kEpsilon); EXPECT_NEAR(0.0f, features.background_ratio, kEpsilon);
} }
TEST_F(DarkModeImageClassifierTest, InvalidImage) {
PaintImage paint_image;
SkRect src = SkRect::MakeWH(50, 50);
SkRect dst = SkRect::MakeWH(50, 50);
EXPECT_EQ(image_classifier()->Classify(paint_image, src, dst),
DarkModeClassification::kDoNotApplyFilter);
}
TEST_F(DarkModeImageClassifierTest, Caching) { TEST_F(DarkModeImageClassifierTest, Caching) {
PaintImage::Id image_id = PaintImage::GetNextId(); PaintImage::Id image_id = PaintImage::GetNextId();
SkRect src1 = SkRect::MakeXYWH(0, 0, 50, 50); SkRect src1 = SkRect::MakeXYWH(0, 0, 50, 50);
......
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