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

Side by Side Diff: third_party/WebKit/Source/core/css/CSSMarkup.cpp

Issue 1889143003: Improve named grid areas parsing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patch for landing Created 4 years, 8 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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. 8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. 9 * Copyright (C) 2012 Intel Corporation. All rights reserved.
10 * 10 *
11 * This library is free software; you can redistribute it and/or 11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Library General Public 12 * modify it under the terms of the GNU Library General Public
13 * License as published by the Free Software Foundation; either 13 * License as published by the Free Software Foundation; either
14 * version 2 of the License, or (at your option) any later version. 14 * version 2 of the License, or (at your option) any later version.
15 * 15 *
16 * This library is distributed in the hope that it will be useful, 16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Library General Public License for more details. 19 * Library General Public License for more details.
20 * 20 *
21 * You should have received a copy of the GNU Library General Public License 21 * You should have received a copy of the GNU Library General Public License
22 * along with this library; see the file COPYING.LIB. If not, write to 22 * along with this library; see the file COPYING.LIB. If not, write to
23 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 23 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24 * Boston, MA 02110-1301, USA. 24 * Boston, MA 02110-1301, USA.
25 */ 25 */
26 26
27 #include "core/css/CSSMarkup.h" 27 #include "core/css/CSSMarkup.h"
28 28
29 #include "core/css/parser/CSSParserIdioms.h"
29 #include "wtf/HexNumber.h" 30 #include "wtf/HexNumber.h"
30 #include "wtf/text/StringBuffer.h" 31 #include "wtf/text/StringBuffer.h"
31 #include "wtf/text/StringBuilder.h" 32 #include "wtf/text/StringBuilder.h"
32 33
33 namespace blink { 34 namespace blink {
34 35
35 template <typename CharacterType> 36 template <typename CharacterType>
36 static inline bool isCSSTokenizerIdentifier(const CharacterType* characters, uns igned length) 37 static inline bool isCSSTokenizerIdentifier(const CharacterType* characters, uns igned length)
37 { 38 {
38 const CharacterType* end = characters + length; 39 const CharacterType* end = characters + length;
39 40
40 // -? 41 // -?
41 if (characters != end && characters[0] == '-') 42 if (characters != end && characters[0] == '-')
42 ++characters; 43 ++characters;
43 44
44 // {nmstart} 45 // {nmstart}
45 if (characters == end || !(characters[0] == '_' || characters[0] >= 128 || i sASCIIAlpha(characters[0]))) 46 if (characters == end || !isNameStartCodePoint(characters[0]))
46 return false; 47 return false;
47 ++characters; 48 ++characters;
48 49
49 // {nmchar}* 50 // {nmchar}*
50 for (; characters != end; ++characters) { 51 for (; characters != end; ++characters) {
51 if (!(characters[0] == '_' || characters[0] == '-' || characters[0] >= 1 28 || isASCIIAlphanumeric(characters[0]))) 52 if (!isNameCodePoint(characters[0]))
52 return false; 53 return false;
53 } 54 }
54 55
55 return true; 56 return true;
56 } 57 }
57 58
58 // "ident" from the CSS tokenizer, minus backslash-escape sequences 59 // "ident" from the CSS tokenizer, minus backslash-escape sequences
59 static bool isCSSTokenizerIdentifier(const String& string) 60 static bool isCSSTokenizerIdentifier(const String& string)
60 { 61 {
61 unsigned length = string.length(); 62 unsigned length = string.length();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 { 149 {
149 return "url(" + serializeString(string) + ")"; 150 return "url(" + serializeString(string) + ")";
150 } 151 }
151 152
152 String serializeFontFamily(const String& string) 153 String serializeFontFamily(const String& string)
153 { 154 {
154 return isCSSTokenizerIdentifier(string) ? string : serializeString(string); 155 return isCSSTokenizerIdentifier(string) ? string : serializeString(string);
155 } 156 }
156 157
157 } // namespace blink 158 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698