Title: [209802] trunk/Source/WebCore
- Revision
- 209802
- Author
- [email protected]
- Date
- 2016-12-14 08:06:50 -0800 (Wed, 14 Dec 2016)
Log Message
Make Style::Update const in RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=165845
Reviewed by Andreas Kling.
Moving style away from unique_ptrs leaves them in weird state.
* style/RenderTreeUpdater.cpp:
(WebCore::findRenderingRoots):
(WebCore::RenderTreeUpdater::commit):
(WebCore::RenderTreeUpdater::updateElementRenderer):
Clone the style instead of moving it. This is not meaningfully more expensive.
Remove null checks, style is never null.
* style/RenderTreeUpdater.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (209801 => 209802)
--- trunk/Source/WebCore/ChangeLog 2016-12-14 16:04:30 UTC (rev 209801)
+++ trunk/Source/WebCore/ChangeLog 2016-12-14 16:06:50 UTC (rev 209802)
@@ -1,3 +1,22 @@
+2016-12-14 Antti Koivisto <[email protected]>
+
+ Make Style::Update const in RenderTreeUpdater
+ https://bugs.webkit.org/show_bug.cgi?id=165845
+
+ Reviewed by Andreas Kling.
+
+ Moving style away from unique_ptrs leaves them in weird state.
+
+ * style/RenderTreeUpdater.cpp:
+ (WebCore::findRenderingRoots):
+ (WebCore::RenderTreeUpdater::commit):
+ (WebCore::RenderTreeUpdater::updateElementRenderer):
+
+ Clone the style instead of moving it. This is not meaningfully more expensive.
+ Remove null checks, style is never null.
+
+ * style/RenderTreeUpdater.h:
+
2016-12-13 Yusuke Suzuki <[email protected]>
Use JSValue::toWTFString instead of calling toString(exec) and value(exec)
Modified: trunk/Source/WebCore/style/RenderTreeUpdater.cpp (209801 => 209802)
--- trunk/Source/WebCore/style/RenderTreeUpdater.cpp 2016-12-14 16:04:30 UTC (rev 209801)
+++ trunk/Source/WebCore/style/RenderTreeUpdater.cpp 2016-12-14 16:06:50 UTC (rev 209802)
@@ -93,7 +93,7 @@
return &node.document();
}
-static ListHashSet<ContainerNode*> findRenderingRoots(Style::Update& update)
+static ListHashSet<ContainerNode*> findRenderingRoots(const Style::Update& update)
{
ListHashSet<ContainerNode*> renderingRoots;
for (auto* root : update.roots()) {
@@ -105,7 +105,7 @@
return renderingRoots;
}
-void RenderTreeUpdater::commit(std::unique_ptr<Style::Update> styleUpdate)
+void RenderTreeUpdater::commit(std::unique_ptr<const Style::Update> styleUpdate)
{
ASSERT(&m_document == &styleUpdate->document());
@@ -247,7 +247,7 @@
return false;
}
-void RenderTreeUpdater::updateElementRenderer(Element& element, Style::ElementUpdate& update)
+void RenderTreeUpdater::updateElementRenderer(Element& element, const Style::ElementUpdate& update)
{
#if PLATFORM(IOS)
CheckForVisibilityChange checkForVisibilityChange(element);
@@ -257,7 +257,7 @@
if (shouldTearDownRenderers)
tearDownRenderers(element, TeardownType::KeepHoverAndActive);
- bool hasDisplayContents = update.style && update.style->display() == CONTENTS;
+ bool hasDisplayContents = update.style->display() == CONTENTS;
if (hasDisplayContents != element.hasDisplayContents()) {
element.setHasDisplayContents(hasDisplayContents);
// Render tree position needs to be recomputed as rendering siblings may be found from the display:contents subtree.
@@ -264,11 +264,11 @@
renderTreePosition().invalidateNextSibling();
}
- bool shouldCreateNewRenderer = !element.renderer() && update.style && !hasDisplayContents;
+ bool shouldCreateNewRenderer = !element.renderer() && !hasDisplayContents;
if (shouldCreateNewRenderer) {
if (element.hasCustomStyleResolveCallbacks())
element.willAttachRenderers();
- createRenderer(element, WTFMove(*update.style));
+ createRenderer(element, RenderStyle::clone(*update.style));
invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded(element);
return;
}
@@ -278,19 +278,19 @@
auto& renderer = *element.renderer();
if (update.recompositeLayer) {
- renderer.setStyle(WTFMove(*update.style), StyleDifferenceRecompositeLayer);
+ renderer.setStyle(RenderStyle::clone(*update.style), StyleDifferenceRecompositeLayer);
return;
}
if (update.change == Style::NoChange) {
if (pseudoStyleCacheIsInvalid(&renderer, update.style.get()) || (parent().styleChange == Style::Force && renderer.requiresForcedStyleRecalcPropagation())) {
- renderer.setStyle(WTFMove(*update.style), StyleDifferenceEqual);
+ renderer.setStyle(RenderStyle::clone(*update.style), StyleDifferenceEqual);
return;
}
return;
}
- renderer.setStyle(WTFMove(*update.style), StyleDifferenceEqual);
+ renderer.setStyle(RenderStyle::clone(*update.style), StyleDifferenceEqual);
}
#if ENABLE(CSS_REGIONS)
Modified: trunk/Source/WebCore/style/RenderTreeUpdater.h (209801 => 209802)
--- trunk/Source/WebCore/style/RenderTreeUpdater.h 2016-12-14 16:04:30 UTC (rev 209801)
+++ trunk/Source/WebCore/style/RenderTreeUpdater.h 2016-12-14 16:06:50 UTC (rev 209802)
@@ -46,7 +46,7 @@
public:
RenderTreeUpdater(Document&);
- void commit(std::unique_ptr<Style::Update>);
+ void commit(std::unique_ptr<const Style::Update>);
enum class TeardownType { Normal, KeepHoverAndActive };
static void tearDownRenderers(Element&, TeardownType = TeardownType::Normal);
@@ -55,7 +55,7 @@
private:
void updateRenderTree(ContainerNode& root);
void updateTextRenderer(Text&);
- void updateElementRenderer(Element&, Style::ElementUpdate&);
+ void updateElementRenderer(Element&, const Style::ElementUpdate&);
void createRenderer(Element&, RenderStyle&&);
void invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded(Node&);
void updateBeforeOrAfterPseudoElement(Element&, PseudoId);
@@ -76,7 +76,7 @@
void popParentsToDepth(unsigned depth);
Document& m_document;
- std::unique_ptr<Style::Update> m_styleUpdate;
+ std::unique_ptr<const Style::Update> m_styleUpdate;
Vector<Parent> m_parentStack;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes