Skip to content

Commit

Permalink
Merge r228884 - [RenderTreeBuilder] Move RenderTextFragment::willBeRe…
Browse files Browse the repository at this point in the history
…moved() mutation logic to RenderTreeBuilder

https://bugs.webkit.org/show_bug.cgi?id=182946
<rdar://problem/37690039>

Reviewed by Antti Koivisto.

No change in functionality.

* rendering/RenderTextFragment.cpp:
(WebCore::RenderTextFragment::willBeDestroyed):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takeChild):
* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::RenderTreeBuilder::FirstLetter::cleanupOnRemoval):
* rendering/updating/RenderTreeBuilderFirstLetter.h:
  • Loading branch information
alanbaradlay authored and carlosgcampos committed Feb 26, 2018
1 parent 6c54488 commit 30d78bd
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 9 deletions.
18 changes: 18 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,21 @@
2018-02-21 Zalan Bujtas <zalan@apple.com>

[RenderTreeBuilder] Move RenderTextFragment::willBeRemoved() mutation logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182946
<rdar://problem/37690039>

Reviewed by Antti Koivisto.

No change in functionality.

* rendering/RenderTextFragment.cpp:
(WebCore::RenderTextFragment::willBeDestroyed):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takeChild):
* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::RenderTreeBuilder::FirstLetter::cleanupOnRemoval):
* rendering/updating/RenderTreeBuilderFirstLetter.h:

2018-02-21 Ms2ger <Ms2ger@igalia.com>

[GCrypt] Remove unsound assertion from CryptoKeyRSA::exportData().
Expand Down
12 changes: 4 additions & 8 deletions Source/WebCore/rendering/RenderTextFragment.cpp
Expand Up @@ -59,7 +59,10 @@ RenderTextFragment::RenderTextFragment(Document& textNode, const String& text)
{
}

RenderTextFragment::~RenderTextFragment() = default;
RenderTextFragment::~RenderTextFragment()
{
ASSERT(!m_firstLetter);
}

bool RenderTextFragment::canBeSelectionLeaf() const
{
Expand All @@ -74,13 +77,6 @@ void RenderTextFragment::styleDidChange(StyleDifference diff, const RenderStyle*
block->mutableStyle().removeCachedPseudoStyle(FIRST_LETTER);
}

void RenderTextFragment::willBeDestroyed(RenderTreeBuilder& builder)
{
if (m_firstLetter)
builder.removeAndDestroy(*m_firstLetter);
RenderText::willBeDestroyed(builder);
}

void RenderTextFragment::setText(const String& newText, bool force)
{
RenderText::setText(newText, force);
Expand Down
1 change: 0 additions & 1 deletion Source/WebCore/rendering/RenderTextFragment.h
Expand Up @@ -60,7 +60,6 @@ class RenderTextFragment final : public RenderText {
private:
bool isTextFragment() const override { return true; }
void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
void willBeDestroyed(RenderTreeBuilder&) override;

UChar previousCharacter() const override;

Expand Down
3 changes: 3 additions & 0 deletions Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
Expand Up @@ -154,6 +154,9 @@ void RenderTreeBuilder::removeAndDestroy(RenderObject& renderer)
fullScreenBuilder().cleanupOnDestroy(downcast<RenderFullScreen>(renderer));
#endif

if (is<RenderTextFragment>(renderer))
firstLetterBuilder().cleanupOnDestroy(downcast<RenderTextFragment>(renderer));

// We need to detach the subtree first so that the descendants don't have
// access to previous/next sublings at takeChild().
// FIXME: webkit.org/b/182909.
Expand Down
Expand Up @@ -151,6 +151,13 @@ void RenderTreeBuilder::FirstLetter::updateAfterDescendants(RenderBlock& block)
createRenderers(block, downcast<RenderText>(*firstLetterRenderer));
}

void RenderTreeBuilder::FirstLetter::cleanupOnDestroy(RenderTextFragment& textFragment)
{
if (!textFragment.firstLetter())
return;
m_builder.removeAndDestroy(*textFragment.firstLetter());
}

void RenderTreeBuilder::FirstLetter::updateStyle(RenderBlock& firstLetterBlock, RenderObject& currentChild)
{
RenderElement* firstLetter = currentChild.parent();
Expand Down
Expand Up @@ -36,6 +36,7 @@ class RenderTreeBuilder::FirstLetter {
FirstLetter(RenderTreeBuilder&);

void updateAfterDescendants(RenderBlock&);
void cleanupOnDestroy(RenderTextFragment&);

private:
void updateStyle(RenderBlock& firstLetterBlock, RenderObject& currentChild);
Expand Down

0 comments on commit 30d78bd

Please sign in to comment.