Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 6 * Copyright (C) 2006 Samuel Weinig (sam@webkit.org) | 6 * Copyright (C) 2006 Samuel Weinig (sam@webkit.org) |
| 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 226 | 226 |
| 227 PassRefPtr<CSSStyleSheet> DOMImplementation::createCSSStyleSheet(const String&, const String& media) | 227 PassRefPtr<CSSStyleSheet> DOMImplementation::createCSSStyleSheet(const String&, const String& media) |
| 228 { | 228 { |
| 229 // FIXME: Title should be set. | 229 // FIXME: Title should be set. |
| 230 // FIXME: Media could have wrong syntax, in which case we should generate an exception. | 230 // FIXME: Media could have wrong syntax, in which case we should generate an exception. |
| 231 RefPtr<CSSStyleSheet> sheet = CSSStyleSheet::create(StyleSheetContents::crea te()); | 231 RefPtr<CSSStyleSheet> sheet = CSSStyleSheet::create(StyleSheetContents::crea te()); |
| 232 sheet->setMediaQueries(MediaQuerySet::create(media)); | 232 sheet->setMediaQueries(MediaQuerySet::create(media)); |
| 233 return sheet; | 233 return sheet; |
| 234 } | 234 } |
| 235 | 235 |
| 236 static bool equalToUpperCaseASCIIIgnoringCase(char asciiUpper, UChar u) | |
| 237 { | |
| 238 return static_cast<UChar>(asciiUpper) == (u & static_cast<UChar>(~0x20)); | |
|
jochen (gone - plz use gerrit)
2014/01/03 11:31:09
nit. use toASCIIUpper()
| |
| 239 } | |
| 240 | |
| 236 bool DOMImplementation::isXMLMIMEType(const String& mimeType) | 241 bool DOMImplementation::isXMLMIMEType(const String& mimeType) |
| 237 { | 242 { |
| 238 if (mimeType == "text/xml" || mimeType == "application/xml" || mimeType == " text/xsl") | 243 if (equalIgnoringCase(mimeType, "text/xml") |
| 244 || equalIgnoringCase(mimeType, "application/xml") | |
| 245 || equalIgnoringCase(mimeType, "text/xsl")) | |
| 239 return true; | 246 return true; |
| 240 | 247 |
| 241 // Per RFCs 3023 and 2045 a mime type is of the form: | 248 // Per RFCs 3023 and 2045, an XML MIME type is of the form: |
| 242 // ^[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]+/[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]+\+xml $ | 249 // ^[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]+/[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]+\+xml $ |
| 243 | 250 |
| 244 int length = mimeType.length(); | 251 int length = mimeType.length(); |
| 245 if (length < 7) | 252 if (length < 7) |
| 246 return false; | 253 return false; |
| 247 | 254 |
| 248 if (mimeType[0] == '/' || | 255 if (mimeType[0] == '/' |
| 249 mimeType[length - 5] == '/' || | 256 || mimeType[length - 5] == '/' |
| 250 mimeType[length - 4] != '+' || | 257 || mimeType[length - 4] != '+' |
| 251 mimeType[length - 3] != 'x' || | 258 || !equalToUpperCaseASCIIIgnoringCase('X', mimeType[length - 3]) |
|
jochen (gone - plz use gerrit)
2014/01/03 11:31:09
why not !mimeType.endsWith("+xml", true)
sof
2014/01/03 13:51:02
Nice; switched to this simpler form instead (remov
| |
| 252 mimeType[length - 2] != 'm' || | 259 || !equalToUpperCaseASCIIIgnoringCase('M', mimeType[length - 2]) |
| 253 mimeType[length - 1] != 'l') | 260 || !equalToUpperCaseASCIIIgnoringCase('L', mimeType[length - 1])) |
| 254 return false; | 261 return false; |
| 255 | 262 |
| 256 bool hasSlash = false; | 263 bool hasSlash = false; |
| 257 for (int i = 0; i < length - 4; ++i) { | 264 for (int i = 0; i < length - 4; ++i) { |
| 258 UChar ch = mimeType[i]; | 265 UChar ch = mimeType[i]; |
| 259 if (ch >= '0' && ch <= '9') | 266 if (ch >= '0' && ch <= '9') |
| 260 continue; | 267 continue; |
| 261 if (ch >= 'a' && ch <= 'z') | 268 if (ch >= 'a' && ch <= 'z') |
| 262 continue; | 269 continue; |
| 263 if (ch >= 'A' && ch <= 'Z') | 270 if (ch >= 'A' && ch <= 'Z') |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 380 return TextDocument::create(init); | 387 return TextDocument::create(init); |
| 381 if (type == "image/svg+xml") | 388 if (type == "image/svg+xml") |
| 382 return SVGDocument::create(init); | 389 return SVGDocument::create(init); |
| 383 if (isXMLMIMEType(type)) | 390 if (isXMLMIMEType(type)) |
| 384 return Document::create(init); | 391 return Document::create(init); |
| 385 | 392 |
| 386 return HTMLDocument::create(init); | 393 return HTMLDocument::create(init); |
| 387 } | 394 } |
| 388 | 395 |
| 389 } | 396 } |
| OLD | NEW |