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

Side by Side Diff: third_party/WebKit/Source/core/css/parser/CSSParserString.h

Issue 1636453002: Use ASCII case-insensitive matching for ident-likes in the CSS parser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Consistent indentation in test. Created 4 years, 10 months 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) 2003 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 unsigned length() const { return m_length; } 74 unsigned length() const { return m_length; }
75 75
76 UChar operator[](unsigned i) const 76 UChar operator[](unsigned i) const
77 { 77 {
78 ASSERT_WITH_SECURITY_IMPLICATION(i < m_length); 78 ASSERT_WITH_SECURITY_IMPLICATION(i < m_length);
79 if (is8Bit()) 79 if (is8Bit())
80 return m_data.characters8[i]; 80 return m_data.characters8[i];
81 return m_data.characters16[i]; 81 return m_data.characters16[i];
82 } 82 }
83 83
84 bool equalIgnoringCase(const char* str) const 84 template<unsigned matchLength>
85 bool equalIgnoringASCIICase(const char (&match)[matchLength]) const
85 { 86 {
86 bool match = is8Bit() ? WTF::equalIgnoringCase(str, characters8(), lengt h()) : WTF::equalIgnoringCase(str, characters16(), length()); 87 if (matchLength - 1 != length())
87 if (!match)
88 return false; 88 return false;
89 ASSERT(strlen(str) >= length()); 89 return is8Bit() ? WTF::equalIgnoringASCIICase(characters8(), match, leng th()) : WTF::equalIgnoringASCIICase(characters16(), match, length());
90 return str[length()] == '\0';
91 } 90 }
92 91
93 operator String() const { return is8Bit() ? String(m_data.characters8, m_len gth) : StringImpl::create8BitIfPossible(m_data.characters16, m_length); } 92 operator String() const { return is8Bit() ? String(m_data.characters8, m_len gth) : StringImpl::create8BitIfPossible(m_data.characters16, m_length); }
94 operator AtomicString() const { return is8Bit() ? AtomicString(m_data.charac ters8, m_length) : AtomicString(m_data.characters16, m_length); } 93 operator AtomicString() const { return is8Bit() ? AtomicString(m_data.charac ters8, m_length) : AtomicString(m_data.characters16, m_length); }
95 94
96 union { 95 union {
97 const LChar* characters8; 96 const LChar* characters8;
98 const UChar* characters16; 97 const UChar* characters16;
99 const void* charactersRaw; 98 const void* charactersRaw;
100 } m_data; 99 } m_data;
101 unsigned m_length; 100 unsigned m_length;
102 bool m_is8Bit; 101 bool m_is8Bit;
103 }; 102 };
104 103
105 } 104 }
106 105
107 #endif 106 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698