# -*- 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']

EXPORTS += [
    '!nsStyleStructList.h',
    'AnimationCommon.h',
    'CounterStyleManager.h',
    'nsAnimationManager.h',
    'nsComputedDOMStylePropertyList.h',
    'nsCSSAnonBoxes.h',
    'nsCSSAnonBoxList.h',
    'nsCSSCounterDescList.h',
    'nsCSSCounterStyleRule.h',
    'nsCSSFontDescList.h',
    'nsCSSFontFaceRule.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',
    'nsIStyleRule.h',
    'nsIStyleRuleProcessor.h',
    'nsLayoutStylesheetCache.h',
    'nsMediaFeatures.h',
    'nsMediaList.h',
    'nsRuleData.h',
    'nsRuleNode.h',
    'nsRuleProcessorData.h',
    'nsRuleWalker.h',
    'nsStyleAutoArray.h',
    'nsStyleConsts.h',
    'nsStyleContext.h',
    'nsStyleContextInlines.h',
    'nsStyleCoord.h',
    'nsStyleSet.h',
    'nsStyleStruct.h',
    'nsStyleStructFwd.h',
    'nsStyleStructInlines.h',
    'nsStyleTransformMatrix.h',
    'nsStyleUtil.h',
]

EXPORTS.mozilla += [
    'AnimationCollection.h',
    'BindingStyleRule.h',
    'CachedInheritingStyles.h',
    'CSSEnabledState.h',
    'CSSStyleSheet.h',
    'CSSVariableDeclarations.h',
    'CSSVariableResolver.h',
    'CSSVariableValues.h',
    'DeclarationBlock.h',
    'DeclarationBlockInlines.h',
    'DocumentStyleRootIterator.h',
    'GeckoStyleContext.h',
    'GenericSpecifiedValues.h',
    'GenericSpecifiedValuesInlines.h',
    'IncrementalClearCOMRuleArray.h',
    'LayerAnimationInfo.h',
    'PostTraversalTask.h',
    'PreloadedStyleSheet.h',
    'RuleNodeCacheConditions.h',
    'RuleProcessorCache.h',
    'ServoArcTypeList.h',
    'ServoBindingList.h',
    'ServoBindings.h',
    'ServoBindingTypes.h',
    'ServoCSSParser.h',
    'ServoCSSRuleList.h',
    'ServoDeclarationBlock.h',
    'ServoDocumentRule.h',
    'ServoElementSnapshot.h',
    'ServoElementSnapshotTable.h',
    'ServoFontFeatureValuesRule.h',
    'ServoImportRule.h',
    'ServoKeyframeRule.h',
    'ServoKeyframesRule.h',
    'ServoMediaList.h',
    'ServoMediaRule.h',
    'ServoNamespaceRule.h',
    'ServoPageRule.h',
    'ServoPropPrefList.h',
    'ServoSpecifiedValues.h',
    'ServoStyleContext.h',
    'ServoStyleContextInlines.h',
    'ServoStyleRule.h',
    'ServoStyleSet.h',
    'ServoStyleSheet.h',
    'ServoSupportsRule.h',
    'ServoTypes.h',
    'ServoUtils.h',
    'SheetType.h',
    'StyleAnimationValue.h',
    'StyleBackendType.h',
    'StyleComplexColor.h',
    'StylePrefs.h',
    'StyleSetHandle.h',
    'StyleSetHandleInlines.h',
    'StyleSheet.h',
    'StyleSheetInfo.h',
    'StyleSheetInlines.h',
    'URLExtraData.h',
]

EXPORTS.mozilla.dom += [
    'CSS.h',
    'CSSFontFeatureValuesRule.h',
    'CSSImportRule.h',
    'CSSKeyframeRule.h',
    'CSSKeyframesRule.h',
    'CSSLexer.h',
    'CSSMediaRule.h',
    'CSSMozDocumentRule.h',
    'CSSNamespaceRule.h',
    'CSSPageRule.h',
    'CSSRuleList.h',
    'CSSSupportsRule.h',
    'CSSValue.h',
    'FontFace.h',
    'FontFaceSet.h',
    'FontFaceSetIterator.h',
    'MediaList.h',
    'MediaQueryList.h',
]

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

