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

Side by Side Diff: Source/WebCore/css/CSSParser.cpp

Issue 9615047: Merge 107999 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1025/
Patch Set: Created 8 years, 9 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 Apple Inc. All r ights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights 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 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 9258 matching lines...) Expand 10 before | Expand all | Expand 10 after
9269 return false; 9269 return false;
9270 } 9270 }
9271 } 9271 }
9272 9272
9273 return true; 9273 return true;
9274 } 9274 }
9275 9275
9276 // We use single quotes for now because markup.cpp uses double quotes. 9276 // We use single quotes for now because markup.cpp uses double quotes.
9277 String quoteCSSString(const String& string) 9277 String quoteCSSString(const String& string)
9278 { 9278 {
9279 // This function expands each character to at most 3 characters ('\u0010' -> '\' '1' '0') as well as adds
9280 // 2 quote characters (before and after). Make sure the resulting size (3 * length + 2) will not overflow unsigned.
9281 if (string.length() >= (std::numeric_limits<unsigned>::max() / 3) - 2)
9282 return "";
9283
9279 // For efficiency, we first pre-calculate the length of the quoted string, t hen we build the actual one. 9284 // For efficiency, we first pre-calculate the length of the quoted string, t hen we build the actual one.
9280 // Please see below for the actual logic. 9285 // Please see below for the actual logic.
9281 unsigned quotedStringSize = 2; // Two quotes surrounding the entire string. 9286 unsigned quotedStringSize = 2; // Two quotes surrounding the entire string.
9282 bool afterEscape = false; 9287 bool afterEscape = false;
9283 for (unsigned i = 0; i < string.length(); ++i) { 9288 for (unsigned i = 0; i < string.length(); ++i) {
9284 UChar ch = string[i]; 9289 UChar ch = string[i];
9285 if (ch == '\\' || ch == '\'') { 9290 if (ch == '\\' || ch == '\'') {
9286 quotedStringSize += 2; 9291 quotedStringSize += 2;
9287 afterEscape = false; 9292 afterEscape = false;
9288 } else if (ch < 0x20 || ch == 0x7F) { 9293 } else if (ch < 0x20 || ch == 0x7F) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
9336 { 9341 {
9337 // The tokenizer checks for the construct of an+b. 9342 // The tokenizer checks for the construct of an+b.
9338 // However, since the {ident} rule precedes the {nth} rule, some of those 9343 // However, since the {ident} rule precedes the {nth} rule, some of those
9339 // tokens are identified as string literal. Furthermore we need to accept 9344 // tokens are identified as string literal. Furthermore we need to accept
9340 // "odd" and "even" which does not match to an+b. 9345 // "odd" and "even" which does not match to an+b.
9341 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 9346 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
9342 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 9347 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
9343 } 9348 }
9344 9349
9345 } 9350 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698