OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
3 * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved. |
4 * Copyright (C) 2011 Igalia S.L. | 4 * Copyright (C) 2011 Igalia S.L. |
5 * Copyright (C) 2011 Motorola Mobility. All rights reserved. | 5 * Copyright (C) 2011 Motorola Mobility. All rights reserved. |
6 * | 6 * |
7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
9 * are met: | 9 * are met: |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 MarkupAccumulator::appendCharactersReplacingEntities(buffer, content, 0,
content.length(), EntityMaskInPCDATA); | 136 MarkupAccumulator::appendCharactersReplacingEntities(buffer, content, 0,
content.length(), EntityMaskInPCDATA); |
137 out.append(convertHTMLTextToInterchangeFormat(buffer.toString(), text)); | 137 out.append(convertHTMLTextToInterchangeFormat(buffer.toString(), text)); |
138 } | 138 } |
139 | 139 |
140 if (wrappingSpan) | 140 if (wrappingSpan) |
141 out.append(styleNodeCloseTag(false)); | 141 out.append(styleNodeCloseTag(false)); |
142 } | 142 } |
143 | 143 |
144 void StyledMarkupAccumulator::appendElement(StringBuilder& out, Element& element
, Namespaces*) | 144 void StyledMarkupAccumulator::appendElement(StringBuilder& out, Element& element
, Namespaces*) |
145 { | 145 { |
146 appendElement(out, element, false, DoesFullySelectNode); | 146 appendElement(out, element, AddDisplayInline::DoesNotAdd, RangeFullySelectsN
ode::DoesSelect); |
147 } | 147 } |
148 | 148 |
149 void StyledMarkupAccumulator::appendElement(StringBuilder& out, Element& element
, bool addDisplayInline, StyledMarkupAccumulator::RangeFullySelectsNode rangeFul
lySelectsNode) | 149 void StyledMarkupAccumulator::appendElement(StringBuilder& out, Element& element
, AddDisplayInline addDisplayInline, RangeFullySelectsNode rangeFullySelectsNode
) |
150 { | 150 { |
151 const bool documentIsHTML = element.document().isHTMLDocument(); | 151 const bool documentIsHTML = element.document().isHTMLDocument(); |
152 m_accumulator.appendOpenTag(out, element, 0); | 152 m_accumulator.appendOpenTag(out, element, 0); |
153 | 153 |
154 const bool shouldAnnotateOrForceInline = element.isHTMLElement() && (shouldA
nnotate() || addDisplayInline); | 154 const bool shouldAnnotateOrForceInline = element.isHTMLElement() && (shouldA
nnotate() || addDisplayInline == AddDisplayInline::DoesAdd); |
155 const bool shouldOverrideStyleAttr = shouldAnnotateOrForceInline || shouldAp
plyWrappingStyle(element); | 155 const bool shouldOverrideStyleAttr = shouldAnnotateOrForceInline || shouldAp
plyWrappingStyle(element); |
156 | 156 |
157 AttributeCollection attributes = element.attributes(); | 157 AttributeCollection attributes = element.attributes(); |
158 for (const auto& attribute : attributes) { | 158 for (const auto& attribute : attributes) { |
159 // We'll handle the style attribute separately, below. | 159 // We'll handle the style attribute separately, below. |
160 if (attribute.name() == styleAttr && shouldOverrideStyleAttr) | 160 if (attribute.name() == styleAttr && shouldOverrideStyleAttr) |
161 continue; | 161 continue; |
162 m_accumulator.appendAttribute(out, element, attribute, 0); | 162 m_accumulator.appendAttribute(out, element, attribute, 0); |
163 } | 163 } |
164 | 164 |
165 if (shouldOverrideStyleAttr) { | 165 if (shouldOverrideStyleAttr) { |
166 RefPtrWillBeRawPtr<EditingStyle> newInlineStyle = nullptr; | 166 RefPtrWillBeRawPtr<EditingStyle> newInlineStyle = nullptr; |
167 | 167 |
168 if (shouldApplyWrappingStyle(element)) { | 168 if (shouldApplyWrappingStyle(element)) { |
169 newInlineStyle = m_wrappingStyle->copy(); | 169 newInlineStyle = m_wrappingStyle->copy(); |
170 newInlineStyle->removePropertiesInElementDefaultStyle(&element); | 170 newInlineStyle->removePropertiesInElementDefaultStyle(&element); |
171 newInlineStyle->removeStyleConflictingWithStyleOfElement(&element); | 171 newInlineStyle->removeStyleConflictingWithStyleOfElement(&element); |
172 } else { | 172 } else { |
173 newInlineStyle = EditingStyle::create(); | 173 newInlineStyle = EditingStyle::create(); |
174 } | 174 } |
175 | 175 |
176 if (element.isStyledElement() && element.inlineStyle()) | 176 if (element.isStyledElement() && element.inlineStyle()) |
177 newInlineStyle->overrideWithStyle(element.inlineStyle()); | 177 newInlineStyle->overrideWithStyle(element.inlineStyle()); |
178 | 178 |
179 if (shouldAnnotateOrForceInline) { | 179 if (shouldAnnotateOrForceInline) { |
180 if (shouldAnnotate()) | 180 if (shouldAnnotate()) |
181 newInlineStyle->mergeStyleFromRulesForSerialization(&toHTMLEleme
nt(element)); | 181 newInlineStyle->mergeStyleFromRulesForSerialization(&toHTMLEleme
nt(element)); |
182 | 182 |
183 if (addDisplayInline) | 183 if (addDisplayInline == AddDisplayInline::DoesAdd) |
184 newInlineStyle->forceInline(); | 184 newInlineStyle->forceInline(); |
185 | 185 |
186 // If the node is not fully selected by the range, then we don't wan
t to keep styles that affect its relationship to the nodes around it | 186 // If the node is not fully selected by the range, then we don't wan
t to keep styles that affect its relationship to the nodes around it |
187 // only the ones that affect it and the nodes within it. | 187 // only the ones that affect it and the nodes within it. |
188 if (rangeFullySelectsNode == DoesNotFullySelectNode && newInlineStyl
e->style()) | 188 if (rangeFullySelectsNode == RangeFullySelectsNode::DoesNotSelect &&
newInlineStyle->style()) |
189 newInlineStyle->style()->removeProperty(CSSPropertyFloat); | 189 newInlineStyle->style()->removeProperty(CSSPropertyFloat); |
190 } | 190 } |
191 | 191 |
192 if (!newInlineStyle->isEmpty()) { | 192 if (!newInlineStyle->isEmpty()) { |
193 out.appendLiteral(" style=\""); | 193 out.appendLiteral(" style=\""); |
194 m_accumulator.appendAttributeValue(out, newInlineStyle->style()->asT
ext(), documentIsHTML); | 194 m_accumulator.appendAttributeValue(out, newInlineStyle->style()->asT
ext(), documentIsHTML); |
195 out.append('\"'); | 195 out.append('\"'); |
196 } | 196 } |
197 } | 197 } |
198 | 198 |
199 m_accumulator.appendCloseTag(out, element); | 199 m_accumulator.appendCloseTag(out, element); |
200 } | 200 } |
201 | 201 |
202 void StyledMarkupAccumulator::appendStyleNodeOpenTag(StringBuilder& out, StylePr
opertySet* style, bool isBlock) | 202 void StyledMarkupAccumulator::appendStyleNodeOpenTag(StringBuilder& out, StylePr
opertySet* style, StyleTagType isBlock) |
203 { | 203 { |
204 // wrappingStyleForSerialization should have removed -webkit-text-decoration
s-in-effect | 204 // wrappingStyleForSerialization should have removed -webkit-text-decoration
s-in-effect |
205 ASSERT(propertyMissingOrEqualToNone(style, CSSPropertyWebkitTextDecorationsI
nEffect)); | 205 ASSERT(propertyMissingOrEqualToNone(style, CSSPropertyWebkitTextDecorationsI
nEffect)); |
206 if (isBlock) | 206 if (isBlock == StyleTagType::Block) |
207 out.appendLiteral("<div style=\""); | 207 out.appendLiteral("<div style=\""); |
208 else | 208 else |
209 out.appendLiteral("<span style=\""); | 209 out.appendLiteral("<span style=\""); |
210 ASSERT(m_document); | 210 ASSERT(m_document); |
211 m_accumulator.appendAttributeValue(out, style->asText(), m_document->isHTMLD
ocument()); | 211 m_accumulator.appendAttributeValue(out, style->asText(), m_document->isHTMLD
ocument()); |
212 out.appendLiteral("\">"); | 212 out.appendLiteral("\">"); |
213 } | 213 } |
214 | 214 |
215 void StyledMarkupAccumulator::concatenateMarkup(StringBuilder& result) const | 215 void StyledMarkupAccumulator::concatenateMarkup(StringBuilder& result) const |
216 { | 216 { |
(...skipping 30 matching lines...) Expand all Loading... |
247 return m_highestNodeToBeSerialized && m_highestNodeToBeSerialized->parentNod
e() == node.parentNode() | 247 return m_highestNodeToBeSerialized && m_highestNodeToBeSerialized->parentNod
e() == node.parentNode() |
248 && m_wrappingStyle && m_wrappingStyle->style(); | 248 && m_wrappingStyle && m_wrappingStyle->style(); |
249 } | 249 } |
250 | 250 |
251 bool StyledMarkupAccumulator::shouldAnnotate() const | 251 bool StyledMarkupAccumulator::shouldAnnotate() const |
252 { | 252 { |
253 return m_shouldAnnotate == AnnotateForInterchange; | 253 return m_shouldAnnotate == AnnotateForInterchange; |
254 } | 254 } |
255 | 255 |
256 } // namespace blink | 256 } // namespace blink |
OLD | NEW |