Fixed issue with invalid stretch params

Refactored error checking logic to ignore
all invalid parameters for vecX/vecY
regardless if NaN parameters were
computed through intermediate math
operations or provided as inputs

Fixes: 183781985
Test: Added CTS test
Change-Id: Ib9f3dd1becc0486dc15ce306660bd5d469b81256
This commit is contained in:
Nader Jawad
2021-04-12 14:30:21 -07:00
parent 41a5cb8946
commit 0a458ab55a

View File

@@ -626,20 +626,14 @@ public class EdgeEffect {
// assume rotations of increments of 90 degrees
float x = mTmpPoints[10] - mTmpPoints[8];
float width = right - left;
float vecX = 0f;
if (width > 0) {
vecX = dampStretchVector(Math.max(-1f, Math.min(1f, x / width)));
}
float vecX = dampStretchVector(Math.max(-1f, Math.min(1f, x / width)));
float y = mTmpPoints[11] - mTmpPoints[9];
float height = bottom - top;
float vecY = 0f;
if (height > 0) {
vecY = dampStretchVector(Math.max(-1f, Math.min(1f, y / height)));
}
float vecY = dampStretchVector(Math.max(-1f, Math.min(1f, y / height)));
boolean hasStretchVectors = Float.compare(vecX, 0) != 0 || Float.compare(vecY, 0) != 0;
if (right > left && bottom > top && mWidth > 0 && mHeight > 0 && hasStretchVectors) {
boolean hasValidVectors = Float.isFinite(vecX) && Float.isFinite(vecY);
if (right > left && bottom > top && mWidth > 0 && mHeight > 0 && hasValidVectors) {
renderNode.stretch(
left,
top,