Merge "Fix vibration effect segment validation regression on allocation count" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9870b8a5f4
@@ -108,7 +108,7 @@ public final class PrimitiveSegment extends VibrationEffectSegment {
|
|||||||
Preconditions.checkArgumentInRange(mPrimitiveId, VibrationEffect.Composition.PRIMITIVE_NOOP,
|
Preconditions.checkArgumentInRange(mPrimitiveId, VibrationEffect.Composition.PRIMITIVE_NOOP,
|
||||||
VibrationEffect.Composition.PRIMITIVE_LOW_TICK, "primitiveId");
|
VibrationEffect.Composition.PRIMITIVE_LOW_TICK, "primitiveId");
|
||||||
Preconditions.checkArgumentInRange(mScale, 0f, 1f, "scale");
|
Preconditions.checkArgumentInRange(mScale, 0f, 1f, "scale");
|
||||||
Preconditions.checkArgumentNonnegative(mDelay, "primitive delay should be >= 0");
|
VibrationEffectSegment.checkDurationArgument(mDelay, "delay");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -108,14 +108,9 @@ public final class RampSegment extends VibrationEffectSegment {
|
|||||||
/** @hide */
|
/** @hide */
|
||||||
@Override
|
@Override
|
||||||
public void validate() {
|
public void validate() {
|
||||||
Preconditions.checkArgumentNonNegative(mStartFrequencyHz,
|
VibrationEffectSegment.checkFrequencyArgument(mStartFrequencyHz, "startFrequencyHz");
|
||||||
"Frequencies must all be >= 0, got start frequency of " + mStartFrequencyHz);
|
VibrationEffectSegment.checkFrequencyArgument(mEndFrequencyHz, "endFrequencyHz");
|
||||||
Preconditions.checkArgumentFinite(mStartFrequencyHz, "startFrequencyHz");
|
VibrationEffectSegment.checkDurationArgument(mDuration, "duration");
|
||||||
Preconditions.checkArgumentNonNegative(mEndFrequencyHz,
|
|
||||||
"Frequencies must all be >= 0, got end frequency of " + mEndFrequencyHz);
|
|
||||||
Preconditions.checkArgumentFinite(mEndFrequencyHz, "endFrequencyHz");
|
|
||||||
Preconditions.checkArgumentNonnegative(mDuration,
|
|
||||||
"Durations must all be >= 0, got " + mDuration);
|
|
||||||
Preconditions.checkArgumentInRange(mStartAmplitude, 0f, 1f, "startAmplitude");
|
Preconditions.checkArgumentInRange(mStartAmplitude, 0f, 1f, "startAmplitude");
|
||||||
Preconditions.checkArgumentInRange(mEndAmplitude, 0f, 1f, "endAmplitude");
|
Preconditions.checkArgumentInRange(mEndAmplitude, 0f, 1f, "endAmplitude");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,11 +95,8 @@ public final class StepSegment extends VibrationEffectSegment {
|
|||||||
/** @hide */
|
/** @hide */
|
||||||
@Override
|
@Override
|
||||||
public void validate() {
|
public void validate() {
|
||||||
Preconditions.checkArgumentNonNegative(mFrequencyHz,
|
VibrationEffectSegment.checkFrequencyArgument(mFrequencyHz, "frequencyHz");
|
||||||
"Frequencies must all be >= 0, got " + mFrequencyHz);
|
VibrationEffectSegment.checkDurationArgument(mDuration, "duration");
|
||||||
Preconditions.checkArgumentFinite(mFrequencyHz, "frequencyHz");
|
|
||||||
Preconditions.checkArgumentNonnegative(mDuration,
|
|
||||||
"Durations must all be >= 0, got " + mDuration);
|
|
||||||
if (Float.compare(mAmplitude, VibrationEffect.DEFAULT_AMPLITUDE) != 0) {
|
if (Float.compare(mAmplitude, VibrationEffect.DEFAULT_AMPLITUDE) != 0) {
|
||||||
Preconditions.checkArgumentInRange(mAmplitude, 0f, 1f, "amplitude");
|
Preconditions.checkArgumentInRange(mAmplitude, 0f, 1f, "amplitude");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,43 @@ public abstract class VibrationEffectSegment implements Parcelable {
|
|||||||
@NonNull
|
@NonNull
|
||||||
public abstract <T extends VibrationEffectSegment> T applyEffectStrength(int effectStrength);
|
public abstract <T extends VibrationEffectSegment> T applyEffectStrength(int effectStrength);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the given frequency argument is valid to represent a vibration effect frequency in
|
||||||
|
* hertz, i.e. a finite non-negative value.
|
||||||
|
*
|
||||||
|
* @param value the frequency argument value to be checked
|
||||||
|
* @param name the argument name for the error message.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static void checkFrequencyArgument(float value, @NonNull String name) {
|
||||||
|
// Similar to combining Preconditions checkArgumentFinite + checkArgumentNonnegative,
|
||||||
|
// but this implementation doesn't create the error message unless a check fail.
|
||||||
|
if (Float.isNaN(value)) {
|
||||||
|
throw new IllegalArgumentException(name + " must not be NaN");
|
||||||
|
}
|
||||||
|
if (Float.isInfinite(value)) {
|
||||||
|
throw new IllegalArgumentException(name + " must not be infinite");
|
||||||
|
}
|
||||||
|
if (value < 0) {
|
||||||
|
throw new IllegalArgumentException(name + " must be >= 0, got " + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the given duration argument is valid, i.e. a non-negative value.
|
||||||
|
*
|
||||||
|
* @param value the duration value to be checked
|
||||||
|
* @param name the argument name for the error message.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static void checkDurationArgument(long value, @NonNull String name) {
|
||||||
|
if (value < 0) {
|
||||||
|
throw new IllegalArgumentException(name + " must be >= 0, got " + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static final Creator<VibrationEffectSegment> CREATOR =
|
public static final Creator<VibrationEffectSegment> CREATOR =
|
||||||
new Creator<VibrationEffectSegment>() {
|
new Creator<VibrationEffectSegment>() {
|
||||||
|
|||||||
Reference in New Issue
Block a user