# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

with Files('**'):
    BUG_COMPONENT = ('Core', 'CSS Parsing and Computation')

with Files('nsComputedDOMStyle.*'):
    BUG_COMPONENT = ('Core', 'DOM: CSS Object Model')

with Files('nsROCSSPrimitiveValue.*'):
    BUG_COMPONENT = ('Core', 'DOM: CSS Object Model')

with Files('CSSRuleList.*'):
    BUG_COMPONENT = ('Core', 'DOM: CSS Object Model')

with Files('nsDOM*'):
    BUG_COMPONENT = ('Core', 'DOM: CSS Object Model')

DIRS += ['xbl-marquee']
TEST_DIRS += ['test']

XPIDL_SOURCES += [
    'nsICSSUnprefixingService.idl',
]

XPIDL_MODULE = 'layout_base'

EXPORTS += [
    '!nsStyleStructList.h',
    'AnimationCommon.h',
    'CounterStyleManager.h',
    'nsAnimationManager.h',
    'nsComputedDOMStylePropertyList.h',
    'nsCSSAnonBoxes.h',
    'nsCSSAnonBoxList.h',
    'nsCSSCounterDescList.h',
    'nsCSSFontDescList.h',
    'nsCSSKeywordList.h',
    'nsCSSKeywords.h',
    'nsCSSParser.h',
    'nsCSSPropAliasList.h',
    'nsCSSPropertyID.h',
    'nsCSSPropertyIDSet.h',
    'nsCSSPropList.h',
    'nsCSSPropLogicalGroupList.h',
    'nsCSSProps.h',
    'nsCSSPseudoClasses.h',
    'nsCSSPseudoClassList.h',
    'nsCSSPseudoElementList.h',
    'nsCSSPseudoElements.h',
    'nsCSSRuleProcessor.h',
    'nsCSSScanner.h',
    'nsCSSValue.h',
    'nsDOMCSSAttrDeclaration.h',
    'nsDOMCSSDeclaration.h',
    'nsDOMCSSRGBColor.h',
    'nsICSSDeclaration.h',
    'nsICSSLoaderObserver.h',
    'nsICSSPseudoComparator.h',
    'nsICSSStyleRuleDOMWrapper.h',
    'nsIStyleRule.h',
    'nsIStyleRuleProcessor.h',
    'nsLayoutStylesheetCache.h',
    'nsRuleData.h',
    'nsRuleNode.h',
    'nsRuleProcessorData.h',
    'nsRuleWalker.h',
    'nsStyleConsts.h',
    'nsStyleContext.h',
    'nsStyleCoord.h',
    'nsStyleSet.h',
    'nsStyleStruct.h',
    'nsStyleStructFwd.h',
    'nsStyleStructInlines.h',
    'nsStyleTransformMatrix.h',
    'nsStyleUtil.h',
]

EXPORTS.mozilla += [
    'AnimationCollection.h',
    'CSSEnabledState.h',
    'CSSStyleSheet.h',
    'CSSVariableDeclarations.h',
    'CSSVariableResolver.h',
    'CSSVariableValues.h',
    'DeclarationBlock.h',
    'DeclarationBlockInlines.h',
    'HandleRefPtr.h',
    'IncrementalClearCOMRuleArray.h',
    'LayerAnimationInfo.h',
    'RuleNodeCacheConditions.h',
    'RuleProcessorCache.h',
    'ServoBindingList.h',
    'ServoBindings.h',
    'ServoBindingTypes.h',
    'ServoDeclarationBlock.h',
    'ServoElementSnapshot.h',
    'ServoStyleSet.h',
    'ServoStyleSheet.h',
    'ServoTypes.h',
    'ServoUtils.h',
    'SheetType.h',
    'StyleAnimationValue.h',
    'StyleBackendType.h',
    'StyleComplexColor.h',
    'StyleContextSource.h',
    'StyleSetHandle.h',
    'StyleSetHandleInlines.h',
    'StyleSheet.h',
    'StyleSheetInfo.h',
    'StyleSheetInlines.h',
    'StyleStructContext.h',
]

EXPORTS.mozilla.dom += [
    'CSS.h',
    'CSSLexer.h',
    'CSSRuleList.h',
    'CSSValue.h',
    'FontFace.h',
    'FontFaceSet.h',
    'FontFaceSetIterator.h',
    'MediaQueryList.h',
]

EXPORTS.mozilla.css += [
    'Declaration.h',
    'ErrorReporter.h',
    'GroupRule.h',
    'ImageLoader.h',
    'ImportRule.h',
    'Loader.h',
    'NameSpaceRule.h',
    'Rule.h',
    'SheetParsingMode.h',
    'StyleRule.h',
]

