Chromium Code Reviews| 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 * Copyright (C) 2004-2008, 2013, 2014 Apple Inc. All rights reserved. | 4 * Copyright (C) 2004-2008, 2013, 2014 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) | 5 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) |
| 6 * Copyright (C) 2011 Motorola Mobility. All rights reserved. | 6 * Copyright (C) 2011 Motorola Mobility. All rights reserved. |
| 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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 209 { | 209 { |
| 210 if (!attrName.namespaceURI().isNull()) | 210 if (!attrName.namespaceURI().isNull()) |
| 211 return nullAtom; | 211 return nullAtom; |
| 212 | 212 |
| 213 if (!attrName.localName().startsWith("on", false)) | 213 if (!attrName.localName().startsWith("on", false)) |
| 214 return nullAtom; | 214 return nullAtom; |
| 215 | 215 |
| 216 typedef HashMap<AtomicString, AtomicString> StringToStringMap; | 216 typedef HashMap<AtomicString, AtomicString> StringToStringMap; |
| 217 DEFINE_STATIC_LOCAL(StringToStringMap, attributeNameToEventNameMap, ()); | 217 DEFINE_STATIC_LOCAL(StringToStringMap, attributeNameToEventNameMap, ()); |
| 218 if (!attributeNameToEventNameMap.size()) { | 218 if (!attributeNameToEventNameMap.size()) { |
| 219 attributeNameToEventNameMap.set(onabortAttr.localName(), EventTypeNames: :abort); | 219 struct AttrToEventName { |
| 220 attributeNameToEventNameMap.set(onanimationendAttr.localName(), EventTyp eNames::animationend); | 220 const QualifiedName& attr; |
| 221 attributeNameToEventNameMap.set(onanimationiterationAttr.localName(), Ev entTypeNames::animationiteration); | 221 const AtomicString& event; |
| 222 attributeNameToEventNameMap.set(onanimationstartAttr.localName(), EventT ypeNames::animationstart); | 222 }; |
| 223 attributeNameToEventNameMap.set(onautocompleteAttr.localName(), EventTyp eNames::autocomplete); | 223 AttrToEventName attrToEventNames[] = { |
| 224 attributeNameToEventNameMap.set(onautocompleteerrorAttr.localName(), Eve ntTypeNames::autocompleteerror); | 224 { onabortAttr, EventTypeNames::abort }, |
| 225 attributeNameToEventNameMap.set(onbeforecopyAttr.localName(), EventTypeN ames::beforecopy); | 225 { onanimationendAttr, EventTypeNames::animationend }, |
| 226 attributeNameToEventNameMap.set(onbeforecutAttr.localName(), EventTypeNa mes::beforecut); | 226 { onanimationiterationAttr, EventTypeNames::animationiteration }, |
| 227 attributeNameToEventNameMap.set(onbeforepasteAttr.localName(), EventType Names::beforepaste); | 227 { onanimationstartAttr, EventTypeNames::animationstart }, |
| 228 attributeNameToEventNameMap.set(onblurAttr.localName(), EventTypeNames:: blur); | 228 { onautocompleteAttr, EventTypeNames::autocomplete }, |
| 229 attributeNameToEventNameMap.set(oncancelAttr.localName(), EventTypeNames ::cancel); | 229 { onautocompleteerrorAttr, EventTypeNames::autocompleteerror }, |
| 230 attributeNameToEventNameMap.set(oncanplayAttr.localName(), EventTypeName s::canplay); | 230 { onbeforecopyAttr, EventTypeNames::beforecopy }, |
| 231 attributeNameToEventNameMap.set(oncanplaythroughAttr.localName(), EventT ypeNames::canplaythrough); | 231 { onbeforecutAttr, EventTypeNames::beforecut }, |
| 232 attributeNameToEventNameMap.set(onchangeAttr.localName(), EventTypeNames ::change); | 232 { onbeforepasteAttr, EventTypeNames::beforepaste }, |
| 233 attributeNameToEventNameMap.set(onclickAttr.localName(), EventTypeNames: :click); | 233 { onblurAttr, EventTypeNames::blur }, |
| 234 attributeNameToEventNameMap.set(oncloseAttr.localName(), EventTypeNames: :close); | 234 { oncancelAttr, EventTypeNames::cancel }, |
| 235 attributeNameToEventNameMap.set(oncontextmenuAttr.localName(), EventType Names::contextmenu); | 235 { oncanplayAttr, EventTypeNames::canplay }, |
| 236 attributeNameToEventNameMap.set(oncopyAttr.localName(), EventTypeNames:: copy); | 236 { oncanplaythroughAttr, EventTypeNames::canplaythrough }, |
| 237 attributeNameToEventNameMap.set(oncuechangeAttr.localName(), EventTypeNa mes::cuechange); | 237 { onchangeAttr, EventTypeNames::change }, |
| 238 attributeNameToEventNameMap.set(oncutAttr.localName(), EventTypeNames::c ut); | 238 { onclickAttr, EventTypeNames::click }, |
| 239 attributeNameToEventNameMap.set(ondblclickAttr.localName(), EventTypeNam es::dblclick); | 239 { oncloseAttr, EventTypeNames::close }, |
| 240 attributeNameToEventNameMap.set(ondragAttr.localName(), EventTypeNames:: drag); | 240 { oncontextmenuAttr, EventTypeNames::contextmenu }, |
| 241 attributeNameToEventNameMap.set(ondragendAttr.localName(), EventTypeName s::dragend); | 241 { oncopyAttr, EventTypeNames::copy }, |
| 242 attributeNameToEventNameMap.set(ondragenterAttr.localName(), EventTypeNa mes::dragenter); | 242 { oncuechangeAttr, EventTypeNames::cuechange }, |
| 243 attributeNameToEventNameMap.set(ondragleaveAttr.localName(), EventTypeNa mes::dragleave); | 243 { oncutAttr, EventTypeNames::cut }, |
| 244 attributeNameToEventNameMap.set(ondragoverAttr.localName(), EventTypeNam es::dragover); | 244 { ondblclickAttr, EventTypeNames::dblclick }, |
| 245 attributeNameToEventNameMap.set(ondragstartAttr.localName(), EventTypeNa mes::dragstart); | 245 { ondragAttr, EventTypeNames::drag }, |
| 246 attributeNameToEventNameMap.set(ondropAttr.localName(), EventTypeNames:: drop); | 246 { ondragendAttr, EventTypeNames::dragend }, |
| 247 attributeNameToEventNameMap.set(ondurationchangeAttr.localName(), EventT ypeNames::durationchange); | 247 { ondragenterAttr, EventTypeNames::dragenter }, |
| 248 attributeNameToEventNameMap.set(onemptiedAttr.localName(), EventTypeName s::emptied); | 248 { ondragleaveAttr, EventTypeNames::dragleave }, |
| 249 attributeNameToEventNameMap.set(onendedAttr.localName(), EventTypeNames: :ended); | 249 { ondragoverAttr, EventTypeNames::dragover }, |
| 250 attributeNameToEventNameMap.set(onerrorAttr.localName(), EventTypeNames: :error); | 250 { ondragstartAttr, EventTypeNames::dragstart }, |
| 251 attributeNameToEventNameMap.set(onfocusAttr.localName(), EventTypeNames: :focus); | 251 { ondropAttr, EventTypeNames::drop }, |
| 252 attributeNameToEventNameMap.set(onfocusinAttr.localName(), EventTypeName s::focusin); | 252 { ondurationchangeAttr, EventTypeNames::durationchange }, |
| 253 attributeNameToEventNameMap.set(onfocusoutAttr.localName(), EventTypeNam es::focusout); | 253 { onemptiedAttr, EventTypeNames::emptied }, |
| 254 attributeNameToEventNameMap.set(oninputAttr.localName(), EventTypeNames: :input); | 254 { onendedAttr, EventTypeNames::ended }, |
| 255 attributeNameToEventNameMap.set(oninvalidAttr.localName(), EventTypeName s::invalid); | 255 { onerrorAttr, EventTypeNames::error }, |
| 256 attributeNameToEventNameMap.set(onkeydownAttr.localName(), EventTypeName s::keydown); | 256 { onfocusAttr, EventTypeNames::focus }, |
| 257 attributeNameToEventNameMap.set(onkeypressAttr.localName(), EventTypeNam es::keypress); | 257 { onfocusinAttr, EventTypeNames::focusin }, |
| 258 attributeNameToEventNameMap.set(onkeyupAttr.localName(), EventTypeNames: :keyup); | 258 { onfocusoutAttr, EventTypeNames::focusout }, |
| 259 attributeNameToEventNameMap.set(onloadAttr.localName(), EventTypeNames:: load); | 259 { oninputAttr, EventTypeNames::input }, |
| 260 attributeNameToEventNameMap.set(onloadeddataAttr.localName(), EventTypeN ames::loadeddata); | 260 { oninvalidAttr, EventTypeNames::invalid }, |
| 261 attributeNameToEventNameMap.set(onloadedmetadataAttr.localName(), EventT ypeNames::loadedmetadata); | 261 { onkeydownAttr, EventTypeNames::keydown }, |
| 262 attributeNameToEventNameMap.set(onloadstartAttr.localName(), EventTypeNa mes::loadstart); | 262 { onkeypressAttr, EventTypeNames::keypress }, |
| 263 attributeNameToEventNameMap.set(onmousedownAttr.localName(), EventTypeNa mes::mousedown); | 263 { onkeyupAttr, EventTypeNames::keyup }, |
| 264 attributeNameToEventNameMap.set(onmouseenterAttr.localName(), EventTypeN ames::mouseenter); | 264 { onloadAttr, EventTypeNames::load }, |
| 265 attributeNameToEventNameMap.set(onmouseleaveAttr.localName(), EventTypeN ames::mouseleave); | 265 { onloadeddataAttr, EventTypeNames::loadeddata }, |
| 266 attributeNameToEventNameMap.set(onmousemoveAttr.localName(), EventTypeNa mes::mousemove); | 266 { onloadedmetadataAttr, EventTypeNames::loadedmetadata }, |
| 267 attributeNameToEventNameMap.set(onmouseoutAttr.localName(), EventTypeNam es::mouseout); | 267 { onloadstartAttr, EventTypeNames::loadstart }, |
| 268 attributeNameToEventNameMap.set(onmouseoverAttr.localName(), EventTypeNa mes::mouseover); | 268 { onmousedownAttr, EventTypeNames::mousedown }, |
| 269 attributeNameToEventNameMap.set(onmouseupAttr.localName(), EventTypeName s::mouseup); | 269 { onmouseenterAttr, EventTypeNames::mouseenter }, |
| 270 attributeNameToEventNameMap.set(onmousewheelAttr.localName(), EventTypeN ames::mousewheel); | 270 { onmouseleaveAttr, EventTypeNames::mouseleave }, |
| 271 attributeNameToEventNameMap.set(onpasteAttr.localName(), EventTypeNames: :paste); | 271 { onmousemoveAttr, EventTypeNames::mousemove }, |
| 272 attributeNameToEventNameMap.set(onpauseAttr.localName(), EventTypeNames: :pause); | 272 { onmouseoutAttr, EventTypeNames::mouseout }, |
| 273 attributeNameToEventNameMap.set(onplayAttr.localName(), EventTypeNames:: play); | 273 { onmouseoverAttr, EventTypeNames::mouseover }, |
| 274 attributeNameToEventNameMap.set(onplayingAttr.localName(), EventTypeName s::playing); | 274 { onmouseupAttr, EventTypeNames::mouseup }, |
| 275 attributeNameToEventNameMap.set(onprogressAttr.localName(), EventTypeNam es::progress); | 275 { onmousewheelAttr, EventTypeNames::mousewheel }, |
| 276 attributeNameToEventNameMap.set(onratechangeAttr.localName(), EventTypeN ames::ratechange); | 276 { onpasteAttr, EventTypeNames::paste }, |
| 277 attributeNameToEventNameMap.set(onresetAttr.localName(), EventTypeNames: :reset); | 277 { onpauseAttr, EventTypeNames::pause }, |
| 278 attributeNameToEventNameMap.set(onresizeAttr.localName(), EventTypeNames ::resize); | 278 { onplayAttr, EventTypeNames::play }, |
| 279 attributeNameToEventNameMap.set(onscrollAttr.localName(), EventTypeNames ::scroll); | 279 { onplayingAttr, EventTypeNames::playing }, |
| 280 attributeNameToEventNameMap.set(onseekedAttr.localName(), EventTypeNames ::seeked); | 280 { onprogressAttr, EventTypeNames::progress }, |
| 281 attributeNameToEventNameMap.set(onseekingAttr.localName(), EventTypeName s::seeking); | 281 { onratechangeAttr, EventTypeNames::ratechange }, |
| 282 attributeNameToEventNameMap.set(onselectAttr.localName(), EventTypeNames ::select); | 282 { onresetAttr, EventTypeNames::reset }, |
| 283 attributeNameToEventNameMap.set(onselectstartAttr.localName(), EventType Names::selectstart); | 283 { onresizeAttr, EventTypeNames::resize }, |
| 284 attributeNameToEventNameMap.set(onshowAttr.localName(), EventTypeNames:: show); | 284 { onscrollAttr, EventTypeNames::scroll }, |
| 285 attributeNameToEventNameMap.set(onstalledAttr.localName(), EventTypeName s::stalled); | 285 { onseekedAttr, EventTypeNames::seeked }, |
| 286 attributeNameToEventNameMap.set(onsubmitAttr.localName(), EventTypeNames ::submit); | 286 { onseekingAttr, EventTypeNames::seeking }, |
| 287 attributeNameToEventNameMap.set(onsuspendAttr.localName(), EventTypeName s::suspend); | 287 { onselectAttr, EventTypeNames::select }, |
| 288 attributeNameToEventNameMap.set(ontimeupdateAttr.localName(), EventTypeN ames::timeupdate); | 288 { onselectstartAttr, EventTypeNames::selectstart }, |
| 289 attributeNameToEventNameMap.set(ontoggleAttr.localName(), EventTypeNames ::toggle); | 289 { onshowAttr, EventTypeNames::show }, |
| 290 attributeNameToEventNameMap.set(ontouchcancelAttr.localName(), EventType Names::touchcancel); | 290 { onstalledAttr, EventTypeNames::stalled }, |
| 291 attributeNameToEventNameMap.set(ontouchendAttr.localName(), EventTypeNam es::touchend); | 291 { onsubmitAttr, EventTypeNames::submit }, |
| 292 attributeNameToEventNameMap.set(ontouchmoveAttr.localName(), EventTypeNa mes::touchmove); | 292 { onsuspendAttr, EventTypeNames::suspend }, |
| 293 attributeNameToEventNameMap.set(ontouchstartAttr.localName(), EventTypeN ames::touchstart); | 293 { ontimeupdateAttr, EventTypeNames::timeupdate }, |
| 294 attributeNameToEventNameMap.set(ontransitionendAttr.localName(), EventTy peNames::webkitTransitionEnd); | 294 { ontoggleAttr, EventTypeNames::toggle }, |
| 295 attributeNameToEventNameMap.set(onvolumechangeAttr.localName(), EventTyp eNames::volumechange); | 295 { ontouchcancelAttr, EventTypeNames::touchcancel }, |
| 296 attributeNameToEventNameMap.set(onwaitingAttr.localName(), EventTypeName s::waiting); | 296 { ontouchendAttr, EventTypeNames::touchend }, |
| 297 attributeNameToEventNameMap.set(onwebkitanimationendAttr.localName(), Ev entTypeNames::webkitAnimationEnd); | 297 { ontouchmoveAttr, EventTypeNames::touchmove }, |
| 298 attributeNameToEventNameMap.set(onwebkitanimationiterationAttr.localName (), EventTypeNames::webkitAnimationIteration); | 298 { ontouchstartAttr, EventTypeNames::touchstart }, |
| 299 attributeNameToEventNameMap.set(onwebkitanimationstartAttr.localName(), EventTypeNames::webkitAnimationStart); | 299 { ontransitionendAttr, EventTypeNames::webkitTransitionEnd }, |
| 300 attributeNameToEventNameMap.set(onwebkitfullscreenchangeAttr.localName() , EventTypeNames::webkitfullscreenchange); | 300 { onvolumechangeAttr, EventTypeNames::volumechange }, |
| 301 attributeNameToEventNameMap.set(onwebkitfullscreenerrorAttr.localName(), EventTypeNames::webkitfullscreenerror); | 301 { onwaitingAttr, EventTypeNames::waiting }, |
| 302 attributeNameToEventNameMap.set(onwebkittransitionendAttr.localName(), E ventTypeNames::webkitTransitionEnd); | 302 { onwebkitanimationendAttr, EventTypeNames::webkitAnimationEnd }, |
| 303 attributeNameToEventNameMap.set(onwheelAttr.localName(), EventTypeNames: :wheel); | 303 { onwebkitanimationiterationAttr, EventTypeNames::webkitAnimationIte ration }, |
| 304 { onwebkitanimationstartAttr, EventTypeNames::webkitAnimationStart } , | |
| 305 { onwebkitfullscreenchangeAttr, EventTypeNames::webkitfullscreenchan ge }, | |
| 306 { onwebkitfullscreenerrorAttr, EventTypeNames::webkitfullscreenerror }, | |
| 307 { onwebkittransitionendAttr, EventTypeNames::webkitTransitionEnd }, | |
| 308 { onwheelAttr, EventTypeNames::wheel }, | |
| 309 }; | |
| 310 | |
| 311 for (size_t i = 0; i < WTF_ARRAY_LENGTH(attrToEventNames); i++) | |
| 312 attributeNameToEventNameMap.set(attrToEventNames[i].attr.localName() , attrToEventNames[i].event); | |
|
esprehn
2014/09/29 00:23:04
Why not ditch the hash table entirely and use std:
| |
| 304 } | 313 } |
| 305 | 314 |
| 306 return attributeNameToEventNameMap.get(attrName.localName()); | 315 return attributeNameToEventNameMap.get(attrName.localName()); |
| 307 } | 316 } |
| 308 | 317 |
| 309 void HTMLElement::parseAttribute(const QualifiedName& name, const AtomicString& value) | 318 void HTMLElement::parseAttribute(const QualifiedName& name, const AtomicString& value) |
| 310 { | 319 { |
| 311 if (name == tabindexAttr) | 320 if (name == tabindexAttr) |
| 312 return Element::parseAttribute(name, value); | 321 return Element::parseAttribute(name, value); |
| 313 | 322 |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 994 #ifndef NDEBUG | 1003 #ifndef NDEBUG |
| 995 | 1004 |
| 996 // For use in the debugger | 1005 // For use in the debugger |
| 997 void dumpInnerHTML(blink::HTMLElement*); | 1006 void dumpInnerHTML(blink::HTMLElement*); |
| 998 | 1007 |
| 999 void dumpInnerHTML(blink::HTMLElement* element) | 1008 void dumpInnerHTML(blink::HTMLElement* element) |
| 1000 { | 1009 { |
| 1001 printf("%s\n", element->innerHTML().ascii().data()); | 1010 printf("%s\n", element->innerHTML().ascii().data()); |
| 1002 } | 1011 } |
| 1003 #endif | 1012 #endif |
| OLD | NEW |