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