From: msarett Date: Mon, 4 Apr 2016 20:53:02 +0000 (-0700) Subject: Delete SkFlattenable::Type X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~129^2~1142 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=99d9231f6a4cb6b85b8637e9d8ae32f8bd7c466f;p=platform%2Fupstream%2FlibSkiaSharp.git Delete SkFlattenable::Type BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1834303003 Review URL: https://codereview.chromium.org/1834303003 --- diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp index e2e9235..3cb43a8 100644 --- a/gm/imagefiltersbase.cpp +++ b/gm/imagefiltersbase.cpp @@ -23,8 +23,7 @@ public: public: Registrar() { SkFlattenable::Register("FailImageFilter", - FailImageFilter::CreateProc, - FailImageFilter::GetFlattenableType()); + FailImageFilter::CreateProc); } }; static sk_sp Make() { @@ -66,8 +65,7 @@ public: public: Registrar() { SkFlattenable::Register("IdentityImageFilter", - IdentityImageFilter::CreateProc, - IdentityImageFilter::GetFlattenableType()); + IdentityImageFilter::CreateProc); } }; static sk_sp Make(sk_sp input) { diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp index e7bcf70..f49d382 100644 --- a/gm/imagefiltersgraph.cpp +++ b/gm/imagefiltersgraph.cpp @@ -32,8 +32,7 @@ public: public: Registrar() { SkFlattenable::Register("SimpleOffsetFilter", - SimpleOffsetFilter::CreateProc, - SimpleOffsetFilter::GetFlattenableType()); + SimpleOffsetFilter::CreateProc); } }; static sk_sp Make(SkScalar dx, SkScalar dy, sk_sp input) { diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h index 7ac335f..5cfbf27 100644 --- a/include/core/SkColorFilter.h +++ b/include/core/SkColorFilter.h @@ -162,7 +162,6 @@ public: SK_TO_STRING_PUREVIRT() SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() - SK_DEFINE_FLATTENABLE_TYPE(SkColorFilter) protected: SkColorFilter() {} diff --git a/include/core/SkDrawLooper.h b/include/core/SkDrawLooper.h index 28d7d8b..e59e52f 100644 --- a/include/core/SkDrawLooper.h +++ b/include/core/SkDrawLooper.h @@ -107,7 +107,6 @@ public: virtual bool asABlurShadow(BlurShadowRec*) const; SK_TO_STRING_PUREVIRT() - SK_DEFINE_FLATTENABLE_TYPE(SkDrawLooper) protected: SkDrawLooper() {} diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h index c76f119..4d45e24 100644 --- a/include/core/SkFlattenable.h +++ b/include/core/SkFlattenable.h @@ -43,8 +43,7 @@ class SkPrivateEffectInitializer; } #define SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(flattenable) \ - SkFlattenable::Register(#flattenable, flattenable::CreateProc, \ - flattenable::GetFlattenableType()); + SkFlattenable::Register(#flattenable, flattenable::CreateProc); #define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \ private: \ @@ -53,14 +52,6 @@ class SkPrivateEffectInitializer; public: \ Factory getFactory() const override { return CreateProc; } -/** For SkFlattenable derived objects with a valid type - This macro should only be used in base class objects in core - */ -#define SK_DEFINE_FLATTENABLE_TYPE(flattenable) \ - static Type GetFlattenableType() { \ - return k##flattenable##_Type; \ - } - /** \class SkFlattenable SkFlattenable is the base class for objects that need to be flattened @@ -69,19 +60,6 @@ class SkPrivateEffectInitializer; */ class SK_API SkFlattenable : public SkRefCnt { public: - enum Type { - kSkColorFilter_Type, - kSkDrawLooper_Type, - kSkImageFilter_Type, - kSkMaskFilter_Type, - kSkPathEffect_Type, - kSkPixelRef_Type, - kSkRasterizer_Type, - kSkShader_Type, - kSkUnused_Type, // used to be SkUnitMapper - kSkXfermode_Type, - }; - typedef sk_sp (*Factory)(SkReadBuffer&); SkFlattenable() {} @@ -98,9 +76,8 @@ public: static Factory NameToFactory(const char name[]); static const char* FactoryToName(Factory); - static bool NameToType(const char name[], Type* type); - static void Register(const char name[], Factory, Type); + static void Register(const char name[], Factory); /** * Override this if your subclass needs to record data that it will need to recreate itself diff --git a/include/core/SkFlattenableSerialization.h b/include/core/SkFlattenableSerialization.h index ffb1b5a..6d0f681 100644 --- a/include/core/SkFlattenableSerialization.h +++ b/include/core/SkFlattenableSerialization.h @@ -13,7 +13,6 @@ class SkData; SK_API SkData* SkValidatingSerializeFlattenable(SkFlattenable*); -SK_API SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size, - SkFlattenable::Type type); +SK_API SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size); #endif diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h index 4493d28..cb2e7ea 100644 --- a/include/core/SkImageFilter.h +++ b/include/core/SkImageFilter.h @@ -292,7 +292,6 @@ public: #endif SK_TO_STRING_PUREVIRT() - SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter) protected: class Common { diff --git a/include/core/SkMaskFilter.h b/include/core/SkMaskFilter.h index 8d3d1ca..405f44f 100644 --- a/include/core/SkMaskFilter.h +++ b/include/core/SkMaskFilter.h @@ -171,7 +171,6 @@ public: virtual bool asABlur(BlurRec*) const; SK_TO_STRING_PUREVIRT() - SK_DEFINE_FLATTENABLE_TYPE(SkMaskFilter) protected: SkMaskFilter() {} diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h index fd59573..6175fb0 100644 --- a/include/core/SkPathEffect.h +++ b/include/core/SkPathEffect.h @@ -129,7 +129,6 @@ public: virtual DashType asADash(DashInfo* info) const; SK_TO_STRING_PUREVIRT() - SK_DEFINE_FLATTENABLE_TYPE(SkPathEffect) #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK /// Override for subclasses as appropriate. diff --git a/include/core/SkRasterizer.h b/include/core/SkRasterizer.h index 1881cce..b065c44 100644 --- a/include/core/SkRasterizer.h +++ b/include/core/SkRasterizer.h @@ -26,8 +26,6 @@ public: const SkIRect* clipBounds, SkMaskFilter* filter, SkMask* mask, SkMask::CreateMode mode) const; - SK_DEFINE_FLATTENABLE_TYPE(SkRasterizer) - protected: SkRasterizer() {} virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix, diff --git a/include/core/SkShader.h b/include/core/SkShader.h index 0de53ad..1d89f61 100644 --- a/include/core/SkShader.h +++ b/include/core/SkShader.h @@ -456,7 +456,6 @@ public: virtual SkShader* refAsALocalMatrixShader(SkMatrix* localMatrix) const; SK_TO_STRING_VIRT() - SK_DEFINE_FLATTENABLE_TYPE(SkShader) protected: void flatten(SkWriteBuffer&) const override; diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h index db8d570..7870f27 100644 --- a/include/core/SkXfermode.h +++ b/include/core/SkXfermode.h @@ -234,7 +234,6 @@ public: SK_TO_STRING_PUREVIRT() SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() - SK_DEFINE_FLATTENABLE_TYPE(SkXfermode) enum D32Flags { kSrcIsOpaque_D32Flag = 1 << 0, diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp index 1b7d30b..57e7de5 100644 --- a/samplecode/SampleFilterFuzz.cpp +++ b/samplecode/SampleFilterFuzz.cpp @@ -799,8 +799,7 @@ static SkImageFilter* make_serialized_image_filter() { } } #endif // SK_ADD_RANDOM_BIT_FLIPS - SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(ptr, len, - SkImageFilter::GetFlattenableType()); + SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(ptr, len); return static_cast(flattenable); } diff --git a/src/core/SkFlattenable.cpp b/src/core/SkFlattenable.cpp index c759a1a..506a7b1 100644 --- a/src/core/SkFlattenable.cpp +++ b/src/core/SkFlattenable.cpp @@ -53,20 +53,18 @@ void SkRefCntSet::decPtr(void* ptr) { struct Entry { const char* fName; SkFlattenable::Factory fFactory; - SkFlattenable::Type fType; }; static int gCount = 0; static Entry gEntries[MAX_ENTRY_COUNT]; -void SkFlattenable::Register(const char name[], Factory factory, SkFlattenable::Type type) { +void SkFlattenable::Register(const char name[], Factory factory) { SkASSERT(name); SkASSERT(factory); SkASSERT(gCount < MAX_ENTRY_COUNT); gEntries[gCount].fName = name; gEntries[gCount].fFactory = factory; - gEntries[gCount].fType = type; gCount += 1; } @@ -94,22 +92,6 @@ SkFlattenable::Factory SkFlattenable::NameToFactory(const char name[]) { return nullptr; } -bool SkFlattenable::NameToType(const char name[], SkFlattenable::Type* type) { - SkASSERT(type); - InitializeFlattenablesIfNeeded(); -#ifdef SK_DEBUG - report_no_entries(__FUNCTION__); -#endif - const Entry* entries = gEntries; - for (int i = gCount - 1; i >= 0; --i) { - if (strcmp(entries[i].fName, name) == 0) { - *type = entries[i].fType; - return true; - } - } - return false; -} - const char* SkFlattenable::FactoryToName(Factory fact) { InitializeFlattenablesIfNeeded(); #ifdef SK_DEBUG diff --git a/src/core/SkFlattenableSerialization.cpp b/src/core/SkFlattenableSerialization.cpp index e9ce09f..748e20a 100644 --- a/src/core/SkFlattenableSerialization.cpp +++ b/src/core/SkFlattenableSerialization.cpp @@ -20,8 +20,7 @@ SkData* SkValidatingSerializeFlattenable(SkFlattenable* flattenable) { return data.release(); } -SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size, - SkFlattenable::Type type) { +SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size) { SkValidatingReadBuffer buffer(data, size); - return buffer.readFlattenable(type); + return buffer.readFlattenable(); } diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp index f220b5a..d57b223 100644 --- a/src/core/SkReadBuffer.cpp +++ b/src/core/SkReadBuffer.cpp @@ -329,11 +329,7 @@ SkTypeface* SkReadBuffer::readTypeface() { } } -SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) { - // - // TODO: confirm that ft matches the factory we decide to use - // - +SkFlattenable* SkReadBuffer::readFlattenable() { SkFlattenable::Factory factory = nullptr; if (fFactoryCount > 0) { diff --git a/src/core/SkReadBuffer.h b/src/core/SkReadBuffer.h index 7b12194..cd570e1 100644 --- a/src/core/SkReadBuffer.h +++ b/src/core/SkReadBuffer.h @@ -126,9 +126,9 @@ public: virtual void readPath(SkPath* path); void readPaint(SkPaint* paint) { paint->unflatten(*this); } - virtual SkFlattenable* readFlattenable(SkFlattenable::Type); + virtual SkFlattenable* readFlattenable(); template sk_sp readFlattenable() { - return sk_sp((T*)this->readFlattenable(T::GetFlattenableType())); + return sk_sp((T*)this->readFlattenable()); } sk_sp readColorFilter() { return this->readFlattenable(); } sk_sp readDrawLooper() { return this->readFlattenable(); } diff --git a/src/core/SkScalerContext.cpp b/src/core/SkScalerContext.cpp index cf4098b..3db9e30 100644 --- a/src/core/SkScalerContext.cpp +++ b/src/core/SkScalerContext.cpp @@ -62,15 +62,14 @@ void SkGlyph::zeroMetrics() { #define DUMP_RECx #endif -static SkFlattenable* load_flattenable(const SkDescriptor* desc, uint32_t tag, - SkFlattenable::Type ft) { +static SkFlattenable* load_flattenable(const SkDescriptor* desc, uint32_t tag) { SkFlattenable* obj = nullptr; uint32_t len; const void* data = desc->findEntry(tag, &len); if (data) { SkReadBuffer buffer(data, len); - obj = buffer.readFlattenable(ft); + obj = buffer.readFlattenable(); SkASSERT(buffer.offset() == buffer.size()); } return obj; @@ -80,12 +79,9 @@ SkScalerContext::SkScalerContext(SkTypeface* typeface, const SkDescriptor* desc) : fRec(*static_cast(desc->findEntry(kRec_SkDescriptorTag, nullptr))) , fTypeface(SkRef(typeface)) - , fPathEffect(static_cast(load_flattenable(desc, kPathEffect_SkDescriptorTag, - SkFlattenable::kSkPathEffect_Type))) - , fMaskFilter(static_cast(load_flattenable(desc, kMaskFilter_SkDescriptorTag, - SkFlattenable::kSkMaskFilter_Type))) - , fRasterizer(static_cast(load_flattenable(desc, kRasterizer_SkDescriptorTag, - SkFlattenable::kSkRasterizer_Type))) + , fPathEffect(static_cast(load_flattenable(desc, kPathEffect_SkDescriptorTag))) + , fMaskFilter(static_cast(load_flattenable(desc, kMaskFilter_SkDescriptorTag))) + , fRasterizer(static_cast(load_flattenable(desc, kRasterizer_SkDescriptorTag))) // Initialize based on our settings. Subclasses can also force this. , fGenerateImageFromPath(fRec.fFrameWidth > 0 || fPathEffect != nullptr || fRasterizer != nullptr) diff --git a/src/core/SkValidatingReadBuffer.cpp b/src/core/SkValidatingReadBuffer.cpp index ad4b6c4..0ce8bf9 100644 --- a/src/core/SkValidatingReadBuffer.cpp +++ b/src/core/SkValidatingReadBuffer.cpp @@ -222,20 +222,14 @@ bool SkValidatingReadBuffer::validateAvailable(size_t size) { return this->validate((size <= SK_MaxU32) && fReader.isAvailable(static_cast(size))); } -SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type) { +SkFlattenable* SkValidatingReadBuffer::readFlattenable() { SkString name; this->readString(&name); if (fError) { return nullptr; } - // Is this the type we wanted ? const char* cname = name.c_str(); - SkFlattenable::Type baseType; - if (!SkFlattenable::NameToType(cname, &baseType) || (baseType != type)) { - return nullptr; - } - SkFlattenable::Factory factory = SkFlattenable::NameToFactory(cname); if (nullptr == factory) { return nullptr; // writer failed to give us the flattenable diff --git a/src/core/SkValidatingReadBuffer.h b/src/core/SkValidatingReadBuffer.h index bcdcba5..4b8cdf8 100644 --- a/src/core/SkValidatingReadBuffer.h +++ b/src/core/SkValidatingReadBuffer.h @@ -39,7 +39,7 @@ public: void* readEncodedString(size_t* length, SkPaint::TextEncoding encoding) override; // common data structures - SkFlattenable* readFlattenable(SkFlattenable::Type type) override; + SkFlattenable* readFlattenable() override; void skipFlattenable() override; void readPoint(SkPoint* point) override; void readMatrix(SkMatrix* matrix) override; diff --git a/src/utils/SkBitmapSourceDeserializer.h b/src/utils/SkBitmapSourceDeserializer.h index e017599..60f185e 100644 --- a/src/utils/SkBitmapSourceDeserializer.h +++ b/src/utils/SkBitmapSourceDeserializer.h @@ -14,7 +14,6 @@ // Should be removed when SKP versions which may contain SkBitmapSource records are phased out. class SkBitmapSourceDeserializer : public SkFlattenable { public: - SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter) SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource) }; diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp index e6430b4..c6f0433 100644 --- a/tests/ImageFilterTest.cpp +++ b/tests/ImageFilterTest.cpp @@ -1089,7 +1089,7 @@ DEF_TEST(ImageFilterCrossProcessPictureImageFilter, reporter) { // cross-process. Do this by "laundering" it through SkValidatingReadBuffer. SkAutoTUnref data(SkValidatingSerializeFlattenable(imageFilter.get())); SkAutoTUnref flattenable(SkValidatingDeserializeFlattenable( - data->data(), data->size(), SkImageFilter::GetFlattenableType())); + data->data(), data->size())); SkImageFilter* unflattenedFilter = static_cast(flattenable.get()); redPaintWithFilter.setImageFilter(unflattenedFilter); @@ -1536,7 +1536,7 @@ DEF_TEST(ImageFilterImageSourceSerialization, reporter) { sk_sp data(SkValidatingSerializeFlattenable(filter.get())); sk_sp flattenable(SkValidatingDeserializeFlattenable( - data->data(), data->size(), SkImageFilter::GetFlattenableType())); + data->data(), data->size())); SkImageFilter* unflattenedFilter = static_cast(flattenable.get()); REPORTER_ASSERT(reporter, unflattenedFilter); diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp index 15b7382..b590fb5 100644 --- a/tests/SerializationTest.cpp +++ b/tests/SerializationTest.cpp @@ -42,7 +42,7 @@ template struct SerializationUtils { writer.writeFlattenable(flattenable); } static void Read(SkValidatingReadBuffer& reader, T** flattenable) { - *flattenable = (T*)reader.readFlattenable(T::GetFlattenableType()); + *flattenable = (T*)reader.readFlattenable(); } }; diff --git a/tools/chrome_fuzz.cpp b/tools/chrome_fuzz.cpp index c59c741..22cf088 100644 --- a/tools/chrome_fuzz.cpp +++ b/tools/chrome_fuzz.cpp @@ -31,7 +31,7 @@ static void run_test_case(const SkString& testdata, const SkBitmap& bitmap, // This call shouldn't crash or cause ASAN to flag any memory issues // If nothing bad happens within this call, everything is fine SkFlattenable* flattenable = SkValidatingDeserializeFlattenable( - testdata.c_str(), testdata.size(), SkImageFilter::GetFlattenableType()); + testdata.c_str(), testdata.size()); // Adding some info, but the test passed if we got here without any trouble if (flattenable != nullptr) {