| 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, 2010 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2010 Apple Inc. All rights reserved. |
| 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) | 7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 } | 57 } |
| 58 | 58 |
| 59 LayoutObject* HTMLButtonElement::createLayoutObject(const ComputedStyle&) | 59 LayoutObject* HTMLButtonElement::createLayoutObject(const ComputedStyle&) |
| 60 { | 60 { |
| 61 return new LayoutButton(this); | 61 return new LayoutButton(this); |
| 62 } | 62 } |
| 63 | 63 |
| 64 const AtomicString& HTMLButtonElement::formControlType() const | 64 const AtomicString& HTMLButtonElement::formControlType() const |
| 65 { | 65 { |
| 66 switch (m_type) { | 66 switch (m_type) { |
| 67 case SUBMIT: { | 67 case SUBMIT: { |
| 68 DEFINE_STATIC_LOCAL(const AtomicString, submit, ("submit", AtomicStr
ing::ConstructFromLiteral)); | 68 DEFINE_STATIC_LOCAL(const AtomicString, submit, ("submit", AtomicString:
:ConstructFromLiteral)); |
| 69 return submit; | 69 return submit; |
| 70 } | 70 } |
| 71 case BUTTON: { | 71 case BUTTON: { |
| 72 DEFINE_STATIC_LOCAL(const AtomicString, button, ("button", AtomicStr
ing::ConstructFromLiteral)); | 72 DEFINE_STATIC_LOCAL(const AtomicString, button, ("button", AtomicString:
:ConstructFromLiteral)); |
| 73 return button; | 73 return button; |
| 74 } | 74 } |
| 75 case RESET: { | 75 case RESET: { |
| 76 DEFINE_STATIC_LOCAL(const AtomicString, reset, ("reset", AtomicStrin
g::ConstructFromLiteral)); | 76 DEFINE_STATIC_LOCAL(const AtomicString, reset, ("reset", AtomicString::C
onstructFromLiteral)); |
| 77 return reset; | 77 return reset; |
| 78 } | 78 } |
| 79 } | 79 } |
| 80 | 80 |
| 81 ASSERT_NOT_REACHED(); | 81 ASSERT_NOT_REACHED(); |
| 82 return emptyAtom; | 82 return emptyAtom; |
| 83 } | 83 } |
| 84 | 84 |
| 85 bool HTMLButtonElement::isPresentationAttribute(const QualifiedName& name) const | 85 bool HTMLButtonElement::isPresentationAttribute(const QualifiedName& name) const |
| 86 { | 86 { |
| 87 if (name == alignAttr) { | 87 if (name == alignAttr) { |
| 88 // Don't map 'align' attribute. This matches what Firefox and IE do, bu
t not Opera. | 88 // Don't map 'align' attribute. This matches what Firefox and IE do, bu
t not Opera. |
| 89 // See http://bugs.webkit.org/show_bug.cgi?id=12071 | 89 // See http://bugs.webkit.org/show_bug.cgi?id=12071 |
| 90 return false; | 90 return false; |
| 91 } | 91 } |
| 92 | 92 |
| 93 return HTMLFormControlElement::isPresentationAttribute(name); | 93 return HTMLFormControlElement::isPresentationAttribute(name); |
| 94 } | 94 } |
| 95 | 95 |
| 96 void HTMLButtonElement::parseAttribute(const QualifiedName& name, const AtomicSt
ring& value) | 96 void HTMLButtonElement::parseAttribute(const QualifiedName& name, const AtomicSt
ring& value) |
| 97 { | 97 { |
| 98 if (name == typeAttr) { | 98 if (name == typeAttr) { |
| 99 if (equalIgnoringCase(value, "reset")) | 99 if (equalIgnoringCase(value, "reset")) |
| 100 m_type = RESET; | 100 m_type = RESET; |
| 101 else if (equalIgnoringCase(value, "button")) | 101 else if (equalIgnoringCase(value, "button")) |
| 102 m_type = BUTTON; | 102 m_type = BUTTON; |
| 103 else | 103 else |
| 104 m_type = SUBMIT; | 104 m_type = SUBMIT; |
| 105 setNeedsWillValidateCheck(); | 105 setNeedsWillValidateCheck(); |
| 106 } else | 106 } else { |
| 107 HTMLFormControlElement::parseAttribute(name, value); | 107 HTMLFormControlElement::parseAttribute(name, value); |
| 108 } |
| 108 } | 109 } |
| 109 | 110 |
| 110 void HTMLButtonElement::defaultEventHandler(Event* event) | 111 void HTMLButtonElement::defaultEventHandler(Event* event) |
| 111 { | 112 { |
| 112 if (event->type() == EventTypeNames::DOMActivate && !isDisabledFormControl()
) { | 113 if (event->type() == EventTypeNames::DOMActivate && !isDisabledFormControl()
) { |
| 113 if (form() && m_type == SUBMIT) { | 114 if (form() && m_type == SUBMIT) { |
| 114 m_isActivatedSubmit = true; | 115 m_isActivatedSubmit = true; |
| 115 form()->prepareForSubmission(event); | 116 form()->prepareForSubmission(event); |
| 116 event->setDefaultHandled(); | 117 event->setDefaultHandled(); |
| 117 m_isActivatedSubmit = false; // Do this in case submission was cance
led. | 118 m_isActivatedSubmit = false; // Do this in case submission was cance
led. |
| 118 } | 119 } |
| 119 if (form() && m_type == RESET) { | 120 if (form() && m_type == RESET) { |
| 120 form()->reset(); | 121 form()->reset(); |
| 121 event->setDefaultHandled(); | 122 event->setDefaultHandled(); |
| 122 } | 123 } |
| 123 } | 124 } |
| 124 | 125 |
| 125 if (event->isKeyboardEvent()) { | 126 if (event->isKeyboardEvent()) { |
| 126 if (event->type() == EventTypeNames::keydown && toKeyboardEvent(event)->
keyIdentifier() == "U+0020") { | 127 if (event->type() == EventTypeNames::keydown && toKeyboardEvent(event)->
keyIdentifier() == "U+0020") { |
| 127 setActive(true); | 128 setActive(true); |
| 128 // No setDefaultHandled() - IE dispatches a keypress in this case. | 129 // No setDefaultHandled() - IE dispatches a keypress in this case. |
| 129 return; | 130 return; |
| 130 } | 131 } |
| 131 if (event->type() == EventTypeNames::keypress) { | 132 if (event->type() == EventTypeNames::keypress) { |
| 132 switch (toKeyboardEvent(event)->charCode()) { | 133 switch (toKeyboardEvent(event)->charCode()) { |
| 133 case '\r': | 134 case '\r': |
| 134 dispatchSimulatedClick(event); | 135 dispatchSimulatedClick(event); |
| 135 event->setDefaultHandled(); | 136 event->setDefaultHandled(); |
| 136 return; | 137 return; |
| 137 case ' ': | 138 case ' ': |
| 138 // Prevent scrolling down the page. | 139 // Prevent scrolling down the page. |
| 139 event->setDefaultHandled(); | 140 event->setDefaultHandled(); |
| 140 return; | 141 return; |
| 141 } | 142 } |
| 142 } | 143 } |
| 143 if (event->type() == EventTypeNames::keyup && toKeyboardEvent(event)->ke
yIdentifier() == "U+0020") { | 144 if (event->type() == EventTypeNames::keyup && toKeyboardEvent(event)->ke
yIdentifier() == "U+0020") { |
| 144 if (active()) | 145 if (active()) |
| 145 dispatchSimulatedClick(event); | 146 dispatchSimulatedClick(event); |
| 146 event->setDefaultHandled(); | 147 event->setDefaultHandled(); |
| 147 return; | 148 return; |
| 148 } | 149 } |
| 149 } | 150 } |
| 150 | 151 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 argv.append(formactionAttr.toString()); | 240 argv.append(formactionAttr.toString()); |
| 240 argv.append(oldValue); | 241 argv.append(oldValue); |
| 241 argv.append(newValue); | 242 argv.append(newValue); |
| 242 activityLogger->logEvent("blinkSetAttribute", argv.size(), argv.data
()); | 243 activityLogger->logEvent("blinkSetAttribute", argv.size(), argv.data
()); |
| 243 } | 244 } |
| 244 } | 245 } |
| 245 HTMLFormControlElement::attributeWillChange(name, oldValue, newValue); | 246 HTMLFormControlElement::attributeWillChange(name, oldValue, newValue); |
| 246 } | 247 } |
| 247 | 248 |
| 248 } // namespace | 249 } // namespace |
| OLD | NEW |