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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 namespace blink { | 55 namespace blink { |
56 | 56 |
57 using namespace HTMLNames; | 57 using namespace HTMLNames; |
58 | 58 |
59 static String& styleSpanClassString() | 59 static String& styleSpanClassString() |
60 { | 60 { |
61 DEFINE_STATIC_LOCAL(String, styleSpanClassString, ((AppleStyleSpanClass))); | 61 DEFINE_STATIC_LOCAL(String, styleSpanClassString, ((AppleStyleSpanClass))); |
62 return styleSpanClassString; | 62 return styleSpanClassString; |
63 } | 63 } |
64 | 64 |
65 bool isLegacyAppleStyleSpan(const Node* node) | 65 bool isLegacyAppleHTMLSpanElement(const Node* node) |
66 { | 66 { |
67 if (!isHTMLSpanElement(node)) | 67 if (!isHTMLSpanElement(node)) |
68 return false; | 68 return false; |
69 | 69 |
70 const HTMLSpanElement& span = toHTMLSpanElement(*node); | 70 const HTMLSpanElement& span = toHTMLSpanElement(*node); |
71 if (span.getAttribute(classAttr) != styleSpanClassString()) | 71 if (span.getAttribute(classAttr) != styleSpanClassString()) |
72 return false; | 72 return false; |
73 UseCounter::count(span.document(), UseCounter::EditingAppleStyleSpanClass); | 73 UseCounter::count(span.document(), UseCounter::EditingAppleStyleSpanClass); |
74 return true; | 74 return true; |
75 } | 75 } |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 RefPtrWillBeRawPtr<CSSValue> value = inlineStyle->getPropertyCSSValue(CS
SPropertyFontSize); | 413 RefPtrWillBeRawPtr<CSSValue> value = inlineStyle->getPropertyCSSValue(CS
SPropertyFontSize); |
414 if (value) { | 414 if (value) { |
415 element->removeInlineStyleProperty(CSSPropertyFontSize); | 415 element->removeInlineStyleProperty(CSSPropertyFontSize); |
416 currentFontSize = computedFontSize(node); | 416 currentFontSize = computedFontSize(node); |
417 } | 417 } |
418 if (currentFontSize != desiredFontSize) { | 418 if (currentFontSize != desiredFontSize) { |
419 inlineStyle->setProperty(CSSPropertyFontSize, cssValuePool().createV
alue(desiredFontSize, CSSPrimitiveValue::CSS_PX), false); | 419 inlineStyle->setProperty(CSSPropertyFontSize, cssValuePool().createV
alue(desiredFontSize, CSSPrimitiveValue::CSS_PX), false); |
420 setNodeAttribute(element.get(), styleAttr, AtomicString(inlineStyle-
>asText())); | 420 setNodeAttribute(element.get(), styleAttr, AtomicString(inlineStyle-
>asText())); |
421 } | 421 } |
422 if (inlineStyle->isEmpty()) { | 422 if (inlineStyle->isEmpty()) { |
423 removeNodeAttribute(element.get(), styleAttr); | 423 removeElementAttribute(element.get(), styleAttr); |
424 if (isSpanWithoutAttributesOrUnstyledStyleSpan(element.get())) | 424 if (isSpanWithoutAttributesOrUnstyledStyleSpan(element.get())) |
425 unstyledSpans.append(element.release()); | 425 unstyledSpans.append(element.release()); |
426 } | 426 } |
427 } | 427 } |
428 | 428 |
429 size_t size = unstyledSpans.size(); | 429 size_t size = unstyledSpans.size(); |
430 for (size_t i = 0; i < size; ++i) | 430 for (size_t i = 0; i < size; ++i) |
431 removeNodePreservingChildren(unstyledSpans[i].get()); | 431 removeNodePreservingChildren(unstyledSpans[i].get()); |
432 } | 432 } |
433 | 433 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 if (!unicodeBidi || unicodeBidi == CSSValueNormal) | 522 if (!unicodeBidi || unicodeBidi == CSSValueNormal) |
523 continue; | 523 continue; |
524 | 524 |
525 // FIXME: This code should really consider the mapped attribute 'dir', t
he inline style declaration, | 525 // FIXME: This code should really consider the mapped attribute 'dir', t
he inline style declaration, |
526 // and all matching style rules in order to determine how to best set th
e unicode-bidi property to 'normal'. | 526 // and all matching style rules in order to determine how to best set th
e unicode-bidi property to 'normal'. |
527 // For now, it assumes that if the 'dir' attribute is present, then remo
ving it will suffice, and | 527 // For now, it assumes that if the 'dir' attribute is present, then remo
ving it will suffice, and |
528 // otherwise it sets the property in the inline style declaration. | 528 // otherwise it sets the property in the inline style declaration. |
529 if (element->hasAttribute(dirAttr)) { | 529 if (element->hasAttribute(dirAttr)) { |
530 // FIXME: If this is a BDO element, we should probably just remove i
t if it has no | 530 // FIXME: If this is a BDO element, we should probably just remove i
t if it has no |
531 // other attributes, like we (should) do with B and I elements. | 531 // other attributes, like we (should) do with B and I elements. |
532 removeNodeAttribute(element, dirAttr); | 532 removeElementAttribute(element, dirAttr); |
533 } else { | 533 } else { |
534 RefPtrWillBeRawPtr<MutableStylePropertySet> inlineStyle = copyStyleO
rCreateEmpty(element->inlineStyle()); | 534 RefPtrWillBeRawPtr<MutableStylePropertySet> inlineStyle = copyStyleO
rCreateEmpty(element->inlineStyle()); |
535 inlineStyle->setProperty(CSSPropertyUnicodeBidi, CSSValueNormal); | 535 inlineStyle->setProperty(CSSPropertyUnicodeBidi, CSSValueNormal); |
536 inlineStyle->removeProperty(CSSPropertyDirection); | 536 inlineStyle->removeProperty(CSSPropertyDirection); |
537 setNodeAttribute(element, styleAttr, AtomicString(inlineStyle->asTex
t())); | 537 setNodeAttribute(element, styleAttr, AtomicString(inlineStyle->asTex
t())); |
538 if (isSpanWithoutAttributesOrUnstyledStyleSpan(element)) | 538 if (isSpanWithoutAttributesOrUnstyledStyleSpan(element)) |
539 removeNodePreservingChildren(element); | 539 removeNodePreservingChildren(element); |
540 } | 540 } |
541 } | 541 } |
542 } | 542 } |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
959 return true; | 959 return true; |
960 } | 960 } |
961 | 961 |
962 // unicode-bidi and direction are pushed down separately so don't push down
with other styles | 962 // unicode-bidi and direction are pushed down separately so don't push down
with other styles |
963 Vector<QualifiedName> attributes; | 963 Vector<QualifiedName> attributes; |
964 if (!style->extractConflictingImplicitStyleOfAttributes(element, extractedSt
yle ? EditingStyle::PreserveWritingDirection : EditingStyle::DoNotPreserveWritin
gDirection, | 964 if (!style->extractConflictingImplicitStyleOfAttributes(element, extractedSt
yle ? EditingStyle::PreserveWritingDirection : EditingStyle::DoNotPreserveWritin
gDirection, |
965 extractedStyle, attributes, mode == RemoveAlways ? EditingStyle::Extract
MatchingStyle : EditingStyle::DoNotExtractMatchingStyle)) | 965 extractedStyle, attributes, mode == RemoveAlways ? EditingStyle::Extract
MatchingStyle : EditingStyle::DoNotExtractMatchingStyle)) |
966 return false; | 966 return false; |
967 | 967 |
968 for (size_t i = 0; i < attributes.size(); i++) | 968 for (size_t i = 0; i < attributes.size(); i++) |
969 removeNodeAttribute(element, attributes[i]); | 969 removeElementAttribute(element, attributes[i]); |
970 | 970 |
971 if (isEmptyFontTag(element) || isSpanWithoutAttributesOrUnstyledStyleSpan(el
ement)) | 971 if (isEmptyFontTag(element) || isSpanWithoutAttributesOrUnstyledStyleSpan(el
ement)) |
972 removeNodePreservingChildren(element); | 972 removeNodePreservingChildren(element); |
973 | 973 |
974 return true; | 974 return true; |
975 } | 975 } |
976 | 976 |
977 bool ApplyStyleCommand::removeCSSStyle(EditingStyle* style, HTMLElement* element
, InlineStyleRemovalMode mode, EditingStyle* extractedStyle) | 977 bool ApplyStyleCommand::removeCSSStyle(EditingStyle* style, HTMLElement* element
, InlineStyleRemovalMode mode, EditingStyle* extractedStyle) |
978 { | 978 { |
979 ASSERT(style); | 979 ASSERT(style); |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1572 void ApplyStyleCommand::trace(Visitor* visitor) | 1572 void ApplyStyleCommand::trace(Visitor* visitor) |
1573 { | 1573 { |
1574 visitor->trace(m_style); | 1574 visitor->trace(m_style); |
1575 visitor->trace(m_start); | 1575 visitor->trace(m_start); |
1576 visitor->trace(m_end); | 1576 visitor->trace(m_end); |
1577 visitor->trace(m_styledInlineElement); | 1577 visitor->trace(m_styledInlineElement); |
1578 CompositeEditCommand::trace(visitor); | 1578 CompositeEditCommand::trace(visitor); |
1579 } | 1579 } |
1580 | 1580 |
1581 } | 1581 } |
OLD | NEW |