[webkit-dev] Layering violations

Nikolas Zimmermann zimmermann at physik.rwth-aachen.de
Thu Oct 7 00:50:58 PDT 2010


Good morning webkit folks,

many of the filter classes in platform/graphics/filters use  
ImageBuffers getUnmultipliedImageData function, which returns a  
PassRefPtr<ImageData>.
The ImageData class lives in html/. The only way to access the data  
contained in the ImageData class is to grab a CanvasPixelArray (which  
lives in html/canvas) using the data() method.

What's the proper way to fix this layering violation? Moving both  
ImageData* and CanvasPixelArray* to platform/graphics?
One has to keep in mind that we're generating wrappers for both  
ImageData & CanvasPixelArray, both have associated IDL files.

As side note: ImageData is refcounted, the CanvasPixelArray is  
refcounted, and the data contained in the CanvasPixelArray is  
refcounted (WTF::ByteArray).
For ImageBuffer it makes no sense to encapsulate the WTF::ByteArray in  
CanvasPixelArray, we could directly store it in the ImageData class,  
it's just one more refcounted object, which is useless for the purpose  
of the get..ImageData function.

I'm looking for the right way to fix this long standing layering  
violation. Feedback appreciated!

Cheers,
Niko


More information about the webkit-dev mailing list