UNIFIED_SOURCES += [
    'AnimationCollection.cpp',
    'BindingStyleRule.cpp',
    'CachedInheritingStyles.cpp',
    'CounterStyleManager.cpp',
    'CSS.cpp',
    'CSSFontFeatureValuesRule.cpp',
    'CSSImportRule.cpp',
    'CSSKeyframeRule.cpp',
    'CSSKeyframesRule.cpp',
    'CSSLexer.cpp',
    'CSSMediaRule.cpp',
    'CSSMozDocumentRule.cpp',
    'CSSPageRule.cpp',
    'CSSRuleList.cpp',
    'CSSStyleSheet.cpp',
    'CSSSupportsRule.cpp',
    'CSSVariableDeclarations.cpp',
    'CSSVariableResolver.cpp',
    'CSSVariableValues.cpp',
    'Declaration.cpp',
    'DocumentStyleRootIterator.cpp',
    'ErrorReporter.cpp',
    'FontFace.cpp',
    'FontFaceSet.cpp',
    'FontFaceSetIterator.cpp',
    'GeckoStyleContext.cpp',
    'GroupRule.cpp',
    'ImageLoader.cpp',
    'IncrementalClearCOMRuleArray.cpp',
    'LayerAnimationInfo.cpp',
    'Loader.cpp',
    'MediaList.cpp',
    'MediaQueryList.cpp',
    'nsAnimationManager.cpp',
    'nsComputedDOMStyle.cpp',
    'nsCSSAnonBoxes.cpp',
    'nsCSSCounterStyleRule.cpp',
    'nsCSSDataBlock.cpp',
    'nsCSSFontFaceRule.cpp',
    'nsCSSKeywords.cpp',
    'nsCSSParser.cpp',
    'nsCSSProps.cpp',
    'nsCSSPseudoClasses.cpp',
    'nsCSSRuleProcessor.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',
    'nsMediaList.cpp',
    'nsNthIndexCache.cpp',
    'nsROCSSPrimitiveValue.cpp',
    'nsRuleData.cpp',
    'nsRuleNode.cpp',
    'nsStyleContext.cpp',
    'nsStyleCoord.cpp',
    'nsStyleSet.cpp',
    'nsStyleStruct.cpp',
    'nsStyleTransformMatrix.cpp',
    'nsStyleUtil.cpp',
    'nsTransitionManager.cpp',
    'PostTraversalTask.cpp',
    'PreloadedStyleSheet.cpp',
    'Rule.cpp',
    'RuleNodeCacheConditions.cpp',
    'RuleProcessorCache.cpp',
    'ServoBindings.cpp',
    'ServoCSSParser.cpp',
    'ServoCSSRuleList.cpp',
    'ServoDeclarationBlock.cpp',
    'ServoDocumentRule.cpp',
    'ServoElementSnapshot.cpp',
    'ServoFontFeatureValuesRule.cpp',
    'ServoImportRule.cpp',
    'ServoKeyframeRule.cpp',
    'ServoKeyframesRule.cpp',
    'ServoMediaList.cpp',
    'ServoMediaRule.cpp',
    'ServoNamespaceRule.cpp',
    'ServoPageRule.cpp',
    'ServoSpecifiedValues.cpp',
    'ServoStyleContext.cpp',
    'ServoStyleRule.cpp',
    'ServoStyleSet.cpp',
    'ServoStyleSheet.cpp',
    'ServoSupportsRule.cpp',
    'StreamLoader.cpp',
    'StyleAnimationValue.cpp',
    'StylePrefs.cpp',
    'StyleRule.cpp',
    'StyleSheet.cpp',
    'URLExtraData.cpp',
]

SOURCES += [
    # Both nsCSSPseudoElements.cpp and nsCSSPseudoClasses.cpp defined a
    # 'mozPlaceholder' static atom.
    'nsCSSPseudoElements.cpp',
    # nsLayoutStylesheetCache.cpp uses nsExceptionHandler.h, which includes
    # windows.h.
    'nsLayoutStylesheetCache.cpp',
]

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',
]

CONTENT_ACCESSIBLE_FILES += [
    'ImageDocument.css',
    'res/plaintext.css',
    'res/viewsource.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',
    ]

    CONFIGURE_SUBST_FILES += [
        'bindgen.toml',
    ]
