OLD | NEW |
1 /* | 1 /* |
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved. | 3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved. |
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 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 // If we're loading a stylesheet cross-origin, and the MIME type is not stan
dard, require the CSS | 286 // If we're loading a stylesheet cross-origin, and the MIME type is not stan
dard, require the CSS |
287 // to at least start with a syntactically valid CSS rule. | 287 // to at least start with a syntactically valid CSS rule. |
288 // This prevents an attacker playing games by injecting CSS strings into HTM
L, XML, JSON, etc. etc. | 288 // This prevents an attacker playing games by injecting CSS strings into HTM
L, XML, JSON, etc. etc. |
289 if (!hasValidMIMEType && !hasSyntacticallyValidCSSHeader()) { | 289 if (!hasValidMIMEType && !hasSyntacticallyValidCSSHeader()) { |
290 bool isCrossOriginCSS = !securityOrigin || !securityOrigin->canRequest(b
aseURL()); | 290 bool isCrossOriginCSS = !securityOrigin || !securityOrigin->canRequest(b
aseURL()); |
291 if (isCrossOriginCSS) { | 291 if (isCrossOriginCSS) { |
292 clearRules(); | 292 clearRules(); |
293 return; | 293 return; |
294 } | 294 } |
295 } | 295 } |
296 if (!quirksMode && m_parserContext.needsSiteSpecificQuirks) { | |
297 // Work around <https://bugs.webkit.org/show_bug.cgi?id=28350>. | |
298 DEFINE_STATIC_LOCAL(const String, mediaWikiKHTMLFixesStyleSheet, ("/* KH
TML fix stylesheet */\n/* work around the horizontal scrollbars */\n#column-cont
ent { margin-left: 0; }\n\n")); | |
299 // There are two variants of KHTMLFixes.css. One is equal to mediaWikiKH
TMLFixesStyleSheet, | |
300 // while the other lacks the second trailing newline. | |
301 if (baseURL().string().endsWith("/KHTMLFixes.css") && !sheetText.isNull(
) && mediaWikiKHTMLFixesStyleSheet.startsWith(sheetText) | |
302 && sheetText.length() >= mediaWikiKHTMLFixesStyleSheet.length() - 1) | |
303 clearRules(); | |
304 } | |
305 } | 296 } |
306 | 297 |
307 bool StyleSheetContents::parseString(const String& sheetText) | 298 bool StyleSheetContents::parseString(const String& sheetText) |
308 { | 299 { |
309 return parseStringAtPosition(sheetText, TextPosition::minimumPosition(), fal
se); | 300 return parseStringAtPosition(sheetText, TextPosition::minimumPosition(), fal
se); |
310 } | 301 } |
311 | 302 |
312 bool StyleSheetContents::parseStringAtPosition(const String& sheetText, const Te
xtPosition& startPosition, bool createdByParser) | 303 bool StyleSheetContents::parseStringAtPosition(const String& sheetText, const Te
xtPosition& startPosition, bool createdByParser) |
313 { | 304 { |
314 CSSParser p(parserContext(), UseCounter::getFrom(this)); | 305 CSSParser p(parserContext(), UseCounter::getFrom(this)); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 m_isInMemoryCache = false; | 495 m_isInMemoryCache = false; |
505 } | 496 } |
506 | 497 |
507 void StyleSheetContents::shrinkToFit() | 498 void StyleSheetContents::shrinkToFit() |
508 { | 499 { |
509 m_importRules.shrinkToFit(); | 500 m_importRules.shrinkToFit(); |
510 m_childRules.shrinkToFit(); | 501 m_childRules.shrinkToFit(); |
511 } | 502 } |
512 | 503 |
513 } | 504 } |
OLD | NEW |