// 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/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
