// 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/wpe/AXObjectCacheWPE.cpp
accessibility/wpe/AccessibilityObjectWPE.cpp

editing/wpe/EditorWPE.cpp

loader/soup/ResourceLoaderSoup.cpp

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

page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp
page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.cpp
page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.cpp
page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.cpp
page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.cpp
page/scrolling/coordinatedgraphics/ScrollingStateNodeCoordinatedGraphics.cpp

page/scrolling/generic/ScrollingThreadGeneric.cpp

platform/UserAgentQuirks.cpp

// This can't go into SourcesGLib.txt because it has to go into WebCorePlatformGTK.
platform/glib/EventHandlerGLib.cpp

platform/graphics/GLContext.cpp
platform/graphics/GraphicsContext3DPrivate.cpp
platform/graphics/PlatformDisplay.cpp

platform/graphics/egl/GLContextEGL.cpp
platform/graphics/egl/GLContextEGLWPE.cpp

platform/graphics/opengl/Extensions3DOpenGLCommon.cpp
platform/graphics/opengl/Extensions3DOpenGLES.cpp @no-unify
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp
platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp
platform/graphics/opengl/TemporaryOpenGLSetting.cpp

platform/graphics/opentype/OpenTypeVerticalData.cpp

platform/graphics/wpe/IconWPE.cpp
platform/graphics/wpe/ImageWPE.cpp
platform/graphics/wpe/PlatformDisplayWPE.cpp

platform/mediastream/libwebrtc/LibWebRTCProviderGlib.cpp

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

platform/unix/LoggingUnix.cpp

platform/wpe/CursorWPE.cpp
platform/wpe/DragImageWPE.cpp
platform/wpe/LocalizedStringsWPE.cpp
platform/wpe/PasteboardWPE.cpp
platform/wpe/PlatformKeyboardEventWPE.cpp
platform/wpe/PlatformPasteboardWPE.cpp
platform/wpe/PlatformScreenWPE.cpp
platform/wpe/RenderThemeWPE.cpp
platform/wpe/ScrollbarThemeWPE.cpp
platform/wpe/ThemeWPE.cpp
platform/wpe/WidgetWPE.cpp

platform/xdg/MIMETypeRegistryXdg.cpp
