Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(710)

Unified Diff: sky/engine/core/dom/Element.cpp

Issue 1027563002: Integrate custom paint with the DocumentLifecycle (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/engine/core/dom/Element.cpp
diff --git a/sky/engine/core/dom/Element.cpp b/sky/engine/core/dom/Element.cpp
index 7f5c889f401940e91fb6dec051288f8ac6291011..20666a14ae90a52322bf29b283cc87931fe3bdca 100644
--- a/sky/engine/core/dom/Element.cpp
+++ b/sky/engine/core/dom/Element.cpp
@@ -26,7 +26,6 @@
#include "sky/engine/config.h"
#include "sky/engine/core/dom/Element.h"
-#include "base/bind.h"
#include "gen/sky/core/CSSValueKeywords.h"
#include "gen/sky/core/HTMLNames.h"
#include "gen/sky/platform/RuntimeEnabledFeatures.h"
@@ -77,8 +76,8 @@
#include "sky/engine/core/page/ChromeClient.h"
#include "sky/engine/core/page/FocusController.h"
#include "sky/engine/core/page/Page.h"
-#include "sky/engine/core/painting/PaintingContext.h"
#include "sky/engine/core/painting/PaintingCallback.h"
+#include "sky/engine/core/painting/PaintingTasks.h"
#include "sky/engine/core/rendering/RenderLayer.h"
#include "sky/engine/core/rendering/RenderView.h"
#include "sky/engine/platform/EventDispatchForbiddenScope.h"
@@ -417,36 +416,10 @@ PassRefPtr<ClientRect> Element::getBoundingClientRect()
return ClientRect::create(result);
}
-// TODO(abarth): We should schedule this work at a more reasonable time.
-static void handlePaintingCommit(RefPtr<Element> element, RefPtr<PaintingContext> context)
-{
- if (!element->document().isActive())
- return;
- element->document().updateLayout();
- RenderObject* renderer = element->renderer();
- if (!renderer || !renderer->isBox())
- return;
- toRenderBox(renderer)->setCustomPainting(context->takeDisplayList());
- element->document().scheduleVisualUpdate();
-}
-
-// TODO(abarth): We should schedule this work at a more reasonable time.
-static void runPaintingCallback(RefPtr<Element> element, PassOwnPtr<PaintingCallback> callback)
-{
- if (!element->document().isActive())
- return;
- element->document().updateLayout();
- RenderObject* renderer = element->renderer();
- if (!renderer || !renderer->isBox())
- return;
- RefPtr<PaintingContext> context = PaintingContext::create(
- toRenderBox(renderer)->size(), base::Bind(&handlePaintingCommit, element));
- callback->handleEvent(context.get());
-}
-
void Element::requestPaint(PassOwnPtr<PaintingCallback> callback)
{
- Microtask::enqueueMicrotask(base::Bind(&runPaintingCallback, this, callback));
+ PaintingTasks::enqueueRequest(this, callback);
+ document().scheduleVisualUpdate();
}
void Element::setAttribute(const AtomicString& localName, const AtomicString& value, ExceptionState& exceptionState)

Powered by Google App Engine
This is Rietveld 408576698