Cairo build needs to remove functions WebFrame::spoolPages; DrawTextAtPoint; and createDragImageForLink since these require functionality not currently implemented in the Cairo configuration.
Created attachment 20487 [details] fix for Cairo build this is needed for Cairo build to work
Comment on attachment 20487 [details] fix for Cairo build This patch seems to use tabs for indentation. Please only use 4 spaces for indentation. @@ -1665,6 +1666,7 @@ HRESULT STDMETHODCALLTYPE WebFrame::spoo /* [in] */ UINT endPage, /* [retval][out] */ void* ctx) { +#if !PLATFORM(CAIRO) if (!printDC || !ctx) { ASSERT_NOT_REACHED(); return E_POINTER; @@ -1748,8 +1750,11 @@ HRESULT STDMETHODCALLTYPE WebFrame::spoo CGContextEndPage(pctx); CGContextRestoreGState(pctx); } - return S_OK; +#else + notImplemented(); + return E_NOTIMPL; +#endif //!PLATFORM(CAIRO) } Can we move most of spoolPages down into WebCore? You should talk to Alp Toker, who I think was working on a cross-platform printing abstraction. void DrawTextAtPoint(CGContextRef cgContext, LPCTSTR text, int length, POINT point, const WebFontDescription& description, CGColorRef color, int underlinedIndex, bool drawAsPassword) { +#if !PLATFORM(CAIRO) GraphicsContext context(cgContext); String drawString(text, length); if (drawAsPassword) drawString = drawString.impl()->secure(WebCore::bullet); WebCoreDrawTextAtPoint(context, drawString, point, makeFont(description), color, underlinedIndex); +#else + notImplemented(); +#endif //!Platform(CAIRO) } Seems like this whole function will have to be compiled out for Cairo, since you won't have a CGContextRef type. I think we can/should rework WebDragClient to use the new ImageBuffer abstraction so that we can remove the CG-specific code from it.
builds fine now.
Equivalents of these patches are all in the tree now.