OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2005, 2006, 2008, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2005, 2006, 2008, 2009 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 } | 212 } |
213 | 213 |
214 int fontStyle = getIdentifierValue(style, CSSPropertyFontStyle); | 214 int fontStyle = getIdentifierValue(style, CSSPropertyFontStyle); |
215 if (fontStyle == CSSValueItalic || fontStyle == CSSValueOblique) { | 215 if (fontStyle == CSSValueItalic || fontStyle == CSSValueOblique) { |
216 style->removeProperty(CSSPropertyFontStyle); | 216 style->removeProperty(CSSPropertyFontStyle); |
217 m_applyItalic = true; | 217 m_applyItalic = true; |
218 } | 218 } |
219 | 219 |
220 // Assuming reconcileTextDecorationProperties has been called, there should
not be -webkit-text-decorations-in-effect | 220 // Assuming reconcileTextDecorationProperties has been called, there should
not be -webkit-text-decorations-in-effect |
221 // Furthermore, text-decoration: none has been trimmed so that text-decorati
on property is always a CSSValueList. | 221 // Furthermore, text-decoration: none has been trimmed so that text-decorati
on property is always a CSSValueList. |
222 if (RefPtr<CSSValue> textDecoration = style->getPropertyCSSValue(CSSProperty
TextDecoration)) { | 222 RefPtr<CSSValue> textDecoration = style->getPropertyCSSValue(CSSPropertyText
Decoration); |
223 ASSERT(textDecoration->isValueList()); | 223 if (textDecoration && textDecoration->isValueList()) { |
224 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, underline, (CSSPrimitiveV
alue::createIdentifier(CSSValueUnderline))); | 224 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, underline, (CSSPrimitiveV
alue::createIdentifier(CSSValueUnderline))); |
225 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, lineThrough, (CSSPrimitiv
eValue::createIdentifier(CSSValueLineThrough))); | 225 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, lineThrough, (CSSPrimitiv
eValue::createIdentifier(CSSValueLineThrough))); |
226 | 226 |
227 RefPtr<CSSValueList> newTextDecoration = static_cast<CSSValueList*>(text
Decoration.get())->copy(); | 227 RefPtr<CSSValueList> newTextDecoration = static_cast<CSSValueList*>(text
Decoration.get())->copy(); |
228 if (newTextDecoration->removeAll(underline.get())) | 228 if (newTextDecoration->removeAll(underline.get())) |
229 m_applyUnderline = true; | 229 m_applyUnderline = true; |
230 if (newTextDecoration->removeAll(lineThrough.get())) | 230 if (newTextDecoration->removeAll(lineThrough.get())) |
231 m_applyLineThrough = true; | 231 m_applyLineThrough = true; |
232 | 232 |
233 // If trimTextDecorations, delete underline and line-through | 233 // If trimTextDecorations, delete underline and line-through |
(...skipping 1146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1380 // Avoid overriding existing styles of node | 1380 // Avoid overriding existing styles of node |
1381 if (existingInlineStyle) { | 1381 if (existingInlineStyle) { |
1382 newInlineStyle = existingInlineStyle->copy(); | 1382 newInlineStyle = existingInlineStyle->copy(); |
1383 CSSMutableStyleDeclaration::const_iterator end = style->end(); | 1383 CSSMutableStyleDeclaration::const_iterator end = style->end(); |
1384 for (CSSMutableStyleDeclaration::const_iterator it = style->begin();
it != end; ++it) { | 1384 for (CSSMutableStyleDeclaration::const_iterator it = style->begin();
it != end; ++it) { |
1385 ExceptionCode ec; | 1385 ExceptionCode ec; |
1386 if (!existingInlineStyle->getPropertyCSSValue(it->id())) | 1386 if (!existingInlineStyle->getPropertyCSSValue(it->id())) |
1387 newInlineStyle->setProperty(it->id(), it->value()->cssText()
, it->isImportant(), ec); | 1387 newInlineStyle->setProperty(it->id(), it->value()->cssText()
, it->isImportant(), ec); |
1388 | 1388 |
1389 // text-decorations adds up | 1389 // text-decorations adds up |
1390 if (it->id() == CSSPropertyTextDecoration) { | 1390 if (it->id() == CSSPropertyTextDecoration && it->value()->isValu
eList()) { |
1391 ASSERT(it->value()->isValueList()); | |
1392 RefPtr<CSSValue> textDecoration = newInlineStyle->getPropert
yCSSValue(CSSPropertyTextDecoration); | 1391 RefPtr<CSSValue> textDecoration = newInlineStyle->getPropert
yCSSValue(CSSPropertyTextDecoration); |
1393 if (textDecoration) { | 1392 if (textDecoration && textDecoration->isValueList()) { |
1394 ASSERT(textDecoration->isValueList()); | |
1395 CSSValueList* textDecorationOfInlineStyle = static_cast<
CSSValueList*>(textDecoration.get()); | 1393 CSSValueList* textDecorationOfInlineStyle = static_cast<
CSSValueList*>(textDecoration.get()); |
1396 CSSValueList* textDecorationOfStyleApplied = static_cast
<CSSValueList*>(it->value()); | 1394 CSSValueList* textDecorationOfStyleApplied = static_cast
<CSSValueList*>(it->value()); |
1397 | 1395 |
1398 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, underline
, (CSSPrimitiveValue::createIdentifier(CSSValueUnderline))); | 1396 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, underline
, (CSSPrimitiveValue::createIdentifier(CSSValueUnderline))); |
1399 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, lineThrou
gh, (CSSPrimitiveValue::createIdentifier(CSSValueLineThrough))); | 1397 DEFINE_STATIC_LOCAL(RefPtr<CSSPrimitiveValue>, lineThrou
gh, (CSSPrimitiveValue::createIdentifier(CSSValueLineThrough))); |
1400 | 1398 |
1401 if (textDecorationOfStyleApplied->hasValue(underline.get
()) && !textDecorationOfInlineStyle->hasValue(underline.get())) | 1399 if (textDecorationOfStyleApplied->hasValue(underline.get
()) && !textDecorationOfInlineStyle->hasValue(underline.get())) |
1402 textDecorationOfInlineStyle->append(underline.get())
; | 1400 textDecorationOfInlineStyle->append(underline.get())
; |
1403 | 1401 |
1404 if (textDecorationOfStyleApplied->hasValue(lineThrough.g
et()) && !textDecorationOfInlineStyle->hasValue(lineThrough.get())) | 1402 if (textDecorationOfStyleApplied->hasValue(lineThrough.g
et()) && !textDecorationOfInlineStyle->hasValue(lineThrough.get())) |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1880 } | 1878 } |
1881 else { | 1879 else { |
1882 child = child->nextSibling(); | 1880 child = child->nextSibling(); |
1883 } | 1881 } |
1884 } | 1882 } |
1885 | 1883 |
1886 updateStartEnd(newStart, newEnd); | 1884 updateStartEnd(newStart, newEnd); |
1887 } | 1885 } |
1888 | 1886 |
1889 } | 1887 } |
OLD | NEW |