Index: Source/core/html/HTMLTextAreaElement.cpp |
diff --git a/Source/core/html/HTMLTextAreaElement.cpp b/Source/core/html/HTMLTextAreaElement.cpp |
index ebf14f419e61ea7aa3d6ce74c56a2fef08f450cc..ad58a58cd51c7a586e9e05bf6ad3bff047c47055 100644 |
--- a/Source/core/html/HTMLTextAreaElement.cpp |
+++ b/Source/core/html/HTMLTextAreaElement.cpp |
@@ -84,6 +84,7 @@ HTMLTextAreaElement::HTMLTextAreaElement(Document& document, HTMLFormElement* fo |
, m_wrap(SoftWrap) |
, m_isDirty(false) |
, m_valueIsUpToDate(true) |
+ , m_isPlaceholderVisible(false) |
{ |
} |
@@ -274,7 +275,7 @@ void HTMLTextAreaElement::subtreeHasChanged() |
m_valueIsUpToDate = false; |
setNeedsValidityCheck(); |
setAutofilled(false); |
- updatePlaceholderVisibility(false); |
+ updatePlaceholderVisibility(); |
if (!focused()) |
return; |
@@ -332,7 +333,7 @@ void HTMLTextAreaElement::updateValue() const |
const_cast<HTMLTextAreaElement*>(this)->m_valueIsUpToDate = true; |
const_cast<HTMLTextAreaElement*>(this)->notifyFormStateChanged(); |
m_isDirty = true; |
- const_cast<HTMLTextAreaElement*>(this)->updatePlaceholderVisibility(false); |
+ const_cast<HTMLTextAreaElement*>(this)->updatePlaceholderVisibility(); |
} |
String HTMLTextAreaElement::value() const |
@@ -384,7 +385,7 @@ void HTMLTextAreaElement::setValueCommon(const String& newValue, TextFieldEventB |
setInnerEditorValue(m_value); |
if (eventBehavior == DispatchNoEvent) |
setLastChangeWasNotUserEdit(); |
- updatePlaceholderVisibility(false); |
+ updatePlaceholderVisibility(); |
setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::ControlValue)); |
m_suggestedValue = String(); |
setNeedsValidityCheck(); |
@@ -499,7 +500,7 @@ void HTMLTextAreaElement::setSuggestedValue(const String& value) |
setInnerEditorValue(m_suggestedValue); |
else |
setInnerEditorValue(m_value); |
- updatePlaceholderVisibility(false); |
+ updatePlaceholderVisibility(); |
setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::ControlValue)); |
} |
@@ -604,6 +605,11 @@ bool HTMLTextAreaElement::matchesReadWritePseudoClass() const |
return !isReadOnly(); |
} |
+void HTMLTextAreaElement::setPlaceholderVisibility(bool visible) |
+{ |
+ m_isPlaceholderVisible = visible; |
+} |
+ |
void HTMLTextAreaElement::updatePlaceholderText() |
{ |
HTMLElement* placeholder = placeholderElement(); |
@@ -618,6 +624,7 @@ void HTMLTextAreaElement::updatePlaceholderText() |
placeholder = newElement.get(); |
placeholder->setShadowPseudoId(AtomicString("-webkit-input-placeholder", AtomicString::ConstructFromLiteral)); |
placeholder->setAttribute(idAttr, ShadowElementNames::placeholder()); |
+ placeholder->setInlineStyleProperty(CSSPropertyDisplay, isPlaceholderVisible() ? CSSValueBlock : CSSValueNone, true); |
userAgentShadowRoot()->insertBefore(placeholder, innerEditorElement()->nextSibling()); |
} |
placeholder->setTextContent(placeholderText); |