# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/WebKit/Source/core/core.gni")

blink_core_sources("rendering") {
  visibility = [ "//third_party/WebKit/Source/core/*" ]

  sources = [
    "AppliedTextDecoration.cpp",
    "BasicShapes.cpp",
    "BorderEdge.cpp",
    "BorderEdge.h",
    "BorderImageLength.h",
    "BorderImageLengthBox.h",
    "CachedUAStyle.h",
    "ClipPathOperation.h",
    "ComputedStyle.cpp",
    "ComputedStyle.h",
    "ContentData.cpp",
    "CounterDirectives.cpp",
    "DataEquivalency.h",
    "DataPersistent.h",
    "DataRef.h",
    "FillLayer.cpp",
    "GridArea.h",
    "GridPositionsResolver.cpp",
    "GridPositionsResolver.h",
    "NinePieceImage.cpp",
    "QuotesData.cpp",
    "QuotesData.h",
    "ShadowData.cpp",
    "ShadowData.h",
    "ShadowList.cpp",
    "ShadowList.h",
    "StyleBackgroundData.cpp",
    "StyleBoxData.cpp",
    "StyleContentAlignmentData.h",
    "StyleDeprecatedFlexibleBoxData.cpp",
    "StyleFetchedImage.cpp",
    "StyleFetchedImageSet.cpp",
    "StyleFilterData.cpp",
    "StyleFlexibleBoxData.cpp",
    "StyleGeneratedImage.cpp",
    "StyleGridData.cpp",
    "StyleGridItemData.cpp",
    "StyleImage.cpp",
    "StyleInheritedData.cpp",
    "StyleInheritedVariables.cpp",
    "StyleInheritedVariables.h",
    "StyleInvalidImage.h",
    "StyleMotionData.cpp",
    "StyleMotionData.h",
    "StyleMultiColData.cpp",
    "StyleNonInheritedVariables.cpp",
    "StyleNonInheritedVariables.h",
    "StyleOffsetRotation.h",
    "StylePath.cpp",
    "StylePath.h",
    "StylePendingImage.h",
    "StyleRareInheritedData.cpp",
    "StyleRareNonInheritedData.cpp",
    "StyleScrollSnapData.cpp",
    "StyleScrollSnapData.h",
    "StyleSelfAlignmentData.h",
    "StyleSurroundData.cpp",
    "StyleTransformData.cpp",
    "StyleVisualData.cpp",
    "StyleWillChangeData.cpp",
    "TextSizeAdjust.h",
  ]
  configs += [
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
  ]
}

blink_core_sources("svg") {
  sources = [
    "SVGComputedStyle.cpp",
    "SVGComputedStyleDefs.cpp",
  ]
  configs += [
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
  ]
}
