Implement form validation message UI
[WebKit-https.git] / Source / WebCore / html / HTMLFormControlElement.cpp
index 714311e1b51041becf40014a4b8bf7bf94dc297d..b3ad7c843b63505968df6e3c4e03495851324ff8 100644 (file)
@@ -80,7 +80,7 @@ HTMLFormControlElement::~HTMLFormControlElement()
 
 void HTMLFormControlElement::detach()
 {
-    hideVisibleValidationMessage();
+    m_validationMessage = 0;
     HTMLElement::detach();
 }
 
@@ -310,18 +310,24 @@ void HTMLFormControlElement::updateVisibleValidationMessage()
             message.append(title);
         }
     }
+    if (message.isEmpty()) {
+        hideVisibleValidationMessage();
+        return;
+    }
     if (!m_validationMessage) {
         m_validationMessage = ValidationMessage::create(this);
         m_validationMessage->setMessage(message);
-    } else if (message.isEmpty())
-        hideVisibleValidationMessage();
-    else if (m_validationMessage->message() != message)
+    } else {
+        // Call setMessage() even if m_validationMesage->message() == message
+        // because the existing message might be to be hidden.
         m_validationMessage->setMessage(message);
+    }
 }
 
 void HTMLFormControlElement::hideVisibleValidationMessage()
 {
-    m_validationMessage = 0;
+    if (m_validationMessage)
+        m_validationMessage->requestToHideMessage();
 }
 
 String HTMLFormControlElement::visibleValidationMessage() const