OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010 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 |
11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
12 * | 12 * |
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y | 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y |
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y | 16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y |
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N | 19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N |
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
23 */ | 23 */ |
24 | 24 |
25 #ifndef HTMLParserIdioms_h | 25 #ifndef HTMLParserIdioms_h |
26 #define HTMLParserIdioms_h | 26 #define HTMLParserIdioms_h |
27 | 27 |
28 #include "core/dom/QualifiedName.h" | 28 #include "core/dom/QualifiedName.h" |
29 #include "core/html/parser/HTMLIdentifier.h" | |
30 #include "platform/Decimal.h" | 29 #include "platform/Decimal.h" |
31 #include "wtf/Forward.h" | 30 #include "wtf/Forward.h" |
32 #include "wtf/text/WTFString.h" | 31 #include "wtf/text/WTFString.h" |
33 | 32 |
34 namespace WebCore { | 33 namespace WebCore { |
35 | 34 |
36 // Space characters as defined by the HTML specification. | 35 // Space characters as defined by the HTML specification. |
37 bool isHTMLSpace(UChar); | 36 bool isHTMLSpace(UChar); |
38 bool isHTMLLineBreak(UChar); | 37 bool isHTMLLineBreak(UChar); |
39 bool isNotHTMLSpace(UChar); | 38 bool isNotHTMLSpace(UChar); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
91 return character <= '\r' && (character == '\n' || character == '\r'); | 90 return character <= '\r' && (character == '\n' || character == '\r'); |
92 } | 91 } |
93 | 92 |
94 template<typename CharType> | 93 template<typename CharType> |
95 inline bool isNotHTMLSpace(CharType character) | 94 inline bool isNotHTMLSpace(CharType character) |
96 { | 95 { |
97 return !isHTMLSpace<CharType>(character); | 96 return !isHTMLSpace<CharType>(character); |
98 } | 97 } |
99 | 98 |
100 bool threadSafeMatch(const QualifiedName&, const QualifiedName&); | 99 bool threadSafeMatch(const QualifiedName&, const QualifiedName&); |
101 bool threadSafeMatch(const HTMLIdentifier&, const QualifiedName&); | 100 bool threadSafeMatch(const String&, const QualifiedName&); |
102 inline bool threadSafeHTMLNamesMatch(const HTMLIdentifier& tagName, const Qualif iedName& qName) | 101 |
102 StringImpl* findAtomizedStringIfKnown(const UChar* characters, unsigned length); | |
abarth-chromium
2013/12/10 04:48:23
findAtomizedStringIfKnown -> findStringIfStatic
oystein (OOO til 10th of July)
2013/12/10 18:42:27
Done.
| |
103 | |
104 enum CharacterWidth { | |
105 Likely8Bit, | |
106 Force8Bit, | |
107 Force16Bit | |
108 }; | |
109 | |
110 template<size_t inlineCapacity> | |
111 static String createAtomizedString(const Vector<UChar, inlineCapacity>& vector, CharacterWidth width) | |
abarth-chromium
2013/12/10 04:48:23
createAtomizedString isn't a great name because it
oystein (OOO til 10th of July)
2013/12/10 18:42:27
attemptStaticStringCreation?
| |
103 { | 112 { |
104 // When the QualifiedName is known to HTMLIdentifier, | 113 String string(findAtomizedStringIfKnown(vector.data(), vector.size())); |
105 // all we have to do is a pointer compare. | 114 if (string.impl()) |
106 ASSERT(HTMLIdentifier::isKnown(qName.localName().impl())); | 115 return string; |
107 return tagName.asStringImpl() == qName.localName().impl(); | 116 if (width == Likely8Bit) |
117 string = StringImpl::create8BitIfPossible(vector); | |
118 else if (width == Force8Bit) | |
119 string = String::make8BitFrom16BitSource(vector); | |
120 else | |
121 string = String(vector); | |
122 | |
123 return string; | |
108 } | 124 } |
109 | 125 |
110 } | 126 } |
111 | |
112 #endif | 127 #endif |
OLD | NEW |