UNIFIED_SOURCES += [
    'AnimationCollection.cpp',
    'AnimationCommon.cpp',
    'CounterStyleManager.cpp',
    'CSS.cpp',
    'CSSLexer.cpp',
    'CSSRuleList.cpp',
    'CSSStyleSheet.cpp',
    'CSSVariableDeclarations.cpp',
    'CSSVariableResolver.cpp',
    'CSSVariableValues.cpp',
    'Declaration.cpp',
    'ErrorReporter.cpp',
    'FontFace.cpp',
    'FontFaceSet.cpp',
    'FontFaceSetIterator.cpp',
    'ImageLoader.cpp',
    'IncrementalClearCOMRuleArray.cpp',
    'LayerAnimationInfo.cpp',
    'Loader.cpp',
    'MediaQueryList.cpp',
    'nsAnimationManager.cpp',
    'nsComputedDOMStyle.cpp',
    'nsCSSAnonBoxes.cpp',
    'nsCSSDataBlock.cpp',
    'nsCSSKeywords.cpp',
    'nsCSSParser.cpp',
    'nsCSSProps.cpp',
    'nsCSSPseudoClasses.cpp',
    'nsCSSPseudoElements.cpp',
    'nsCSSRules.cpp',
    'nsCSSScanner.cpp',
    'nsCSSValue.cpp',
    'nsDOMCSSAttrDeclaration.cpp',
    'nsDOMCSSDeclaration.cpp',
    'nsDOMCSSRect.cpp',
    'nsDOMCSSRGBColor.cpp',
    'nsDOMCSSValueList.cpp',
    'nsFontFaceLoader.cpp',
    'nsFontFaceUtils.cpp',
    'nsHTMLCSSStyleSheet.cpp',
    'nsHTMLStyleSheet.cpp',
    'nsMediaFeatures.cpp',
    'nsNthIndexCache.cpp',
    'nsROCSSPrimitiveValue.cpp',
    'nsRuleData.cpp',
    'nsRuleNode.cpp',
    'nsStyleContext.cpp',
    'nsStyleCoord.cpp',
    'nsStyleSet.cpp',
    'nsStyleStruct.cpp',
    'nsStyleTransformMatrix.cpp',
    'nsStyleUtil.cpp',
    'nsTransitionManager.cpp',
    'RuleNodeCacheConditions.cpp',
    'RuleProcessorCache.cpp',
    'ServoBindings.cpp',
    'ServoDeclarationBlock.cpp',
    'ServoElementSnapshot.cpp',
    'ServoStyleSet.cpp',
    'ServoStyleSheet.cpp',
    'StyleAnimationValue.cpp',
    'StyleRule.cpp',
    'StyleSheet.cpp',
    'SVGAttrAnimationRuleProcessor.cpp',
]

# nsCSSRuleProcessor.cpp needs to be built separately because it uses plarena.h.
# nsLayoutStylesheetCache.cpp needs to be built separately because it uses
# nsExceptionHandler.h, which includes windows.h.
SOURCES += [
    'nsCSSRuleProcessor.cpp',
    'nsLayoutStylesheetCache.cpp',
]

EXTRA_COMPONENTS += [
    'CSSUnprefixingService.js',
    'CSSUnprefixingService.manifest',
]

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'

LOCAL_INCLUDES += [
    '../base',
    '../generic',
    '../svg',
    '../xul',
    '/dom/base',
    '/dom/html',
    '/dom/xbl',
    '/dom/xul',
    '/image',
]

JAR_MANIFESTS += ['jar.mn']

RESOURCE_FILES += [
    'contenteditable.css',
    'designmode.css',
    'ImageDocument.css',
    'TopLevelImageDocument.css',
    'TopLevelVideoDocument.css',
]

GENERATED_FILES += [
    'nsStyleStructList.h',
]

style_struct_list = GENERATED_FILES['nsStyleStructList.h']
style_struct_list.script = 'generate-stylestructlist.py'

if CONFIG['COMPILE_ENVIRONMENT']:
    GENERATED_FILES += [
        'nsCSSPropsGenerated.inc',
    ]
    css_props = GENERATED_FILES['nsCSSPropsGenerated.inc']
    css_props.script = 'GenerateCSSPropsGenerated.py:generate'
    css_props.inputs = [
        'nsCSSPropsGenerated.inc.in',
        'PythonCSSProps.h',
    ]