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. | 5 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. |
6 * (http://www.torchmobile.com/) | 6 * (http://www.torchmobile.com/) |
7 * Copyright (C) 2011 Motorola Mobility. All rights reserved. | 7 * Copyright (C) 2011 Motorola Mobility. All rights reserved. |
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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 #include "core/editing/spellcheck/SpellChecker.h" | 50 #include "core/editing/spellcheck/SpellChecker.h" |
51 #include "core/events/EventListener.h" | 51 #include "core/events/EventListener.h" |
52 #include "core/events/KeyboardEvent.h" | 52 #include "core/events/KeyboardEvent.h" |
53 #include "core/frame/Settings.h" | 53 #include "core/frame/Settings.h" |
54 #include "core/frame/UseCounter.h" | 54 #include "core/frame/UseCounter.h" |
55 #include "core/frame/csp/ContentSecurityPolicy.h" | 55 #include "core/frame/csp/ContentSecurityPolicy.h" |
56 #include "core/html/HTMLBRElement.h" | 56 #include "core/html/HTMLBRElement.h" |
57 #include "core/html/HTMLDimension.h" | 57 #include "core/html/HTMLDimension.h" |
58 #include "core/html/HTMLFormElement.h" | 58 #include "core/html/HTMLFormElement.h" |
59 #include "core/html/HTMLInputElement.h" | 59 #include "core/html/HTMLInputElement.h" |
60 #include "core/html/HTMLMenuElement.h" | |
61 #include "core/html/HTMLTemplateElement.h" | 60 #include "core/html/HTMLTemplateElement.h" |
62 #include "core/html/parser/HTMLParserIdioms.h" | 61 #include "core/html/parser/HTMLParserIdioms.h" |
63 #include "core/layout/LayoutBoxModelObject.h" | 62 #include "core/layout/LayoutBoxModelObject.h" |
64 #include "core/layout/LayoutObject.h" | 63 #include "core/layout/LayoutObject.h" |
65 #include "core/page/SpatialNavigation.h" | 64 #include "core/page/SpatialNavigation.h" |
66 #include "core/svg/SVGSVGElement.h" | 65 #include "core/svg/SVGSVGElement.h" |
67 #include "platform/Language.h" | 66 #include "platform/Language.h" |
68 #include "platform/text/BidiResolver.h" | 67 #include "platform/text/BidiResolver.h" |
69 #include "platform/text/BidiTextRun.h" | 68 #include "platform/text/BidiTextRun.h" |
70 #include "platform/text/TextRunIterator.h" | 69 #include "platform/text/TextRunIterator.h" |
(...skipping 990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1061 if (!ParseColorWithLegacyRules(attribute_value, parsed_color)) | 1060 if (!ParseColorWithLegacyRules(attribute_value, parsed_color)) |
1062 return; | 1061 return; |
1063 | 1062 |
1064 style->SetProperty(property_id, *CSSColorValue::Create(parsed_color.Rgb())); | 1063 style->SetProperty(property_id, *CSSColorValue::Create(parsed_color.Rgb())); |
1065 } | 1064 } |
1066 | 1065 |
1067 bool HTMLElement::IsInteractiveContent() const { | 1066 bool HTMLElement::IsInteractiveContent() const { |
1068 return false; | 1067 return false; |
1069 } | 1068 } |
1070 | 1069 |
1071 HTMLMenuElement* HTMLElement::AssignedContextMenu() const { | |
1072 if (HTMLMenuElement* menu = contextMenu()) | |
1073 return menu; | |
1074 | |
1075 return parentElement() && parentElement()->IsHTMLElement() | |
1076 ? ToHTMLElement(parentElement())->AssignedContextMenu() | |
1077 : nullptr; | |
1078 } | |
1079 | |
1080 HTMLMenuElement* HTMLElement::contextMenu() const { | |
1081 const AtomicString& context_menu_id(FastGetAttribute(contextmenuAttr)); | |
1082 if (context_menu_id.IsNull()) | |
1083 return nullptr; | |
1084 | |
1085 Element* element = GetTreeScope().getElementById(context_menu_id); | |
1086 // Not checking if the menu element is of type "popup". | |
1087 // Ignoring menu element type attribute is intentional according to the | |
1088 // standard. | |
1089 return isHTMLMenuElement(element) ? toHTMLMenuElement(element) : nullptr; | |
1090 } | |
1091 | |
1092 void HTMLElement::setContextMenu(HTMLMenuElement* context_menu) { | |
1093 if (!context_menu) { | |
1094 setAttribute(contextmenuAttr, ""); | |
1095 return; | |
1096 } | |
1097 | |
1098 // http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.
html#reflecting-content-attributes-in-idl-attributes | |
1099 // On setting, if the given element has an id attribute, and has the same home | |
1100 // subtree as the element of the attribute being set, and the given element is | |
1101 // the first element in that home subtree whose ID is the value of that id | |
1102 // attribute, then the content attribute must be set to the value of that id | |
1103 // attribute. Otherwise, the content attribute must be set to the empty | |
1104 // string. | |
1105 const AtomicString& context_menu_id(context_menu->FastGetAttribute(idAttr)); | |
1106 | |
1107 if (!context_menu_id.IsNull() && | |
1108 context_menu == GetTreeScope().getElementById(context_menu_id)) | |
1109 setAttribute(contextmenuAttr, context_menu_id); | |
1110 else | |
1111 setAttribute(contextmenuAttr, ""); | |
1112 } | |
1113 | |
1114 void HTMLElement::DefaultEventHandler(Event* event) { | 1070 void HTMLElement::DefaultEventHandler(Event* event) { |
1115 if (event->type() == EventTypeNames::keypress && event->IsKeyboardEvent()) { | 1071 if (event->type() == EventTypeNames::keypress && event->IsKeyboardEvent()) { |
1116 HandleKeypressEvent(ToKeyboardEvent(event)); | 1072 HandleKeypressEvent(ToKeyboardEvent(event)); |
1117 if (event->DefaultHandled()) | 1073 if (event->DefaultHandled()) |
1118 return; | 1074 return; |
1119 } | 1075 } |
1120 | 1076 |
1121 Element::DefaultEventHandler(event); | 1077 Element::DefaultEventHandler(event); |
1122 } | 1078 } |
1123 | 1079 |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 | 1179 |
1224 #ifndef NDEBUG | 1180 #ifndef NDEBUG |
1225 | 1181 |
1226 // For use in the debugger | 1182 // For use in the debugger |
1227 void dumpInnerHTML(blink::HTMLElement*); | 1183 void dumpInnerHTML(blink::HTMLElement*); |
1228 | 1184 |
1229 void dumpInnerHTML(blink::HTMLElement* element) { | 1185 void dumpInnerHTML(blink::HTMLElement* element) { |
1230 printf("%s\n", element->innerHTML().Ascii().data()); | 1186 printf("%s\n", element->innerHTML().Ascii().data()); |
1231 } | 1187 } |
1232 #endif | 1188 #endif |
OLD | NEW |