зеркало из https://github.com/mozilla/pjs.git
Bug 595922 - tooltips should not show form validation message if the form element has @novalidate. r+a=sicking
--HG-- extra : rebase_source : 88cb0d8842bfbbf0e85617b9e2eabf0a2128ab98
This commit is contained in:
Родитель
b068a8a558
Коммит
60bdee77ac
|
@ -2816,7 +2816,8 @@ function FillInHTMLTooltip(tipElement)
|
|||
tipElement instanceof HTMLTextAreaElement ||
|
||||
tipElement instanceof HTMLSelectElement ||
|
||||
tipElement instanceof HTMLButtonElement) &&
|
||||
!tipElement.hasAttribute('title')) {
|
||||
!tipElement.hasAttribute('title') &&
|
||||
(!tipElement.form || !tipElement.form.noValidate)) {
|
||||
// If the element is barred from constraint validation or valid,
|
||||
// the validation message will be the empty string.
|
||||
titleText = tipElement.validationMessage;
|
||||
|
|
|
@ -26,6 +26,12 @@ function check(aElementName, aBarred, aType) {
|
|||
ok (!FillInHTMLTooltip(e),
|
||||
"No tooltip should be shown if the title attribute is set");
|
||||
|
||||
e.removeAttribute('title');
|
||||
content.setAttribute('novalidate', '');
|
||||
ok (!FillInHTMLTooltip(e),
|
||||
"No tooltip should be shown if the novalidate attribute is set on the form owner");
|
||||
content.removeAttribute('novalidate');
|
||||
|
||||
content.removeChild(e);
|
||||
}
|
||||
|
||||
|
@ -84,6 +90,6 @@ function test () {
|
|||
}, true);
|
||||
|
||||
content.location =
|
||||
"data:text/html,<!DOCTYPE html><html><body><div id='content'></div></body></html>";
|
||||
"data:text/html,<!DOCTYPE html><html><body><form id='content'></form></body></html>";
|
||||
}
|
||||
|
||||
|
|
|
@ -1111,7 +1111,17 @@ DefaultTooltipTextProvider::GetNodeText(nsIDOMNode *aNode, PRUnichar **aText,
|
|||
if (cvElement) {
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(cvElement);
|
||||
nsCOMPtr<nsIAtom> titleAtom = do_GetAtom("title");
|
||||
if (content->HasAttr(kNameSpaceID_None, titleAtom)) {
|
||||
|
||||
nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(content);
|
||||
PRBool formHasNoValidate = PR_FALSE;
|
||||
mozilla::dom::Element* form = formControl->GetFormElement();
|
||||
if (form) {
|
||||
nsCOMPtr<nsIAtom> noValidateAtom = do_GetAtom("novalidate");
|
||||
formHasNoValidate = form->HasAttr(kNameSpaceID_None, noValidateAtom);
|
||||
}
|
||||
|
||||
if (!content->HasAttr(kNameSpaceID_None, titleAtom) &&
|
||||
!formHasNoValidate) {
|
||||
cvElement->GetValidationMessage(outText);
|
||||
found = !outText.IsEmpty();
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче