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 14 matching lines...) Loading... |
25 #include "config.h" | 25 #include "config.h" |
26 #include "core/html/HTMLFormElement.h" | 26 #include "core/html/HTMLFormElement.h" |
27 | 27 |
28 #include <limits> | 28 #include <limits> |
29 #include "HTMLNames.h" | 29 #include "HTMLNames.h" |
30 #include "bindings/v8/ScriptController.h" | 30 #include "bindings/v8/ScriptController.h" |
31 #include "bindings/v8/ScriptEventListener.h" | 31 #include "bindings/v8/ScriptEventListener.h" |
32 #include "core/dom/Attribute.h" | 32 #include "core/dom/Attribute.h" |
33 #include "core/dom/Document.h" | 33 #include "core/dom/Document.h" |
34 #include "core/dom/ElementTraversal.h" | 34 #include "core/dom/ElementTraversal.h" |
35 #include "core/dom/NamedNodesCollection.h" | |
36 #include "core/events/AutocompleteErrorEvent.h" | 35 #include "core/events/AutocompleteErrorEvent.h" |
37 #include "core/events/Event.h" | 36 #include "core/events/Event.h" |
38 #include "core/events/ScopedEventQueue.h" | 37 #include "core/events/ScopedEventQueue.h" |
39 #include "core/events/ThreadLocalEventNames.h" | 38 #include "core/events/ThreadLocalEventNames.h" |
40 #include "core/html/HTMLCollection.h" | 39 #include "core/html/HTMLCollection.h" |
41 #include "core/html/HTMLDialogElement.h" | 40 #include "core/html/HTMLDialogElement.h" |
42 #include "core/html/HTMLImageElement.h" | 41 #include "core/html/HTMLImageElement.h" |
43 #include "core/html/HTMLInputElement.h" | 42 #include "core/html/HTMLInputElement.h" |
44 #include "core/html/HTMLObjectElement.h" | 43 #include "core/html/HTMLObjectElement.h" |
45 #include "core/html/HTMLTableElement.h" | 44 #include "core/html/HTMLTableElement.h" |
| 45 #include "core/html/RadioNodeList.h" |
46 #include "core/html/forms/FormController.h" | 46 #include "core/html/forms/FormController.h" |
47 #include "core/loader/FrameLoader.h" | 47 #include "core/loader/FrameLoader.h" |
48 #include "core/loader/FrameLoaderClient.h" | 48 #include "core/loader/FrameLoaderClient.h" |
49 #include "core/frame/ContentSecurityPolicy.h" | 49 #include "core/frame/ContentSecurityPolicy.h" |
50 #include "core/frame/DOMWindow.h" | 50 #include "core/frame/DOMWindow.h" |
51 #include "core/frame/Frame.h" | 51 #include "core/frame/Frame.h" |
52 #include "core/frame/UseCounter.h" | 52 #include "core/frame/UseCounter.h" |
53 #include "core/rendering/RenderTextControl.h" | 53 #include "core/rendering/RenderTextControl.h" |
54 #include "platform/UserGestureIndicator.h" | 54 #include "platform/UserGestureIndicator.h" |
55 | 55 |
(...skipping 728 matching lines...) Loading... |
784 HTMLElement::finishParsingChildren(); | 784 HTMLElement::finishParsingChildren(); |
785 document().formController()->restoreControlStateIn(*this); | 785 document().formController()->restoreControlStateIn(*this); |
786 } | 786 } |
787 | 787 |
788 void HTMLFormElement::copyNonAttributePropertiesFromElement(const Element& sourc
e) | 788 void HTMLFormElement::copyNonAttributePropertiesFromElement(const Element& sourc
e) |
789 { | 789 { |
790 m_wasDemoted = static_cast<const HTMLFormElement&>(source).m_wasDemoted; | 790 m_wasDemoted = static_cast<const HTMLFormElement&>(source).m_wasDemoted; |
791 HTMLElement::copyNonAttributePropertiesFromElement(source); | 791 HTMLElement::copyNonAttributePropertiesFromElement(source); |
792 } | 792 } |
793 | 793 |
794 void HTMLFormElement::anonymousNamedGetter(const AtomicString& name, bool& retur
nValue0Enabled, RefPtr<NodeList>& returnValue0, bool& returnValue1Enabled, RefPt
r<Node>& returnValue1) | 794 void HTMLFormElement::anonymousNamedGetter(const AtomicString& name, bool& retur
nValue0Enabled, RefPtr<RadioNodeList>& returnValue0, bool& returnValue1Enabled,
RefPtr<Node>& returnValue1) |
795 { | 795 { |
796 // Call getNamedElements twice, first time check if it has a value | 796 // Call getNamedElements twice, first time check if it has a value |
797 // and let HTMLFormElement update its cache. | 797 // and let HTMLFormElement update its cache. |
798 // See issue: 867404 | 798 // See issue: 867404 |
799 { | 799 { |
800 Vector<RefPtr<Node> > elements; | 800 Vector<RefPtr<Node> > elements; |
801 getNamedElements(name, elements); | 801 getNamedElements(name, elements); |
802 if (elements.isEmpty()) | 802 if (elements.isEmpty()) |
803 return; | 803 return; |
804 } | 804 } |
805 | 805 |
806 // Second call may return different results from the first call, | 806 // Second call may return different results from the first call, |
807 // but if the first the size cannot be zero. | 807 // but if the first the size cannot be zero. |
808 Vector<RefPtr<Node> > elements; | 808 Vector<RefPtr<Node> > elements; |
809 getNamedElements(name, elements); | 809 getNamedElements(name, elements); |
810 ASSERT(!elements.isEmpty()); | 810 ASSERT(!elements.isEmpty()); |
811 | 811 |
812 if (elements.size() == 1) { | 812 if (elements.size() == 1) { |
813 returnValue1Enabled = true; | 813 returnValue1Enabled = true; |
814 returnValue1 = elements.at(0); | 814 returnValue1 = elements.at(0); |
815 return; | 815 return; |
816 } | 816 } |
817 | 817 |
| 818 bool onlyMatchImg = elements.size() && elements.at(0)->hasTagName(imgTag); |
818 returnValue0Enabled = true; | 819 returnValue0Enabled = true; |
819 returnValue0 = NamedNodesCollection::create(elements); | 820 returnValue0 = radioNodeList(name, onlyMatchImg); |
820 } | 821 } |
821 | 822 |
822 void HTMLFormElement::setDemoted(bool demoted) | 823 void HTMLFormElement::setDemoted(bool demoted) |
823 { | 824 { |
824 if (demoted) | 825 if (demoted) |
825 UseCounter::count(document(), UseCounter::DemotedFormElement); | 826 UseCounter::count(document(), UseCounter::DemotedFormElement); |
826 m_wasDemoted = demoted; | 827 m_wasDemoted = demoted; |
827 } | 828 } |
828 | 829 |
829 } // namespace | 830 } // namespace |
OLD | NEW |