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, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008 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 20 matching lines...) Expand all Loading... | |
| 31 #include "XMLNames.h" | 31 #include "XMLNames.h" |
| 32 #include "bindings/v8/ScriptController.h" | 32 #include "bindings/v8/ScriptController.h" |
| 33 #include "bindings/v8/ScriptEventListener.h" | 33 #include "bindings/v8/ScriptEventListener.h" |
| 34 #include "core/css/CSSParser.h" | 34 #include "core/css/CSSParser.h" |
| 35 #include "core/css/CSSValuePool.h" | 35 #include "core/css/CSSValuePool.h" |
| 36 #include "core/css/StylePropertySet.h" | 36 #include "core/css/StylePropertySet.h" |
| 37 #include "core/dom/DocumentFragment.h" | 37 #include "core/dom/DocumentFragment.h" |
| 38 #include "core/dom/EventListener.h" | 38 #include "core/dom/EventListener.h" |
| 39 #include "core/dom/EventNames.h" | 39 #include "core/dom/EventNames.h" |
| 40 #include "core/dom/ExceptionCode.h" | 40 #include "core/dom/ExceptionCode.h" |
| 41 #include "core/dom/KeyboardEvent.h" | |
| 41 #include "core/dom/NodeTraversal.h" | 42 #include "core/dom/NodeTraversal.h" |
| 42 #include "core/dom/Text.h" | 43 #include "core/dom/Text.h" |
| 43 #include "core/editing/markup.h" | 44 #include "core/editing/markup.h" |
| 44 #include "core/html/HTMLBRElement.h" | 45 #include "core/html/HTMLBRElement.h" |
| 45 #include "core/html/HTMLFormElement.h" | 46 #include "core/html/HTMLFormElement.h" |
| 46 #include "core/html/HTMLTemplateElement.h" | 47 #include "core/html/HTMLTemplateElement.h" |
| 47 #include "core/html/HTMLTextFormControlElement.h" | 48 #include "core/html/HTMLTextFormControlElement.h" |
| 48 #include "core/html/parser/HTMLParserIdioms.h" | 49 #include "core/html/parser/HTMLParserIdioms.h" |
| 49 #include "core/loader/FrameLoader.h" | 50 #include "core/loader/FrameLoader.h" |
| 50 #include "core/page/Frame.h" | 51 #include "core/page/Frame.h" |
| 52 #include "core/page/Settings.h" | |
| 51 #include "core/rendering/RenderWordBreak.h" | 53 #include "core/rendering/RenderWordBreak.h" |
| 52 #include <wtf/StdLibExtras.h> | 54 #include <wtf/StdLibExtras.h> |
| 53 #include <wtf/text/CString.h> | 55 #include <wtf/text/CString.h> |
| 54 | 56 |
| 55 namespace WebCore { | 57 namespace WebCore { |
| 56 | 58 |
| 57 using namespace HTMLNames; | 59 using namespace HTMLNames; |
| 58 using namespace WTF; | 60 using namespace WTF; |
| 59 | 61 |
| 60 using std::min; | 62 using std::min; |
| (...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 591 | 593 |
| 592 if (verticalAlignValue != CSSValueInvalid) | 594 if (verticalAlignValue != CSSValueInvalid) |
| 593 addPropertyToPresentationAttributeStyle(style, CSSPropertyVerticalAlign, verticalAlignValue); | 595 addPropertyToPresentationAttributeStyle(style, CSSPropertyVerticalAlign, verticalAlignValue); |
| 594 } | 596 } |
| 595 | 597 |
| 596 bool HTMLElement::hasCustomFocusLogic() const | 598 bool HTMLElement::hasCustomFocusLogic() const |
| 597 { | 599 { |
| 598 return false; | 600 return false; |
| 599 } | 601 } |
| 600 | 602 |
| 603 bool HTMLElement::supportsSpatialNavigationFocus() const | |
| 604 { | |
| 605 EventTarget* target = const_cast<HTMLElement*>(this); | |
| 606 return target->hasEventListeners(eventNames().clickEvent) | |
|
tkent
2013/06/16 22:50:24
This looks an incompatible change. An element with
| |
| 607 || target->hasEventListeners(eventNames().keydownEvent) | |
| 608 || target->hasEventListeners(eventNames().keypressEvent) | |
| 609 || target->hasEventListeners(eventNames().keyupEvent); | |
| 610 } | |
| 611 | |
| 601 bool HTMLElement::supportsFocus() const | 612 bool HTMLElement::supportsFocus() const |
| 602 { | 613 { |
| 603 return Element::supportsFocus() || (rendererIsEditable() && parentNode() && !parentNode()->rendererIsEditable()); | 614 return Element::supportsFocus() || (rendererIsEditable() && parentNode() && !parentNode()->rendererIsEditable()) |
| 615 || supportsSpatialNavigationFocus(); | |
| 604 } | 616 } |
| 605 | 617 |
| 606 String HTMLElement::contentEditable() const | 618 String HTMLElement::contentEditable() const |
| 607 { | 619 { |
| 608 const AtomicString& value = fastGetAttribute(contenteditableAttr); | 620 const AtomicString& value = fastGetAttribute(contenteditableAttr); |
| 609 | 621 |
| 610 if (value.isNull()) | 622 if (value.isNull()) |
| 611 return "inherit"; | 623 return "inherit"; |
| 612 if (value.isEmpty() || equalIgnoringCase(value, "true")) | 624 if (value.isEmpty() || equalIgnoringCase(value, "true")) |
| 613 return "true"; | 625 return "true"; |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1017 return; | 1029 return; |
| 1018 | 1030 |
| 1019 // If the string is a named CSS color or a 3/6-digit hex color, use that. | 1031 // If the string is a named CSS color or a 3/6-digit hex color, use that. |
| 1020 Color parsedColor(colorString); | 1032 Color parsedColor(colorString); |
| 1021 if (!parsedColor.isValid()) | 1033 if (!parsedColor.isValid()) |
| 1022 parsedColor.setRGB(parseColorStringWithCrazyLegacyRules(colorString)); | 1034 parsedColor.setRGB(parseColorStringWithCrazyLegacyRules(colorString)); |
| 1023 | 1035 |
| 1024 style->setProperty(propertyID, cssValuePool().createColorValue(parsedColor.r gb())); | 1036 style->setProperty(propertyID, cssValuePool().createColorValue(parsedColor.r gb())); |
| 1025 } | 1037 } |
| 1026 | 1038 |
| 1039 void HTMLElement::defaultEventHandler(Event* event) | |
| 1040 { | |
| 1041 if (event->type() == eventNames().keypressEvent && event->isKeyboardEvent()) { | |
| 1042 handleKeypressEvent(toKeyboardEvent(event)); | |
| 1043 if (event->defaultHandled()) | |
| 1044 return; | |
| 1045 } | |
| 1046 | |
| 1047 StyledElement::defaultEventHandler(event); | |
| 1048 } | |
| 1049 | |
| 1050 void HTMLElement::handleKeypressEvent(KeyboardEvent* event) | |
| 1051 { | |
| 1052 if (!document()->settings()->spatialNavigationEnabled() || !supportsFocus()) | |
| 1053 return; | |
| 1054 int charCode = event->charCode(); | |
| 1055 if (charCode == '\r' || charCode == ' ') { | |
| 1056 dispatchSimulatedClick(event); | |
| 1057 event->setDefaultHandled(); | |
| 1058 } | |
| 1059 } | |
| 1060 | |
| 1027 } // namespace WebCore | 1061 } // namespace WebCore |
| 1028 | 1062 |
| 1029 #ifndef NDEBUG | 1063 #ifndef NDEBUG |
| 1030 | 1064 |
| 1031 // For use in the debugger | 1065 // For use in the debugger |
| 1032 void dumpInnerHTML(WebCore::HTMLElement*); | 1066 void dumpInnerHTML(WebCore::HTMLElement*); |
| 1033 | 1067 |
| 1034 void dumpInnerHTML(WebCore::HTMLElement* element) | 1068 void dumpInnerHTML(WebCore::HTMLElement* element) |
| 1035 { | 1069 { |
| 1036 printf("%s\n", element->innerHTML().ascii().data()); | 1070 printf("%s\n", element->innerHTML().ascii().data()); |
| 1037 } | 1071 } |
| 1038 #endif | 1072 #endif |
| OLD | NEW |