| Index: sky/engine/core/dom/Element.cpp | 
| diff --git a/sky/engine/core/dom/Element.cpp b/sky/engine/core/dom/Element.cpp | 
| index c6452401ce22d976196de8cb296406c52febfc17..61ac9eaa38ed11b280c34b84bfc7327bbe0c1dc8 100644 | 
| --- a/sky/engine/core/dom/Element.cpp | 
| +++ b/sky/engine/core/dom/Element.cpp | 
| @@ -78,6 +78,7 @@ | 
| #include "sky/engine/core/page/Page.h" | 
| #include "sky/engine/core/painting/PaintingCallback.h" | 
| #include "sky/engine/core/painting/PaintingTasks.h" | 
| +#include "sky/engine/core/painting/PictureRecorder.h" | 
| #include "sky/engine/core/rendering/RenderCustomLayout.h" | 
| #include "sky/engine/core/rendering/RenderLayer.h" | 
| #include "sky/engine/core/rendering/RenderView.h" | 
| @@ -1685,4 +1686,18 @@ bool Element::affectedByIdSelector(const AtomicString& idValue) const | 
| return false; | 
| } | 
|  | 
| +void Element::paint(PictureRecorder* recorder) | 
| +{ | 
| +    if (!renderer() || !renderer()->isBox()) | 
| +        return; | 
| +    RenderBox* box = toRenderBox(renderer()); | 
| +    GraphicsContext context(recorder->skCanvas()); | 
| + | 
| +    // Very simplified painting to allow painting an arbitrary (layer-less) subtree. | 
| +    Vector<RenderBox*> layers; | 
| +    PaintInfo paintInfo(&context, box->absoluteBoundingBoxRect(), box); | 
| +    box->paint(paintInfo, LayoutPoint(), layers); | 
| +    // Note we're ignoring any layers encountered. | 
| +} | 
| + | 
| } // namespace blink | 
|  |