| 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...) Expand all 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...) Expand 10 before | Expand all | Expand 10 after 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 |