- Revision
- 284604
- Author
- [email protected]
- Date
- 2021-10-21 07:29:14 -0700 (Thu, 21 Oct 2021)
Log Message
Move Style::Resolver::State out of header
https://bugs.webkit.org/show_bug.cgi?id=232074
Reviewed by Antoine Quint.
It is an implementation detail.
* style/PageRuleCollector.cpp:
(WebCore::Style::PageRuleCollector::isLeftPage const):
* style/PageRuleCollector.h:
(WebCore::Style::PageRuleCollector::PageRuleCollector):
Provide just the root text direction instead of the State.
* style/StyleResolver.cpp:
(WebCore::Style::Resolver::State::State):
(WebCore::Style::Resolver::State::element const):
(WebCore::Style::Resolver::State::setStyle):
(WebCore::Style::Resolver::State::style const):
(WebCore::Style::Resolver::State::takeStyle):
(WebCore::Style::Resolver::State::setParentStyle):
(WebCore::Style::Resolver::State::parentStyle const):
(WebCore::Style::Resolver::State::rootElementStyle const):
(WebCore::Style::Resolver::State::userAgentAppearanceStyle const):
(WebCore::Style::Resolver::State::setUserAgentAppearanceStyle):
(WebCore::Style::Resolver::styleForPage):
* style/StyleResolver.h:
(WebCore::Style::Resolver::State::State): Deleted.
(WebCore::Style::Resolver::State::element const): Deleted.
(WebCore::Style::Resolver::State::style const): Deleted.
(WebCore::Style::Resolver::State::takeStyle): Deleted.
(WebCore::Style::Resolver::State::parentStyle const): Deleted.
(WebCore::Style::Resolver::State::rootElementStyle const): Deleted.
(WebCore::Style::Resolver::State::userAgentAppearanceStyle const): Deleted.
(WebCore::Style::Resolver::State::setUserAgentAppearanceStyle): Deleted.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (284603 => 284604)
--- trunk/Source/WebCore/ChangeLog 2021-10-21 14:09:08 UTC (rev 284603)
+++ trunk/Source/WebCore/ChangeLog 2021-10-21 14:29:14 UTC (rev 284604)
@@ -1,3 +1,41 @@
+2021-10-21 Antti Koivisto <[email protected]>
+
+ Move Style::Resolver::State out of header
+ https://bugs.webkit.org/show_bug.cgi?id=232074
+
+ Reviewed by Antoine Quint.
+
+ It is an implementation detail.
+
+ * style/PageRuleCollector.cpp:
+ (WebCore::Style::PageRuleCollector::isLeftPage const):
+ * style/PageRuleCollector.h:
+ (WebCore::Style::PageRuleCollector::PageRuleCollector):
+
+ Provide just the root text direction instead of the State.
+
+ * style/StyleResolver.cpp:
+ (WebCore::Style::Resolver::State::State):
+ (WebCore::Style::Resolver::State::element const):
+ (WebCore::Style::Resolver::State::setStyle):
+ (WebCore::Style::Resolver::State::style const):
+ (WebCore::Style::Resolver::State::takeStyle):
+ (WebCore::Style::Resolver::State::setParentStyle):
+ (WebCore::Style::Resolver::State::parentStyle const):
+ (WebCore::Style::Resolver::State::rootElementStyle const):
+ (WebCore::Style::Resolver::State::userAgentAppearanceStyle const):
+ (WebCore::Style::Resolver::State::setUserAgentAppearanceStyle):
+ (WebCore::Style::Resolver::styleForPage):
+ * style/StyleResolver.h:
+ (WebCore::Style::Resolver::State::State): Deleted.
+ (WebCore::Style::Resolver::State::element const): Deleted.
+ (WebCore::Style::Resolver::State::style const): Deleted.
+ (WebCore::Style::Resolver::State::takeStyle): Deleted.
+ (WebCore::Style::Resolver::State::parentStyle const): Deleted.
+ (WebCore::Style::Resolver::State::rootElementStyle const): Deleted.
+ (WebCore::Style::Resolver::State::userAgentAppearanceStyle const): Deleted.
+ (WebCore::Style::Resolver::State::setUserAgentAppearanceStyle): Deleted.
+
2021-10-21 Antoine Quint <[email protected]>
CSSPropertyZoom needs wrapper that ensures it's always blended into a positive value.
Modified: trunk/Source/WebCore/style/PageRuleCollector.cpp (284603 => 284604)
--- trunk/Source/WebCore/style/PageRuleCollector.cpp 2021-10-21 14:09:08 UTC (rev 284603)
+++ trunk/Source/WebCore/style/PageRuleCollector.cpp 2021-10-21 14:29:14 UTC (rev 284604)
@@ -43,10 +43,7 @@
bool PageRuleCollector::isLeftPage(int pageIndex) const
{
- bool isFirstPageLeft = false;
- if (!m_state.rootElementStyle()->isLeftToRightDirection())
- isFirstPageLeft = true;
-
+ bool isFirstPageLeft = m_rootDirection == TextDirection::RTL;
return (pageIndex + (isFirstPageLeft ? 1 : 0)) % 2;
}
Modified: trunk/Source/WebCore/style/PageRuleCollector.h (284603 => 284604)
--- trunk/Source/WebCore/style/PageRuleCollector.h 2021-10-21 14:09:08 UTC (rev 284603)
+++ trunk/Source/WebCore/style/PageRuleCollector.h 2021-10-21 14:29:14 UTC (rev 284604)
@@ -21,7 +21,6 @@
#pragma once
-#include "StyleResolver.h"
#include "StyleScopeRuleSets.h"
#include <wtf/Forward.h>
@@ -33,9 +32,10 @@
class PageRuleCollector {
public:
- PageRuleCollector(Resolver::State& state, ScopeRuleSets& ruleSets)
- : m_state(state)
- , m_ruleSets(ruleSets) { }
+ PageRuleCollector(ScopeRuleSets& ruleSets, TextDirection rootDirection)
+ : m_ruleSets(ruleSets)
+ , m_rootDirection(rootDirection)
+ { }
void matchAllPageRules(int pageIndex);
const MatchResult& matchResult() const { return m_result; }
@@ -49,8 +49,8 @@
void matchPageRules(RuleSet* rules, bool isLeftPage, bool isFirstPage, const String& pageName);
void matchPageRulesForList(Vector<StyleRulePage*>& matchedRules, const Vector<StyleRulePage*>& rules, bool isLeftPage, bool isFirstPage, const String& pageName);
- const Resolver::State& m_state;
ScopeRuleSets& m_ruleSets;
+ TextDirection m_rootDirection;
MatchResult m_result;
};
Modified: trunk/Source/WebCore/style/StyleResolver.cpp (284603 => 284604)
--- trunk/Source/WebCore/style/StyleResolver.cpp 2021-10-21 14:09:08 UTC (rev 284603)
+++ trunk/Source/WebCore/style/StyleResolver.cpp 2021-10-21 14:29:14 UTC (rev 284604)
@@ -88,6 +88,52 @@
WTF_MAKE_ISO_ALLOCATED_IMPL(Resolver);
+class Resolver::State {
+public:
+ State() { }
+ State(const Element& element, const RenderStyle* parentStyle, const RenderStyle* documentElementStyle = nullptr)
+ : m_element(&element)
+ , m_parentStyle(parentStyle)
+ {
+ bool resetStyleInheritance = hasShadowRootParent(element) && downcast<ShadowRoot>(element.parentNode())->resetStyleInheritance();
+ if (resetStyleInheritance)
+ m_parentStyle = nullptr;
+
+ auto& document = element.document();
+ auto* documentElement = document.documentElement();
+ if (!documentElement || documentElement == &element)
+ m_rootElementStyle = document.renderStyle();
+ else
+ m_rootElementStyle = documentElementStyle ? documentElementStyle : documentElement->renderStyle();
+ }
+
+ const Element* element() const { return m_element; }
+
+ void setStyle(std::unique_ptr<RenderStyle> style) { m_style = WTFMove(style); }
+ RenderStyle* style() const { return m_style.get(); }
+ std::unique_ptr<RenderStyle> takeStyle() { return WTFMove(m_style); }
+
+ void setParentStyle(std::unique_ptr<RenderStyle> parentStyle)
+ {
+ m_ownedParentStyle = WTFMove(parentStyle);
+ m_parentStyle = m_ownedParentStyle.get();
+ }
+ const RenderStyle* parentStyle() const { return m_parentStyle; }
+ const RenderStyle* rootElementStyle() const { return m_rootElementStyle; }
+
+ const RenderStyle* userAgentAppearanceStyle() const { return m_userAgentAppearanceStyle.get(); }
+ void setUserAgentAppearanceStyle(std::unique_ptr<RenderStyle> style) { m_userAgentAppearanceStyle = WTFMove(style); }
+
+private:
+ const Element* m_element { nullptr };
+ std::unique_ptr<RenderStyle> m_style;
+ const RenderStyle* m_parentStyle { nullptr };
+ std::unique_ptr<const RenderStyle> m_ownedParentStyle;
+ const RenderStyle* m_rootElementStyle { nullptr };
+
+ std::unique_ptr<RenderStyle> m_userAgentAppearanceStyle;
+};
+
Ref<Resolver> Resolver::create(Document& document)
{
return adoptRef(*new Resolver(document));
@@ -159,33 +205,6 @@
m_isDeleted = true;
}
-Resolver::State::State(const Element& element, const RenderStyle* parentStyle, const RenderStyle* documentElementStyle)
- : m_element(&element)
- , m_parentStyle(parentStyle)
-{
- bool resetStyleInheritance = hasShadowRootParent(element) && downcast<ShadowRoot>(element.parentNode())->resetStyleInheritance();
- if (resetStyleInheritance)
- m_parentStyle = nullptr;
-
- auto& document = element.document();
- auto* documentElement = document.documentElement();
- if (!documentElement || documentElement == &element)
- m_rootElementStyle = document.renderStyle();
- else
- m_rootElementStyle = documentElementStyle ? documentElementStyle : documentElement->renderStyle();
-}
-
-inline void Resolver::State::setStyle(std::unique_ptr<RenderStyle> style)
-{
- m_style = WTFMove(style);
-}
-
-inline void Resolver::State::setParentStyle(std::unique_ptr<RenderStyle> parentStyle)
-{
- m_ownedParentStyle = WTFMove(parentStyle);
- m_parentStyle = m_ownedParentStyle.get();
-}
-
static inline bool isAtShadowBoundary(const Element& element)
{
return is<ShadowRoot>(element.parentNode());
@@ -420,7 +439,7 @@
state.setStyle(RenderStyle::createPtr());
state.style()->inheritFrom(*state.rootElementStyle());
- PageRuleCollector collector(state, m_ruleSets);
+ PageRuleCollector collector(m_ruleSets, state.rootElementStyle()->direction());
collector.matchAllPageRules(pageIndex);
auto& result = collector.matchResult();
Modified: trunk/Source/WebCore/style/StyleResolver.h (284603 => 284604)
--- trunk/Source/WebCore/style/StyleResolver.h 2021-10-21 14:09:08 UTC (rev 284603)
+++ trunk/Source/WebCore/style/StyleResolver.h 2021-10-21 14:29:14 UTC (rev 284604)
@@ -145,39 +145,10 @@
void setSharedBetweenShadowTrees() { m_isSharedBetweenShadowTrees = true; }
private:
- friend class PageRuleCollector;
-
Resolver(Document&);
- class State {
- public:
- State() { }
- State(const Element&, const RenderStyle* parentStyle, const RenderStyle* documentElementStyle = nullptr);
+ class State;
- public:
- const Element* element() const { return m_element; }
-
- void setStyle(std::unique_ptr<RenderStyle>);
- RenderStyle* style() const { return m_style.get(); }
- std::unique_ptr<RenderStyle> takeStyle() { return WTFMove(m_style); }
-
- void setParentStyle(std::unique_ptr<RenderStyle>);
- const RenderStyle* parentStyle() const { return m_parentStyle; }
- const RenderStyle* rootElementStyle() const { return m_rootElementStyle; }
-
- const RenderStyle* userAgentAppearanceStyle() const { return m_userAgentAppearanceStyle.get(); }
- void setUserAgentAppearanceStyle(std::unique_ptr<RenderStyle> style) { m_userAgentAppearanceStyle = WTFMove(style); }
-
- private:
- const Element* m_element { nullptr };
- std::unique_ptr<RenderStyle> m_style;
- const RenderStyle* m_parentStyle { nullptr };
- std::unique_ptr<const RenderStyle> m_ownedParentStyle;
- const RenderStyle* m_rootElementStyle { nullptr };
-
- std::unique_ptr<RenderStyle> m_userAgentAppearanceStyle;
- };
-
BuilderContext builderContext(const State&);
enum class UseMatchedDeclarationsCache { Yes, No };