151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)/* 251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2003 Lars Knoll (knoll@kde.org) 351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) 851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. 951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Copyright (C) 2012 Intel Corporation. All rights reserved. 1051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * 1151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * This library is free software; you can redistribute it and/or 1251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * modify it under the terms of the GNU Library General Public 1351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * License as published by the Free Software Foundation; either 1451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * version 2 of the License, or (at your option) any later version. 1551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * 1651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * This library is distributed in the hope that it will be useful, 1751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of 1851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Library General Public License for more details. 2051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * 2151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * You should have received a copy of the GNU Library General Public License 2251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * along with this library; see the file COPYING.LIB. If not, write to 2351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 2451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * Boston, MA 02110-1301, USA. 2551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) */ 2651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 2751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "config.h" 28e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "core/css/parser/CSSParserMode.h" 2951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 3051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "core/dom/Document.h" 3109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/frame/Settings.h" 3251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 3451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)CSSParserContext::CSSParserContext(CSSParserMode mode, UseCounter* useCounter) 3651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) : m_mode(mode) 3751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) , m_isHTMLDocument(false) 3851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) , m_useLegacyBackgroundSizeShorthandBehavior(false) 3909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_useCounter(useCounter) 4051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles){ 4151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 4251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 4309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)CSSParserContext::CSSParserContext(const Document& document, UseCounter* useCounter, const KURL& baseURL, const String& charset) 4451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) : m_baseURL(baseURL.isNull() ? document.baseURL() : baseURL) 4551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) , m_charset(charset) 4651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) , m_mode(document.inQuirksMode() ? HTMLQuirksMode : HTMLStandardMode) 47f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) , m_referrer(m_baseURL.strippedForUseAsReferrer(), document.referrerPolicy()) 4851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) , m_isHTMLDocument(document.isHTMLDocument()) 4951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) , m_useLegacyBackgroundSizeShorthandBehavior(document.settings() ? document.settings()->useLegacyBackgroundSizeShorthandBehavior() : false) 5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_useCounter(useCounter) 5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)CSSParserContext::CSSParserContext(const CSSParserContext& other, UseCounter* useCounter) 5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) : m_baseURL(other.m_baseURL) 5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_charset(other.m_charset) 5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_mode(other.m_mode) 58f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) , m_referrer(other.m_referrer) 5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_isHTMLDocument(other.m_isHTMLDocument) 6009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_useLegacyBackgroundSizeShorthandBehavior(other.m_useLegacyBackgroundSizeShorthandBehavior) 6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_useCounter(useCounter) 6251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles){ 6351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 6451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 6551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)bool CSSParserContext::operator==(const CSSParserContext& other) const 6651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles){ 6751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) return m_baseURL == other.m_baseURL 6851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) && m_charset == other.m_charset 6951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) && m_mode == other.m_mode 7051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) && m_isHTMLDocument == other.m_isHTMLDocument 7151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) && m_useLegacyBackgroundSizeShorthandBehavior == other.m_useLegacyBackgroundSizeShorthandBehavior; 7251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 7351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 7451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)const CSSParserContext& strictCSSParserContext() 7551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles){ 7609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) DEFINE_STATIC_LOCAL(CSSParserContext, strictContext, (HTMLStandardMode, 0)); 7751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) return strictContext; 7851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 7951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 8009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)KURL CSSParserContext::completeURL(const String& url) const 8109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (url.isNull()) 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return KURL(); 8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (charset().isEmpty()) 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return KURL(baseURL(), url); 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return KURL(baseURL(), url, charset()); 8709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 89c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 90