Chromium Code Reviews| Index: src/core/SkFlattenableSerialization.cpp |
| diff --git a/src/core/SkFlattenableSerialization.cpp b/src/core/SkFlattenableSerialization.cpp |
| index b74c82f051648f77dce5da97b26e21ba53b12e4b..f33e9f94626c7cb0c7b111ca6000329fc8341dc0 100644 |
| --- a/src/core/SkFlattenableSerialization.cpp |
| +++ b/src/core/SkFlattenableSerialization.cpp |
| @@ -9,6 +9,7 @@ |
| #include "SkData.h" |
| #include "SkFlattenable.h" |
| +#include "SkImageFilter.h" |
| #include "SkOrderedReadBuffer.h" |
| #include "SkOrderedWriteBuffer.h" |
| @@ -26,3 +27,23 @@ SkFlattenable* SkDeserializeFlattenable(const void* data, size_t size) { |
| SkOrderedReadBuffer buffer(data, size); |
| return buffer.readFlattenable(); |
| } |
| + |
| +bool SkValidateImageFilterRec(SkFlattenable* flattenable) { |
| + // Only SkImageFilter objects are allowed |
| + if (!flattenable || !flattenable->isA(SkFlattenable::IMAGE_FILTER)) |
|
mtklein
2013/08/28 15:00:37
Please add braces around the bodies of if, for, wh
|
| + return false; |
| + |
| + // Check that all the inputs are also SkImageFilter objects |
| + SkImageFilter* filter = static_cast<SkImageFilter*>(flattenable); |
| + int nbInputs = filter->countInputs(); |
| + for (int i = 0; i < nbInputs; ++i) |
| + if (!SkValidateImageFilterRec(filter->getInput(i))) |
| + return false; |
| + |
| + return true; |
| +} |
| + |
| +SkImageFilter* SkValidateImageFilter(SkFlattenable* flattenable) { |
| + return SkValidateImageFilterRec(flattenable) ? |
| + static_cast<SkImageFilter*>(flattenable) : 0; |
| +} |