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

Unified Diff: third_party/WebKit/Source/core/html/HTMLOptionElement.cpp

Issue 2450093005: Support display: contents for elements, first-line and first-letter pseudos. (Closed)
Patch Set: Support display: contents for elements, first-line and first-letter pseudos. Created 3 years, 10 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: third_party/WebKit/Source/core/html/HTMLOptionElement.cpp
diff --git a/third_party/WebKit/Source/core/html/HTMLOptionElement.cpp b/third_party/WebKit/Source/core/html/HTMLOptionElement.cpp
index b0816b8f7424dee271ddc1c3f15beac0aa2ea9b6..7e624fe3a9e334f9275f2ab81170e22aff58a57f 100644
--- a/third_party/WebKit/Source/core/html/HTMLOptionElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLOptionElement.cpp
@@ -50,7 +50,6 @@ using namespace HTMLNames;
HTMLOptionElement::HTMLOptionElement(Document& document)
: HTMLElement(optionTag, document), m_isSelected(false) {
- setHasCustomStyleCallbacks();
}
// An explicit empty destructor should be in HTMLOptionElement.cpp, because
@@ -91,18 +90,17 @@ HTMLOptionElement* HTMLOptionElement::createForJSConstructor(
void HTMLOptionElement::attachLayoutTree(const AttachContext& context) {
AttachContext optionContext(context);
- if (context.resolvedStyle) {
- DCHECK(!m_style || m_style == context.resolvedStyle);
- m_style = context.resolvedStyle;
- } else if (parentComputedStyle()) {
- updateNonComputedStyle();
- optionContext.resolvedStyle = m_style.get();
+ RefPtr<ComputedStyle> resolvedStyle;
+ if (!context.resolvedStyle && parentComputedStyle()) {
esprehn 2017/03/08 03:42:38 This code doesn't look right, the call below to at
emilio 2017/03/08 08:32:40 Note that this chunk of the code is written to pre
+ if (HTMLSelectElement* select = ownerSelectElement())
+ select->updateListOnLayoutObject();
+ resolvedStyle = originalStyleForLayoutObject();
+ optionContext.resolvedStyle = resolvedStyle.get();
}
HTMLElement::attachLayoutTree(optionContext);
}
void HTMLOptionElement::detachLayoutTree(const AttachContext& context) {
- m_style.clear();
HTMLElement::detachLayoutTree(context);
}
@@ -331,21 +329,6 @@ void HTMLOptionElement::setLabel(const AtomicString& label) {
setAttribute(labelAttr, label);
}
-void HTMLOptionElement::updateNonComputedStyle() {
- m_style = originalStyleForLayoutObject();
- if (HTMLSelectElement* select = ownerSelectElement())
- select->updateListOnLayoutObject();
-}
-
-ComputedStyle* HTMLOptionElement::nonLayoutObjectComputedStyle() const {
- return m_style.get();
-}
-
-PassRefPtr<ComputedStyle> HTMLOptionElement::customStyleForLayoutObject() {
- updateNonComputedStyle();
- return m_style;
-}
-
String HTMLOptionElement::textIndentedToRespectGroupLabel() const {
ContainerNode* parent = parentNode();
if (parent && isHTMLOptGroupElement(*parent))
@@ -432,12 +415,13 @@ bool HTMLOptionElement::spatialNavigationFocused() const {
}
bool HTMLOptionElement::isDisplayNone() const {
- // If m_style is not set, then the node is still unattached.
+ // If the style is not set, then the node is still unattached.
// We have to wait till it gets attached to read the display property.
- if (!m_style)
+ const ComputedStyle* style = nonLayoutObjectComputedStyle();
+ if (!style)
return false;
- if (m_style->display() != EDisplay::None) {
+ if (style->display() != EDisplay::None) {
// We need to check the parent's display property. Parent's
// display:none doesn't override children's display properties in
// ComputedStyle.
@@ -450,7 +434,7 @@ bool HTMLOptionElement::isDisplayNone() const {
return !parentStyle || parentStyle->display() == EDisplay::None;
}
}
- return m_style->display() == EDisplay::None;
+ return style->display() == EDisplay::None;
}
String HTMLOptionElement::innerText() {

Powered by Google App Engine
This is Rietveld 408576698