OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 { | 119 { |
120 return !checkInvalidControlsAndCollectUnhandled(0, CheckValidityDispatchNoEv
ent); | 120 return !checkInvalidControlsAndCollectUnhandled(0, CheckValidityDispatchNoEv
ent); |
121 } | 121 } |
122 | 122 |
123 bool HTMLFormElement::rendererIsNeeded(const LayoutStyle& style) | 123 bool HTMLFormElement::rendererIsNeeded(const LayoutStyle& style) |
124 { | 124 { |
125 if (!m_wasDemoted) | 125 if (!m_wasDemoted) |
126 return HTMLElement::rendererIsNeeded(style); | 126 return HTMLElement::rendererIsNeeded(style); |
127 | 127 |
128 ContainerNode* node = parentNode(); | 128 ContainerNode* node = parentNode(); |
129 if (!node || !node->renderer()) | 129 if (!node || !node->layoutObject()) |
130 return HTMLElement::rendererIsNeeded(style); | 130 return HTMLElement::rendererIsNeeded(style); |
131 LayoutObject* parentRenderer = node->renderer(); | 131 LayoutObject* parentRenderer = node->layoutObject(); |
132 // FIXME: Shouldn't we also check for table caption (see |formIsTablePart| b
elow). | 132 // FIXME: Shouldn't we also check for table caption (see |formIsTablePart| b
elow). |
133 // FIXME: This check is not correct for Shadow DOM. | 133 // FIXME: This check is not correct for Shadow DOM. |
134 bool parentIsTableElementPart = (parentRenderer->isTable() && isHTMLTableEle
ment(*node)) | 134 bool parentIsTableElementPart = (parentRenderer->isTable() && isHTMLTableEle
ment(*node)) |
135 || (parentRenderer->isTableRow() && isHTMLTableRowElement(*node)) | 135 || (parentRenderer->isTableRow() && isHTMLTableRowElement(*node)) |
136 || (parentRenderer->isTableSection() && node->hasTagName(tbodyTag)) | 136 || (parentRenderer->isTableSection() && node->hasTagName(tbodyTag)) |
137 || (parentRenderer->isLayoutTableCol() && node->hasTagName(colTag)) | 137 || (parentRenderer->isLayoutTableCol() && node->hasTagName(colTag)) |
138 || (parentRenderer->isTableCell() && isHTMLTableRowElement(*node)); | 138 || (parentRenderer->isTableCell() && isHTMLTableRowElement(*node)); |
139 | 139 |
140 if (!parentIsTableElementPart) | 140 if (!parentIsTableElementPart) |
141 return true; | 141 return true; |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 toHTMLFormControlElement(elements[i])->hideVisibleValidationMessage(
); | 280 toHTMLFormControlElement(elements[i])->hideVisibleValidationMessage(
); |
281 } | 281 } |
282 | 282 |
283 WillBeHeapVector<RefPtrWillBeMember<HTMLFormControlElement>> unhandledInvali
dControls; | 283 WillBeHeapVector<RefPtrWillBeMember<HTMLFormControlElement>> unhandledInvali
dControls; |
284 if (!checkInvalidControlsAndCollectUnhandled(&unhandledInvalidControls, Chec
kValidityDispatchInvalidEvent)) | 284 if (!checkInvalidControlsAndCollectUnhandled(&unhandledInvalidControls, Chec
kValidityDispatchInvalidEvent)) |
285 return true; | 285 return true; |
286 // Because the form has invalid controls, we abort the form submission and | 286 // Because the form has invalid controls, we abort the form submission and |
287 // show a validation message on a focusable form control. | 287 // show a validation message on a focusable form control. |
288 | 288 |
289 // Needs to update layout now because we'd like to call isFocusable(), which | 289 // Needs to update layout now because we'd like to call isFocusable(), which |
290 // has !renderer()->needsLayout() assertion. | 290 // has !layoutObject()->needsLayout() assertion. |
291 document().updateLayoutIgnorePendingStylesheets(); | 291 document().updateLayoutIgnorePendingStylesheets(); |
292 | 292 |
293 RefPtrWillBeRawPtr<HTMLFormElement> protector(this); | 293 RefPtrWillBeRawPtr<HTMLFormElement> protector(this); |
294 // Focus on the first focusable control and show a validation message. | 294 // Focus on the first focusable control and show a validation message. |
295 for (unsigned i = 0; i < unhandledInvalidControls.size(); ++i) { | 295 for (unsigned i = 0; i < unhandledInvalidControls.size(); ++i) { |
296 HTMLFormControlElement* unhandled = unhandledInvalidControls[i].get(); | 296 HTMLFormControlElement* unhandled = unhandledInvalidControls[i].get(); |
297 if (unhandled->isFocusable()) { | 297 if (unhandled->isFocusable()) { |
298 unhandled->showValidationMessage(); | 298 unhandled->showValidationMessage(); |
299 break; | 299 break; |
300 } | 300 } |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 } | 848 } |
849 | 849 |
850 void HTMLFormElement::setDemoted(bool demoted) | 850 void HTMLFormElement::setDemoted(bool demoted) |
851 { | 851 { |
852 if (demoted) | 852 if (demoted) |
853 UseCounter::count(document(), UseCounter::DemotedFormElement); | 853 UseCounter::count(document(), UseCounter::DemotedFormElement); |
854 m_wasDemoted = demoted; | 854 m_wasDemoted = demoted; |
855 } | 855 } |
856 | 856 |
857 } // namespace | 857 } // namespace |
OLD | NEW |