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-2011, 2014 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004-2011, 2014 Apple Inc. All rights reserved. |
6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
7 * (http://www.torchmobile.com/) | 7 * (http://www.torchmobile.com/) |
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 16 matching lines...) Expand all Loading... |
27 #define Node_h | 27 #define Node_h |
28 | 28 |
29 #include "bindings/core/v8/ExceptionState.h" | 29 #include "bindings/core/v8/ExceptionState.h" |
30 #include "bindings/core/v8/TraceWrapperMember.h" | 30 #include "bindings/core/v8/TraceWrapperMember.h" |
31 #include "core/CoreExport.h" | 31 #include "core/CoreExport.h" |
32 #include "core/dom/MutationObserver.h" | 32 #include "core/dom/MutationObserver.h" |
33 #include "core/dom/SimulatedClickOptions.h" | 33 #include "core/dom/SimulatedClickOptions.h" |
34 #include "core/dom/TreeScope.h" | 34 #include "core/dom/TreeScope.h" |
35 #include "core/editing/EditingBoundary.h" | 35 #include "core/editing/EditingBoundary.h" |
36 #include "core/events/EventTarget.h" | 36 #include "core/events/EventTarget.h" |
| 37 #include "core/style/ComputedStyle.h" |
37 #include "core/style/ComputedStyleConstants.h" | 38 #include "core/style/ComputedStyleConstants.h" |
38 #include "platform/geometry/LayoutRect.h" | 39 #include "platform/geometry/LayoutRect.h" |
39 #include "public/platform/WebFocusType.h" | 40 #include "public/platform/WebFocusType.h" |
40 | 41 |
41 // This needs to be here because Element.cpp also depends on it. | 42 // This needs to be here because Element.cpp also depends on it. |
42 #define DUMP_NODE_STATISTICS 0 | 43 #define DUMP_NODE_STATISTICS 0 |
43 | 44 |
44 namespace blink { | 45 namespace blink { |
45 | 46 |
46 class ContainerNode; | 47 class ContainerNode; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 | 94 |
94 kNotDefinedFlag = 2 << kNodeCustomElementShift, | 95 kNotDefinedFlag = 2 << kNodeCustomElementShift, |
95 }; | 96 }; |
96 | 97 |
97 enum class SlotChangeType { | 98 enum class SlotChangeType { |
98 kInitial, | 99 kInitial, |
99 kChained, | 100 kChained, |
100 }; | 101 }; |
101 | 102 |
102 class NodeLayoutData { | 103 class NodeLayoutData { |
| 104 WTF_MAKE_NONCOPYABLE(NodeLayoutData); |
| 105 |
103 public: | 106 public: |
104 explicit NodeLayoutData(LayoutObject* layout_object) | 107 explicit NodeLayoutData(LayoutObject* layout_object, |
105 : layout_object_(layout_object) {} | 108 RefPtr<ComputedStyle> non_attached_style) |
| 109 : layout_object_(layout_object), |
| 110 non_attached_style_(non_attached_style) {} |
106 ~NodeLayoutData() { CHECK(!layout_object_); } | 111 ~NodeLayoutData() { CHECK(!layout_object_); } |
107 | 112 |
108 LayoutObject* GetLayoutObject() const { return layout_object_; } | 113 LayoutObject* GetLayoutObject() const { return layout_object_; } |
109 void SetLayoutObject(LayoutObject* layout_object) { | 114 void SetLayoutObject(LayoutObject* layout_object) { |
110 DCHECK_NE(&SharedEmptyData(), this); | 115 DCHECK_NE(&SharedEmptyData(), this); |
111 layout_object_ = layout_object; | 116 layout_object_ = layout_object; |
112 } | 117 } |
| 118 |
| 119 ComputedStyle* GetNonAttachedStyle() const { |
| 120 return non_attached_style_.Get(); |
| 121 } |
| 122 void SetNonAttachedStyle(RefPtr<ComputedStyle> non_attached_style) { |
| 123 DCHECK_NE(&SharedEmptyData(), this); |
| 124 non_attached_style_ = non_attached_style; |
| 125 } |
| 126 |
113 static NodeLayoutData& SharedEmptyData() { | 127 static NodeLayoutData& SharedEmptyData() { |
114 DEFINE_STATIC_LOCAL(NodeLayoutData, shared_empty_data, (nullptr)); | 128 DEFINE_STATIC_LOCAL(NodeLayoutData, shared_empty_data, (nullptr, nullptr)); |
115 return shared_empty_data; | 129 return shared_empty_data; |
116 } | 130 } |
117 bool IsSharedEmptyData() { return this == &SharedEmptyData(); } | 131 bool IsSharedEmptyData() { return this == &SharedEmptyData(); } |
118 | 132 |
119 private: | 133 private: |
120 LayoutObject* layout_object_; | 134 LayoutObject* layout_object_; |
| 135 RefPtr<ComputedStyle> non_attached_style_; |
121 }; | 136 }; |
122 | 137 |
123 class NodeRareDataBase { | 138 class NodeRareDataBase { |
124 public: | 139 public: |
125 NodeLayoutData* GetNodeLayoutData() const { return node_layout_data_; } | 140 NodeLayoutData* GetNodeLayoutData() const { return node_layout_data_; } |
126 void SetNodeLayoutData(NodeLayoutData* node_layout_data) { | 141 void SetNodeLayoutData(NodeLayoutData* node_layout_data) { |
127 DCHECK(node_layout_data); | 142 DCHECK(node_layout_data); |
128 node_layout_data_ = node_layout_data; | 143 node_layout_data_ = node_layout_data; |
129 } | 144 } |
130 | 145 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 bool isSameNode(const Node* other) const { return this == other; } | 272 bool isSameNode(const Node* other) const { return this == other; } |
258 bool isDefaultNamespace(const AtomicString& namespace_uri) const; | 273 bool isDefaultNamespace(const AtomicString& namespace_uri) const; |
259 const AtomicString& lookupPrefix(const AtomicString& namespace_uri) const; | 274 const AtomicString& lookupPrefix(const AtomicString& namespace_uri) const; |
260 const AtomicString& lookupNamespaceURI(const String& prefix) const; | 275 const AtomicString& lookupNamespaceURI(const String& prefix) const; |
261 | 276 |
262 String textContent(bool convert_brs_to_newlines = false) const; | 277 String textContent(bool convert_brs_to_newlines = false) const; |
263 void setTextContent(const String&); | 278 void setTextContent(const String&); |
264 | 279 |
265 bool SupportsAltText(); | 280 bool SupportsAltText(); |
266 | 281 |
| 282 void SetNonAttachedStyle(RefPtr<ComputedStyle> non_attached_style); |
| 283 |
| 284 ComputedStyle* GetNonAttachedStyle() const { |
| 285 return HasRareData() |
| 286 ? data_.rare_data_->GetNodeLayoutData()->GetNonAttachedStyle() |
| 287 : data_.node_layout_data_->GetNonAttachedStyle(); |
| 288 } |
| 289 |
267 // Other methods (not part of DOM) | 290 // Other methods (not part of DOM) |
268 | 291 |
269 bool IsElementNode() const { return GetFlag(kIsElementFlag); } | 292 bool IsElementNode() const { return GetFlag(kIsElementFlag); } |
270 bool IsContainerNode() const { return GetFlag(kIsContainerFlag); } | 293 bool IsContainerNode() const { return GetFlag(kIsContainerFlag); } |
271 bool IsTextNode() const { return GetFlag(kIsTextFlag); } | 294 bool IsTextNode() const { return GetFlag(kIsTextFlag); } |
272 bool IsHTMLElement() const { return GetFlag(kIsHTMLFlag); } | 295 bool IsHTMLElement() const { return GetFlag(kIsHTMLFlag); } |
273 bool IsSVGElement() const { return GetFlag(kIsSVGFlag); } | 296 bool IsSVGElement() const { return GetFlag(kIsSVGFlag); } |
274 | 297 |
275 DISABLE_CFI_PERF bool IsPseudoElement() const { | 298 DISABLE_CFI_PERF bool IsPseudoElement() const { |
276 return GetPseudoId() != kPseudoIdNone; | 299 return GetPseudoId() != kPseudoIdNone; |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 } // namespace blink | 1037 } // namespace blink |
1015 | 1038 |
1016 #ifndef NDEBUG | 1039 #ifndef NDEBUG |
1017 // Outside the WebCore namespace for ease of invocation from gdb. | 1040 // Outside the WebCore namespace for ease of invocation from gdb. |
1018 void showNode(const blink::Node*); | 1041 void showNode(const blink::Node*); |
1019 void showTree(const blink::Node*); | 1042 void showTree(const blink::Node*); |
1020 void showNodePath(const blink::Node*); | 1043 void showNodePath(const blink::Node*); |
1021 #endif | 1044 #endif |
1022 | 1045 |
1023 #endif // Node_h | 1046 #endif // Node_h |
OLD | NEW |