Changeset 128363 in webkit
- Timestamp:
- Sep 12, 2012 2:40:26 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r128340 r128363 1 2012-09-11 Michael Saboff <msaboff@apple.com> 2 3 Element::classAttributeChanged should use characters8/16 to find first non-whitespace 4 https://bugs.webkit.org/show_bug.cgi?id=96446 5 6 Reviewed by Benjamin Poulain. 7 8 Added bit size related string accessors to AtomicString to support change. 9 10 * wtf/text/AtomicString.h: 11 (AtomicString): 12 (WTF::AtomicString::is8Bit): 13 (WTF::AtomicString::characters8): 14 (WTF::AtomicString::characters16): 15 1 16 2012-09-12 Michael Saboff <msaboff@apple.com> 2 17 -
trunk/Source/WTF/wtf/text/AtomicString.h
r128300 r128363 87 87 88 88 AtomicStringImpl* impl() const { return static_cast<AtomicStringImpl *>(m_string.impl()); } 89 89 90 bool is8Bit() const { return m_string.is8Bit(); } 90 91 const UChar* characters() const { return m_string.characters(); } 92 const LChar* characters8() const { return m_string.characters8(); } 93 const UChar* characters16() const { return m_string.characters16(); } 91 94 unsigned length() const { return m_string.length(); } 92 95 -
trunk/Source/WebCore/ChangeLog
r128361 r128363 1 2012-09-12 Michael Saboff <msaboff@apple.com> 2 3 Element::classAttributeChanged should use characters8/16 to find first non-whitespace 4 https://bugs.webkit.org/show_bug.cgi?id=96446 5 6 Reviewed by Benjamin Poulain. 7 8 Made two new static templated methods to handle 8 or 16 bit class names. 9 10 No functional change, so no new tests. 11 12 * dom/Element.cpp: 13 (WebCore::classStringHasClassName): 14 (WebCore::Element::classAttributeChanged): 15 1 16 2012-09-12 Adam Barth <abarth@chromium.org> 2 17 -
trunk/Source/WebCore/dom/Element.cpp
r128239 r128363 756 756 } 757 757 758 void Element::classAttributeChanged(const AtomicString& newClassString) 759 { 760 const UChar* characters = newClassString.characters(); 761 unsigned length = newClassString.length(); 762 unsigned i; 763 for (i = 0; i < length; ++i) { 758 template <typename CharacterType> 759 static inline bool classStringHasClassName(const CharacterType* characters, unsigned length) 760 { 761 ASSERT(length > 0); 762 763 unsigned i = 0; 764 do { 764 765 if (isNotHTMLSpace(characters[i])) 765 766 break; 766 } 767 bool hasClass = i < length; 768 if (hasClass) { 767 ++i; 768 } while (i < length); 769 770 return i < length; 771 } 772 773 static inline bool classStringHasClassName(const AtomicString& newClassString) 774 { 775 unsigned length = newClassString.length(); 776 777 if (!length) 778 return false; 779 780 if (newClassString.is8Bit()) 781 return classStringHasClassName(newClassString.characters8(), length); 782 return classStringHasClassName(newClassString.characters16(), length); 783 } 784 785 void Element::classAttributeChanged(const AtomicString& newClassString) 786 { 787 if (classStringHasClassName(newClassString)) { 769 788 const bool shouldFoldCase = document()->inQuirksMode(); 770 789 ensureAttributeData()->setClass(newClassString, shouldFoldCase);
Note: See TracChangeset
for help on using the changeset viewer.