Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: Source/core/html/parser/HTMLParserIdioms.h

Issue 110843004: Replaced HTMLIdentifier with an atomized string factory function (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Review fixes Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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* findStringIfStatic(const UChar* characters, unsigned length);
103
104 enum CharacterWidth {
105 Likely8Bit,
106 Force8Bit,
107 Force16Bit
108 };
109
110 template<size_t inlineCapacity>
111 static String attemptStaticStringCreation(const Vector<UChar, inlineCapacity>& v ector, CharacterWidth width)
103 { 112 {
104 // When the QualifiedName is known to HTMLIdentifier, 113 String string(findStringIfStatic(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
OLDNEW
« no previous file with comments | « Source/core/html/parser/HTMLIdentifier.cpp ('k') | Source/core/html/parser/HTMLParserIdioms.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698