Fix SkXfermode deserialization.
Validation was failing due to an inverted test condition. BUG=417266 R=reed@google.com Author: senorblanco@chromium.org Review URL: https://codereview.chromium.org/596333002
This commit is contained in:
parent
7b09aab713
commit
0f7197bc0d
@ -1258,7 +1258,7 @@ SkProcCoeffXfermode::SkProcCoeffXfermode(SkReadBuffer& buffer) : INHERITED(buffe
|
||||
|
||||
SkFlattenable* SkProcCoeffXfermode::CreateProc(SkReadBuffer& buffer) {
|
||||
uint32_t mode32 = buffer.read32();
|
||||
if (!buffer.validate(mode32 >= SK_ARRAY_COUNT(gProcCoeffs))) {
|
||||
if (!buffer.validate(mode32 < SK_ARRAY_COUNT(gProcCoeffs))) {
|
||||
return NULL;
|
||||
}
|
||||
return SkXfermode::Create((SkXfermode::Mode)mode32);
|
||||
|
@ -261,6 +261,19 @@ static void TestBitmapSerialization(const SkBitmap& validBitmap,
|
||||
}
|
||||
}
|
||||
|
||||
static void TestXfermodeSerialization(skiatest::Reporter* reporter) {
|
||||
for (size_t i = 0; i <= SkXfermode::kLastMode; ++i) {
|
||||
if (i == SkXfermode::kSrcOver_Mode) {
|
||||
// skip SrcOver, as it is allowed to return NULL from Create()
|
||||
continue;
|
||||
}
|
||||
SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(static_cast<SkXfermode::Mode>(i)));
|
||||
REPORTER_ASSERT(reporter, mode.get());
|
||||
SkAutoTUnref<SkXfermode> copy(
|
||||
TestFlattenableSerialization<SkXfermode>(mode.get(), true, reporter));
|
||||
}
|
||||
}
|
||||
|
||||
static SkBitmap draw_picture(SkPicture& picture) {
|
||||
SkBitmap bitmap;
|
||||
bitmap.allocN32Pixels(SkScalarCeilToInt(picture.cullRect().width()),
|
||||
@ -406,6 +419,11 @@ DEF_TEST(Serialization, reporter) {
|
||||
TestObjectSerialization(®ion, reporter);
|
||||
}
|
||||
|
||||
// Test xfermode serialization
|
||||
{
|
||||
TestXfermodeSerialization(reporter);
|
||||
}
|
||||
|
||||
// Test string serialization
|
||||
{
|
||||
SkString string("string");
|
||||
|
Loading…
Reference in New Issue
Block a user