| 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()) {
|
| + 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() {
|
|
|