// Copyright (C) 2017 Igalia S.L.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.

accessibility/atspi/AccessibilityAtspi.cpp
accessibility/atspi/AccessibilityObjectAtspi.cpp
accessibility/atspi/AccessibilityObjectActionAtspi.cpp
accessibility/atspi/AccessibilityObjectComponentAtspi.cpp
accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp
accessibility/atspi/AccessibilityObjectHyperlinkAtspi.cpp
accessibility/atspi/AccessibilityObjectHypertextAtspi.cpp
accessibility/atspi/AccessibilityObjectImageAtspi.cpp
accessibility/atspi/AccessibilityObjectSelectionAtspi.cpp
accessibility/atspi/AccessibilityObjectTableAtspi.cpp
accessibility/atspi/AccessibilityObjectTableCellAtspi.cpp
accessibility/atspi/AccessibilityObjectTextAtspi.cpp
accessibility/atspi/AccessibilityObjectValueAtspi.cpp
accessibility/atspi/AccessibilityRootAtspi.cpp
accessibility/atspi/AXObjectCacheAtspi.cpp

editing/atspi/FrameSelectionAtspi.cpp

editing/gtk/EditorGtk.cpp
editing/gtk/WebContentReaderGtk.cpp

loader/soup/ResourceLoaderSoup.cpp

page/gtk/DragControllerGtk.cpp

page/linux/ResourceUsageOverlayLinux.cpp
page/linux/ResourceUsageThreadLinux.cpp

page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp
page/scrolling/nicosia/ScrollingStateNodeNicosia.cpp
page/scrolling/nicosia/ScrollingTreeFixedNode.cpp
page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp
page/scrolling/nicosia/ScrollingTreeNicosia.cpp
page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp
page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp
page/scrolling/nicosia/ScrollingTreePositionedNode.cpp
page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp
page/scrolling/nicosia/ScrollingTreeStickyNodeNicosia.cpp

platform/UserAgentQuirks.cpp

platform/adwaita/ScrollbarThemeAdwaita.cpp
platform/adwaita/ThemeAdwaita.cpp

platform/gamepad/manette/ManetteGamepad.cpp
platform/gamepad/manette/ManetteGamepadProvider.cpp

platform/generic/ScrollbarsControllerGeneric.cpp

platform/graphics/ANGLEWebKitBridge.cpp
platform/graphics/GLContext.cpp @no-unify
platform/graphics/PlatformDisplay.cpp @no-unify

platform/graphics/cairo/BackingStoreBackendCairoX11.cpp @no-unify

platform/graphics/egl/GLContextEGL.cpp @no-unify
platform/graphics/egl/GLContextEGLLibWPE.cpp @no-unify
platform/graphics/egl/GLContextEGLWayland.cpp @no-unify
platform/graphics/egl/GLContextEGLX11.cpp @no-unify

platform/graphics/gbm/GBMBufferSwapchain.cpp
platform/graphics/gbm/GBMDevice.cpp
platform/graphics/gbm/GraphicsContextGLGBM.cpp
platform/graphics/gbm/GraphicsContextGLGBMTextureMapper.cpp

platform/graphics/glx/GLContextGLX.cpp @no-unify

platform/graphics/gtk/ColorGtk.cpp
platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp
platform/graphics/gtk/GdkCairoUtilities.cpp
platform/graphics/gtk/ImageGtk.cpp
platform/graphics/gtk/SystemFontDatabaseGTK.cpp

platform/graphics/gstreamer/ImageGStreamerCairo.cpp

platform/graphics/libwpe/PlatformDisplayLibWPE.cpp

platform/graphics/opentype/OpenTypeVerticalData.cpp

platform/graphics/wayland/PlatformDisplayWayland.cpp

platform/graphics/x11/PlatformDisplayX11.cpp @no-unify
platform/graphics/x11/XErrorTrapper.cpp @no-unify
platform/graphics/x11/XUniqueResource.cpp @no-unify

platform/gtk/CursorGtk.cpp
platform/gtk/DragDataGtk.cpp
platform/gtk/DragImageGtk.cpp
platform/gtk/GRefPtrGtk.cpp
platform/gtk/GtkUtilities.cpp @no-unify
platform/gtk/LocalizedStringsGtk.cpp
platform/gtk/PasteboardGtk.cpp
platform/gtk/PlatformKeyboardEventGtk.cpp
platform/gtk/PlatformScreenGtk.cpp
platform/gtk/RenderThemeGadget.cpp
platform/gtk/RenderThemeScrollbar.cpp
platform/gtk/ScrollbarThemeGtk.cpp
platform/gtk/SelectionData.cpp
platform/gtk/ValidationBubbleGtk.cpp
platform/gtk/WidgetGtk.cpp

platform/text/Hyphenation.cpp
platform/text/LocaleICU.cpp

platform/text/enchant/TextCheckerEnchant.cpp

platform/text/hyphen/HyphenationLibHyphen.cpp

platform/unix/LoggingUnix.cpp

platform/xdg/MIMETypeRegistryXdg.cpp

rendering/RenderThemeAdwaita.cpp
rendering/RenderThemeGtk.cpp
