[PlayStation] Enable WebCore
https://bugs.webkit.org/show_bug.cgi?id=192384

Reviewed by Brent Fulgham.

.:

Adds CMake options for building WebCore on PlayStation.

* Source/cmake/FindLibPSL.cmake:
* Source/cmake/FindNghttp2.cmake: Copied from Source/cmake/FindWPE.cmake.
* Source/cmake/FindPixman.cmake: Added.
* Source/cmake/FindWPE.cmake:
* Source/cmake/OptionsPlayStation.cmake:

Source/WebCore:

Implements WebCore for the PlayStation platform.

* PlatformPlayStation.cmake: Added.
* loader/cache/CachedResourceLoader.cpp:
* platform/generic/KeyedDecoderGeneric.cpp: Added.
(WebCore::KeyedDecoder::decoder):
(WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric):
(WebCore::KeyedDecoderGeneric::~KeyedDecoderGeneric):
(WebCore::KeyedDecoderGeneric::decodeBytes):
(WebCore::KeyedDecoderGeneric::decodeBool):
(WebCore::KeyedDecoderGeneric::decodeUInt32):
(WebCore::KeyedDecoderGeneric::decodeUInt64):
(WebCore::KeyedDecoderGeneric::decodeInt32):
(WebCore::KeyedDecoderGeneric::decodeInt64):
(WebCore::KeyedDecoderGeneric::decodeFloat):
(WebCore::KeyedDecoderGeneric::decodeDouble):
(WebCore::KeyedDecoderGeneric::decodeString):
(WebCore::KeyedDecoderGeneric::beginObject):
(WebCore::KeyedDecoderGeneric::endObject):
(WebCore::KeyedDecoderGeneric::beginArray):
(WebCore::KeyedDecoderGeneric::beginArrayElement):
(WebCore::KeyedDecoderGeneric::endArrayElement):
(WebCore::KeyedDecoderGeneric::endArray):
* platform/generic/KeyedDecoderGeneric.h: Added.
* platform/generic/KeyedEncoderGeneric.cpp: Added.
(WebCore::KeyedEncoder::encoder):
(WebCore::KeyedEncoderGeneric::KeyedEncoderGeneric):
(WebCore::KeyedEncoderGeneric::~KeyedEncoderGeneric):
(WebCore::KeyedEncoderGeneric::encodeBytes):
(WebCore::KeyedEncoderGeneric::encodeBool):
(WebCore::KeyedEncoderGeneric::encodeUInt32):
(WebCore::KeyedEncoderGeneric::encodeUInt64):
(WebCore::KeyedEncoderGeneric::encodeInt32):
(WebCore::KeyedEncoderGeneric::encodeInt64):
(WebCore::KeyedEncoderGeneric::encodeFloat):
(WebCore::KeyedEncoderGeneric::encodeDouble):
(WebCore::KeyedEncoderGeneric::encodeString):
(WebCore::KeyedEncoderGeneric::beginObject):
(WebCore::KeyedEncoderGeneric::endObject):
(WebCore::KeyedEncoderGeneric::beginArray):
(WebCore::KeyedEncoderGeneric::beginArrayElement):
(WebCore::KeyedEncoderGeneric::endArrayElement):
(WebCore::KeyedEncoderGeneric::endArray):
(WebCore::KeyedEncoderGeneric::finishEncoding):
* platform/generic/KeyedEncoderGeneric.h: Added.
* platform/network/curl/NetworkStorageSessionCurl.cpp:
(WebCore::defaultCookieJarPath):
* platform/network/playstation/CurlSSLHandlePlayStation.cpp: Added.
(WebCore::getCACertPathEnv):
(WebCore::CurlSSLHandle::platformInitialize):
* platform/network/playstation/NetworkStateNotifierPlayStation.cpp: Added.
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying):
(WebCore::NetworkStateNotifier::startObserving):
* platform/playstation/EventLoopPlayStation.cpp: Added.
(WebCore::EventLoop::cycle):
* platform/playstation/MIMETypeRegistryPlayStation.cpp: Added.
(WebCore::MIMETypeRegistry::getMIMETypeForExtension):
(WebCore::MIMETypeRegistry::isApplicationPluginMIMEType):
(WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
* platform/playstation/PlatformScreenPlayStation.cpp: Added.
(WebCore::screenDepth):
(WebCore::screenDepthPerComponent):
(WebCore::screenIsMonochrome):
(WebCore::screenHasInvertedColors):
(WebCore::screenRect):
(WebCore::screenAvailableRect):
(WebCore::screenSupportsExtendedColor):
* platform/playstation/ScrollbarThemePlayStation.cpp: Added.
(WebCore::ScrollbarTheme::nativeTheme):
(WebCore::ScrollbarThemePlayStation::scrollbarThickness):
(WebCore::ScrollbarThemePlayStation::hasButtons):
(WebCore::ScrollbarThemePlayStation::hasThumb):
(WebCore::ScrollbarThemePlayStation::backButtonRect):
(WebCore::ScrollbarThemePlayStation::forwardButtonRect):
(WebCore::ScrollbarThemePlayStation::trackRect):
(WebCore::ScrollbarThemePlayStation::paintTrackBackground):
(WebCore::ScrollbarThemePlayStation::paintThumb):
* platform/playstation/ScrollbarThemePlayStation.h: Added.
* platform/playstation/UserAgentPlayStation.cpp: Added.
(WebCore::standardUserAgent):
(WebCore::standardUserAgentForURL):
* rendering/RenderThemePlayStation.cpp: Added.
(WebCore::RenderTheme::singleton):
(WebCore::RenderThemePlayStation::updateCachedSystemFontDescription const):
* rendering/RenderThemePlayStation.h: Added.

Source/WebCore/PAL:

Implements PAL for the PlayStation platform.

* pal/PlatformPlayStation.cmake: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@238913 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/ChangeLog b/ChangeLog
index 2d0046f..3efe875 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2018-12-05  Don Olmstead  <don.olmstead@sony.com>
+
+        [PlayStation] Enable WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=192384
+
+        Reviewed by Brent Fulgham.
+
+        Adds CMake options for building WebCore on PlayStation.
+
+        * Source/cmake/FindLibPSL.cmake:
+        * Source/cmake/FindNghttp2.cmake: Copied from Source/cmake/FindWPE.cmake.
+        * Source/cmake/FindPixman.cmake: Added.
+        * Source/cmake/FindWPE.cmake:
+        * Source/cmake/OptionsPlayStation.cmake:
+
 2018-12-04  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>
 
         [WPE] Add gtk-doc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 09db9d3..d3e4d46 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,96 @@
+2018-12-05  Don Olmstead  <don.olmstead@sony.com>
+
+        [PlayStation] Enable WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=192384
+
+        Reviewed by Brent Fulgham.
+
+        Implements WebCore for the PlayStation platform.
+
+        * PlatformPlayStation.cmake: Added.
+        * loader/cache/CachedResourceLoader.cpp:
+        * platform/generic/KeyedDecoderGeneric.cpp: Added.
+        (WebCore::KeyedDecoder::decoder):
+        (WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric):
+        (WebCore::KeyedDecoderGeneric::~KeyedDecoderGeneric):
+        (WebCore::KeyedDecoderGeneric::decodeBytes):
+        (WebCore::KeyedDecoderGeneric::decodeBool):
+        (WebCore::KeyedDecoderGeneric::decodeUInt32):
+        (WebCore::KeyedDecoderGeneric::decodeUInt64):
+        (WebCore::KeyedDecoderGeneric::decodeInt32):
+        (WebCore::KeyedDecoderGeneric::decodeInt64):
+        (WebCore::KeyedDecoderGeneric::decodeFloat):
+        (WebCore::KeyedDecoderGeneric::decodeDouble):
+        (WebCore::KeyedDecoderGeneric::decodeString):
+        (WebCore::KeyedDecoderGeneric::beginObject):
+        (WebCore::KeyedDecoderGeneric::endObject):
+        (WebCore::KeyedDecoderGeneric::beginArray):
+        (WebCore::KeyedDecoderGeneric::beginArrayElement):
+        (WebCore::KeyedDecoderGeneric::endArrayElement):
+        (WebCore::KeyedDecoderGeneric::endArray):
+        * platform/generic/KeyedDecoderGeneric.h: Added.
+        * platform/generic/KeyedEncoderGeneric.cpp: Added.
+        (WebCore::KeyedEncoder::encoder):
+        (WebCore::KeyedEncoderGeneric::KeyedEncoderGeneric):
+        (WebCore::KeyedEncoderGeneric::~KeyedEncoderGeneric):
+        (WebCore::KeyedEncoderGeneric::encodeBytes):
+        (WebCore::KeyedEncoderGeneric::encodeBool):
+        (WebCore::KeyedEncoderGeneric::encodeUInt32):
+        (WebCore::KeyedEncoderGeneric::encodeUInt64):
+        (WebCore::KeyedEncoderGeneric::encodeInt32):
+        (WebCore::KeyedEncoderGeneric::encodeInt64):
+        (WebCore::KeyedEncoderGeneric::encodeFloat):
+        (WebCore::KeyedEncoderGeneric::encodeDouble):
+        (WebCore::KeyedEncoderGeneric::encodeString):
+        (WebCore::KeyedEncoderGeneric::beginObject):
+        (WebCore::KeyedEncoderGeneric::endObject):
+        (WebCore::KeyedEncoderGeneric::beginArray):
+        (WebCore::KeyedEncoderGeneric::beginArrayElement):
+        (WebCore::KeyedEncoderGeneric::endArrayElement):
+        (WebCore::KeyedEncoderGeneric::endArray):
+        (WebCore::KeyedEncoderGeneric::finishEncoding):
+        * platform/generic/KeyedEncoderGeneric.h: Added.
+        * platform/network/curl/NetworkStorageSessionCurl.cpp:
+        (WebCore::defaultCookieJarPath):
+        * platform/network/playstation/CurlSSLHandlePlayStation.cpp: Added.
+        (WebCore::getCACertPathEnv):
+        (WebCore::CurlSSLHandle::platformInitialize):
+        * platform/network/playstation/NetworkStateNotifierPlayStation.cpp: Added.
+        (WebCore::NetworkStateNotifier::updateStateWithoutNotifying):
+        (WebCore::NetworkStateNotifier::startObserving):
+        * platform/playstation/EventLoopPlayStation.cpp: Added.
+        (WebCore::EventLoop::cycle):
+        * platform/playstation/MIMETypeRegistryPlayStation.cpp: Added.
+        (WebCore::MIMETypeRegistry::getMIMETypeForExtension):
+        (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType):
+        (WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
+        * platform/playstation/PlatformScreenPlayStation.cpp: Added.
+        (WebCore::screenDepth):
+        (WebCore::screenDepthPerComponent):
+        (WebCore::screenIsMonochrome):
+        (WebCore::screenHasInvertedColors):
+        (WebCore::screenRect):
+        (WebCore::screenAvailableRect):
+        (WebCore::screenSupportsExtendedColor):
+        * platform/playstation/ScrollbarThemePlayStation.cpp: Added.
+        (WebCore::ScrollbarTheme::nativeTheme):
+        (WebCore::ScrollbarThemePlayStation::scrollbarThickness):
+        (WebCore::ScrollbarThemePlayStation::hasButtons):
+        (WebCore::ScrollbarThemePlayStation::hasThumb):
+        (WebCore::ScrollbarThemePlayStation::backButtonRect):
+        (WebCore::ScrollbarThemePlayStation::forwardButtonRect):
+        (WebCore::ScrollbarThemePlayStation::trackRect):
+        (WebCore::ScrollbarThemePlayStation::paintTrackBackground):
+        (WebCore::ScrollbarThemePlayStation::paintThumb):
+        * platform/playstation/ScrollbarThemePlayStation.h: Added.
+        * platform/playstation/UserAgentPlayStation.cpp: Added.
+        (WebCore::standardUserAgent):
+        (WebCore::standardUserAgentForURL):
+        * rendering/RenderThemePlayStation.cpp: Added.
+        (WebCore::RenderTheme::singleton):
+        (WebCore::RenderThemePlayStation::updateCachedSystemFontDescription const):
+        * rendering/RenderThemePlayStation.h: Added.
+
 2018-12-05  Ryosuke Niwa  <rniwa@webkit.org>
 
         Null pointer crash in DocumentOrderedMap::getElementById via FormAssociatedElement::findAssociatedForm
diff --git a/Source/WebCore/PAL/ChangeLog b/Source/WebCore/PAL/ChangeLog
index c5bdd16..d2f77e2 100644
--- a/Source/WebCore/PAL/ChangeLog
+++ b/Source/WebCore/PAL/ChangeLog
@@ -1,3 +1,14 @@
+2018-12-05  Don Olmstead  <don.olmstead@sony.com>
+
+        [PlayStation] Enable WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=192384
+
+        Reviewed by Brent Fulgham.
+
+        Implements PAL for the PlayStation platform.
+
+        * pal/PlatformPlayStation.cmake: Added.
+
 2018-12-02  Zalan Bujtas  <zalan@apple.com>
 
         Add a runtime feature flag for LayoutFormattingContext.
diff --git a/Source/WebCore/PAL/pal/PlatformPlayStation.cmake b/Source/WebCore/PAL/pal/PlatformPlayStation.cmake
new file mode 100644
index 0000000..610c798
--- /dev/null
+++ b/Source/WebCore/PAL/pal/PlatformPlayStation.cmake
@@ -0,0 +1,14 @@
+list(APPEND PAL_SOURCES
+    crypto/openssl/CryptoDigestOpenSSL.cpp
+
+    system/ClockGeneric.cpp
+    system/Sound.cpp
+
+    text/KillRing.cpp
+
+    unix/LoggingUnix.cpp
+)
+
+list(APPEND PAL_SYSTEM_INCLUDE_DIRECTORIES ${OPENSSL_INCLUDE_DIR})
+
+list(APPEND PAL_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
diff --git a/Source/WebCore/PlatformPlayStation.cmake b/Source/WebCore/PlatformPlayStation.cmake
new file mode 100644
index 0000000..184363f
--- /dev/null
+++ b/Source/WebCore/PlatformPlayStation.cmake
@@ -0,0 +1,100 @@
+include(platform/Cairo.cmake)
+include(platform/Curl.cmake)
+include(platform/FreeType.cmake)
+include(platform/ImageDecoders.cmake)
+include(platform/TextureMapper.cmake)
+
+list(APPEND WebCore_INCLUDE_DIRECTORIES
+    ${THIRDPARTY_DIR}/ANGLE/
+    ${THIRDPARTY_DIR}/ANGLE/include/KHR
+    ${WEBCORE_DIR}/platform
+    ${WEBCORE_DIR}/platform/generic
+    ${WEBCORE_DIR}/platform/graphics/egl
+    ${WEBCORE_DIR}/platform/graphics/opengl
+    ${WEBCORE_DIR}/platform/graphics/libwpe
+    ${WEBCORE_DIR}/platform/mediacapabilities
+)
+
+list(APPEND WebCore_SOURCES
+    editing/libwpe/EditorLibWPE.cpp
+
+    page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp
+    page/scrolling/coordinatedgraphics/ScrollingStateNodeCoordinatedGraphics.cpp
+    page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.cpp
+    page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.cpp
+    page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.cpp
+    page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.cpp
+
+    page/scrolling/generic/ScrollingThreadGeneric.cpp
+
+    platform/ScrollAnimationKinetic.cpp
+    platform/ScrollAnimationSmooth.cpp
+    platform/UserAgentQuirks.cpp
+
+    platform/generic/KeyedDecoderGeneric.cpp
+    platform/generic/KeyedEncoderGeneric.cpp
+    platform/generic/ScrollAnimatorGeneric.cpp
+
+    platform/graphics/GLContext.cpp
+    platform/graphics/GraphicsContext3DPrivate.cpp
+    platform/graphics/PlatformDisplay.cpp
+
+    platform/graphics/egl/GLContextEGL.cpp
+    platform/graphics/egl/GLContextEGLLibWPE.cpp
+
+    platform/graphics/libwpe/PlatformDisplayLibWPE.cpp
+
+    platform/graphics/opengl/Extensions3DOpenGLCommon.cpp
+    platform/graphics/opengl/Extensions3DOpenGLES.cpp
+    platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp
+    platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp
+    platform/graphics/opengl/TemporaryOpenGLSetting.cpp
+
+    platform/libwpe/PasteboardLibWPE.cpp
+    platform/libwpe/PlatformKeyboardEventLibWPE.cpp
+    platform/libwpe/PlatformPasteboardLibWPE.cpp
+
+    platform/network/playstation/CurlSSLHandlePlayStation.cpp
+    platform/network/playstation/NetworkStateNotifierPlayStation.cpp
+
+    platform/playstation/EventLoopPlayStation.cpp
+    platform/playstation/MIMETypeRegistryPlayStation.cpp
+    platform/playstation/PlatformScreenPlayStation.cpp
+    platform/playstation/ScrollbarThemePlayStation.cpp
+    platform/playstation/UserAgentPlayStation.cpp
+
+    platform/posix/FileSystemPOSIX.cpp
+    platform/posix/SharedBufferPOSIX.cpp
+
+    platform/text/Hyphenation.cpp
+    platform/text/LocaleICU.cpp
+
+    platform/unix/LoggingUnix.cpp
+
+    rendering/RenderThemePlayStation.cpp
+)
+
+list(APPEND WebCore_USER_AGENT_STYLE_SHEETS
+    ${WEBCORE_DIR}/Modules/mediacontrols/mediaControlsBase.css
+)
+
+set(WebCore_USER_AGENT_SCRIPTS
+    ${WEBCORE_DIR}/en.lproj/mediaControlsLocalizedStrings.js
+    ${WEBCORE_DIR}/Modules/mediacontrols/mediaControlsBase.js
+)
+
+list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES
+    ${ICU_INCLUDE_DIRS}
+    ${LIBXML2_INCLUDE_DIR}
+    ${SQLITE_INCLUDE_DIR}
+    ${ZLIB_INCLUDE_DIRS}
+    ${WPE_INCLUDE_DIRS}
+)
+
+list(APPEND WebCore_LIBRARIES
+    ${ICU_LIBRARIES}
+    ${LIBXML2_LIBRARIES}
+    ${SQLITE_LIBRARIES}
+    ${ZLIB_LIBRARIES}
+    ${WPE_LIBRARIES}
+)
diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp
index 7dc49b7..d3fedc8 100644
--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp
+++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp
@@ -41,6 +41,7 @@
 #include "ContentExtensionError.h"
 #include "ContentExtensionRule.h"
 #include "ContentSecurityPolicy.h"
+#include "CrossOriginAccessControl.h"
 #include "DOMWindow.h"
 #include "DiagnosticLoggingClient.h"
 #include "DiagnosticLoggingKeys.h"
diff --git a/Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp b/Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp
new file mode 100644
index 0000000..ecdfeed
--- /dev/null
+++ b/Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "KeyedDecoderGeneric.h"
+
+namespace WebCore {
+
+// FIXME: https://bugs.webkit.org/show_bug.cgi?id=186410
+std::unique_ptr<KeyedDecoder> KeyedDecoder::decoder(const uint8_t* data, size_t size)
+{
+    return std::make_unique<KeyedDecoderGeneric>(data, size);
+}
+
+KeyedDecoderGeneric::KeyedDecoderGeneric(const uint8_t*, size_t)
+{
+}
+
+KeyedDecoderGeneric::~KeyedDecoderGeneric()
+{
+}
+
+bool KeyedDecoderGeneric::decodeBytes(const String&, const uint8_t*&, size_t&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeBool(const String&, bool&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeUInt32(const String&, uint32_t&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeUInt64(const String&, uint64_t&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeInt32(const String&, int32_t&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeInt64(const String&, int64_t&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeFloat(const String&, float&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeDouble(const String&, double&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::decodeString(const String&, String&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::beginObject(const String&)
+{
+    return false;
+}
+
+void KeyedDecoderGeneric::endObject()
+{
+}
+
+bool KeyedDecoderGeneric::beginArray(const String&)
+{
+    return false;
+}
+
+bool KeyedDecoderGeneric::beginArrayElement()
+{
+    return false;
+}
+
+void KeyedDecoderGeneric::endArrayElement()
+{
+}
+
+void KeyedDecoderGeneric::endArray()
+{
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/generic/KeyedDecoderGeneric.h b/Source/WebCore/platform/generic/KeyedDecoderGeneric.h
new file mode 100644
index 0000000..9b22b33
--- /dev/null
+++ b/Source/WebCore/platform/generic/KeyedDecoderGeneric.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#pragma once
+
+#include "KeyedCoding.h"
+
+namespace WebCore {
+
+class KeyedDecoderGeneric final : public KeyedDecoder {
+public:
+    KeyedDecoderGeneric(const uint8_t* data, size_t);
+    ~KeyedDecoderGeneric() override;
+
+private:
+    bool decodeBytes(const String& key, const uint8_t*&, size_t&) override;
+    bool decodeBool(const String& key, bool&) override;
+    bool decodeUInt32(const String& key, uint32_t&) override;
+    bool decodeUInt64(const String& key, uint64_t&) override;
+    bool decodeInt32(const String& key, int32_t&) override;
+    bool decodeInt64(const String& key, int64_t&) override;
+    bool decodeFloat(const String& key, float&) override;
+    bool decodeDouble(const String& key, double&) override;
+    bool decodeString(const String& key, String&) override;
+
+    bool beginObject(const String& key) override;
+    void endObject() override;
+
+    bool beginArray(const String& key) override;
+    bool beginArrayElement() override;
+    void endArrayElement() override;
+    void endArray() override;
+};
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/generic/KeyedEncoderGeneric.cpp b/Source/WebCore/platform/generic/KeyedEncoderGeneric.cpp
new file mode 100644
index 0000000..09cf5c2
--- /dev/null
+++ b/Source/WebCore/platform/generic/KeyedEncoderGeneric.cpp
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "KeyedEncoderGeneric.h"
+
+#include "SharedBuffer.h"
+
+namespace WebCore {
+
+// FIXME: https://bugs.webkit.org/show_bug.cgi?id=186410
+std::unique_ptr<KeyedEncoder> KeyedEncoder::encoder()
+{
+    return std::make_unique<KeyedEncoderGeneric>();
+}
+
+KeyedEncoderGeneric::KeyedEncoderGeneric()
+{
+}
+
+KeyedEncoderGeneric::~KeyedEncoderGeneric()
+{
+}
+
+void KeyedEncoderGeneric::encodeBytes(const String&, const uint8_t*, size_t)
+{
+}
+
+void KeyedEncoderGeneric::encodeBool(const String&, bool)
+{
+}
+
+void KeyedEncoderGeneric::encodeUInt32(const String&, uint32_t)
+{
+}
+
+void KeyedEncoderGeneric::encodeUInt64(const String&, uint64_t)
+{
+}
+
+void KeyedEncoderGeneric::encodeInt32(const String&, int32_t)
+{
+}
+
+void KeyedEncoderGeneric::encodeInt64(const String&, int64_t)
+{
+}
+
+void KeyedEncoderGeneric::encodeFloat(const String&, float)
+{
+}
+
+void KeyedEncoderGeneric::encodeDouble(const String&, double)
+{
+}
+
+void KeyedEncoderGeneric::encodeString(const String&, const String&)
+{
+}
+
+void KeyedEncoderGeneric::beginObject(const String&)
+{
+}
+
+void KeyedEncoderGeneric::endObject()
+{
+}
+
+void KeyedEncoderGeneric::beginArray(const String&)
+{
+}
+
+void KeyedEncoderGeneric::beginArrayElement()
+{
+}
+
+void KeyedEncoderGeneric::endArrayElement()
+{
+}
+
+void KeyedEncoderGeneric::endArray()
+{
+}
+
+RefPtr<SharedBuffer> KeyedEncoderGeneric::finishEncoding()
+{
+    return nullptr;
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/generic/KeyedEncoderGeneric.h b/Source/WebCore/platform/generic/KeyedEncoderGeneric.h
new file mode 100644
index 0000000..b8c5447
--- /dev/null
+++ b/Source/WebCore/platform/generic/KeyedEncoderGeneric.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#pragma once
+
+#include "KeyedCoding.h"
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class SharedBuffer;
+
+class KeyedEncoderGeneric final : public KeyedEncoder {
+public:
+    KeyedEncoderGeneric();
+    ~KeyedEncoderGeneric();
+
+private:
+    RefPtr<SharedBuffer> finishEncoding() override;
+
+    void encodeBytes(const String& key, const uint8_t*, size_t) override;
+    void encodeBool(const String& key, bool) override;
+    void encodeUInt32(const String& key, uint32_t) override;
+    void encodeUInt64(const String& key, uint64_t) override;
+    void encodeInt32(const String& key, int32_t) override;
+    void encodeInt64(const String& key, int64_t) override;
+    void encodeFloat(const String& key, float) override;
+    void encodeDouble(const String& key, double) override;
+    void encodeString(const String& key, const String&) override;
+
+    void beginObject(const String& key) override;
+    void endObject() override;
+
+    void beginArray(const String& key) override;
+    void beginArrayElement() override;
+    void endArrayElement() override;
+    void endArray() override;
+};
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp
index 247a527..25f1ec2 100644
--- a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp
+++ b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp
@@ -51,7 +51,12 @@
     if (cookieJarPath)
         return cookieJarPath;
 
+#if PLATFORM(WIN)
     return FileSystem::pathByAppendingComponent(FileSystem::localUserSpecificStorageDirectory(), defaultFileName);
+#else
+    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=192417
+    return defaultFileName;
+#endif
 }
 
 NetworkStorageSession::NetworkStorageSession(PAL::SessionID sessionID, NetworkingContext* context)
diff --git a/Source/WebCore/platform/network/playstation/CurlSSLHandlePlayStation.cpp b/Source/WebCore/platform/network/playstation/CurlSSLHandlePlayStation.cpp
new file mode 100644
index 0000000..3e1e287
--- /dev/null
+++ b/Source/WebCore/platform/network/playstation/CurlSSLHandlePlayStation.cpp
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "CurlSSLHandle.h"
+
+namespace WebCore {
+
+static String getCACertPathEnv()
+{
+    char* envPath = getenv("CURL_CA_BUNDLE_PATH");
+    if (envPath)
+        return { envPath };
+
+    return emptyString();
+}
+
+void CurlSSLHandle::platformInitialize()
+{
+    auto caCertPath = getCACertPathEnv();
+    if (!caCertPath.isEmpty())
+        setCACertPath(WTFMove(caCertPath));
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/network/playstation/NetworkStateNotifierPlayStation.cpp b/Source/WebCore/platform/network/playstation/NetworkStateNotifierPlayStation.cpp
new file mode 100644
index 0000000..acca8fc
--- /dev/null
+++ b/Source/WebCore/platform/network/playstation/NetworkStateNotifierPlayStation.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "NetworkStateNotifier.h"
+
+#include "NotImplemented.h"
+
+namespace WebCore {
+
+void NetworkStateNotifier::updateStateWithoutNotifying()
+{
+    notImplemented();
+}
+
+void NetworkStateNotifier::startObserving()
+{
+    notImplemented();
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/playstation/EventLoopPlayStation.cpp b/Source/WebCore/platform/playstation/EventLoopPlayStation.cpp
new file mode 100644
index 0000000..d433fb1
--- /dev/null
+++ b/Source/WebCore/platform/playstation/EventLoopPlayStation.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "EventLoop.h"
+
+#include <wtf/RunLoop.h>
+
+namespace WebCore {
+
+void EventLoop::cycle()
+{
+    RunLoop::iterate();
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/playstation/MIMETypeRegistryPlayStation.cpp b/Source/WebCore/platform/playstation/MIMETypeRegistryPlayStation.cpp
new file mode 100644
index 0000000..132c43e
--- /dev/null
+++ b/Source/WebCore/platform/playstation/MIMETypeRegistryPlayStation.cpp
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "MIMETypeRegistry.h"
+
+namespace WebCore {
+
+struct TypeExtensionPair {
+    ASCIILiteral type;
+    ASCIILiteral extension;
+};
+
+const TypeExtensionPair commonMediaTypes[] = {
+    { "bmp"_s, "image/bmp"_s },
+    { "css"_s, "text/css"_s },
+    { "gif"_s, "image/gif"_s },
+    { "html"_s, "text/html"_s },
+    { "htm"_s, "text/html"_s },
+    { "ico"_s, "image/x-icon"_s },
+    { "jpeg"_s, "image/jpeg"_s },
+    { "jpg"_s, "image/jpeg"_s },
+    { "js"_s, "application/x-javascript"_s },
+    { "pdf"_s, "application/pdf"_s },
+    { "png"_s, "image/png"_s },
+    { "rss"_s, "application/rss+xml"_s },
+    { "svg"_s, "image/svg+xml"_s },
+    { "swf"_s, "application/x-shockwave-flash"_s },
+    { "text"_s, "text/plain"_s },
+    { "txt"_s, "text/plain"_s },
+    { "xbm"_s, "image/x-xbitmap"_s },
+    { "xml"_s, "text/xml"_s },
+    { "xsl"_s, "text/xsl"_s },
+    { "xhtml"_s, "application/xhtml+xml"_s },
+    { "wml"_s, "text/vnd.wap.wml"_s },
+    { "wmlc"_s, "application/vnd.wap.wmlc"_s },
+};
+
+String MIMETypeRegistry::getMIMETypeForExtension(const String& extension)
+{
+    for (auto& entry : commonMediaTypes) {
+        if (equalIgnoringASCIICase(extension, entry.extension.characters()))
+            return entry.type;
+    }
+    return emptyString();
+}
+
+bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&)
+{
+    return false;
+}
+
+String MIMETypeRegistry::getPreferredExtensionForMIMEType(const String& mimeType)
+{
+    for (auto& entry : commonMediaTypes) {
+        if (equalIgnoringASCIICase(mimeType, entry.type.characters()))
+            return entry.extension;
+    }
+    return emptyString();
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/playstation/PlatformScreenPlayStation.cpp b/Source/WebCore/platform/playstation/PlatformScreenPlayStation.cpp
new file mode 100644
index 0000000..8601d01
--- /dev/null
+++ b/Source/WebCore/platform/playstation/PlatformScreenPlayStation.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "PlatformScreen.h"
+
+#include "FloatRect.h"
+#include "NotImplemented.h"
+
+namespace WebCore {
+
+int screenDepth(Widget*)
+{
+    notImplemented();
+    return 24;
+}
+
+int screenDepthPerComponent(Widget*)
+{
+    notImplemented();
+    return 8;
+}
+
+bool screenIsMonochrome(Widget*)
+{
+    notImplemented();
+    return false;
+}
+
+bool screenHasInvertedColors()
+{
+    return false;
+}
+
+FloatRect screenRect(Widget*)
+{
+    notImplemented();
+    return { 0, 0, 1920, 1080 };
+}
+
+FloatRect screenAvailableRect(Widget*)
+{
+    notImplemented();
+    return { 0, 0, 1920, 1080 };
+}
+
+bool screenSupportsExtendedColor(Widget*)
+{
+    return false;
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/playstation/ScrollbarThemePlayStation.cpp b/Source/WebCore/platform/playstation/ScrollbarThemePlayStation.cpp
new file mode 100644
index 0000000..18b45dc
--- /dev/null
+++ b/Source/WebCore/platform/playstation/ScrollbarThemePlayStation.cpp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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 COMPUTER, INC. ``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 COMPUTER, INC. OR
+ * 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.
+ */
+
+#include "config.h"
+#include "ScrollbarThemePlayStation.h"
+
+#include "HostWindow.h"
+#include "NotImplemented.h"
+#include "ScrollView.h"
+#include "Scrollbar.h"
+
+namespace WebCore {
+
+ScrollbarTheme& ScrollbarTheme::nativeTheme()
+{
+    static ScrollbarThemePlayStation theme;
+    return theme;
+}
+
+int ScrollbarThemePlayStation::scrollbarThickness(ScrollbarControlSize, ScrollbarExpansionState)
+{
+    return 7;
+}
+
+bool ScrollbarThemePlayStation::hasButtons(Scrollbar&)
+{
+    notImplemented();
+    return true;
+}
+
+bool ScrollbarThemePlayStation::hasThumb(Scrollbar&)
+{
+    notImplemented();
+    return true;
+}
+
+IntRect ScrollbarThemePlayStation::backButtonRect(Scrollbar&, ScrollbarPart, bool)
+{
+    notImplemented();
+    return { };
+}
+
+IntRect ScrollbarThemePlayStation::forwardButtonRect(Scrollbar&, ScrollbarPart, bool)
+{
+    notImplemented();
+    return { };
+}
+
+IntRect ScrollbarThemePlayStation::trackRect(Scrollbar& scrollbar, bool)
+{
+    return scrollbar.frameRect();
+}
+
+void ScrollbarThemePlayStation::paintTrackBackground(GraphicsContext& context, Scrollbar& scrollbar, const IntRect& trackRect)
+{
+    context.fillRect(trackRect, scrollbar.enabled() ? Color::lightGray : Color(0xFFE0E0E0));
+}
+
+void ScrollbarThemePlayStation::paintThumb(GraphicsContext& context, Scrollbar& scrollbar, const IntRect& thumbRect)
+{
+    if (scrollbar.enabled())
+        context.fillRect(thumbRect, Color::darkGray);
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/playstation/ScrollbarThemePlayStation.h b/Source/WebCore/platform/playstation/ScrollbarThemePlayStation.h
new file mode 100644
index 0000000..0436b9f
--- /dev/null
+++ b/Source/WebCore/platform/playstation/ScrollbarThemePlayStation.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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 COMPUTER, INC. ``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 COMPUTER, INC. OR
+ * 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.
+ */
+
+#pragma once
+
+#include "ScrollbarThemeComposite.h"
+
+namespace WebCore {
+
+class ScrollbarThemePlayStation : public ScrollbarThemeComposite {
+public:
+    ScrollbarThemePlayStation() = default;
+    virtual ~ScrollbarThemePlayStation() = default;
+
+    int scrollbarThickness(ScrollbarControlSize = RegularScrollbar, ScrollbarExpansionState = ScrollbarExpansionState::Expanded) override;
+
+    bool hasButtons(Scrollbar&) override;
+    bool hasThumb(Scrollbar&) override;
+
+    IntRect backButtonRect(Scrollbar&, ScrollbarPart, bool painting = false) override;
+    IntRect forwardButtonRect(Scrollbar&, ScrollbarPart, bool painting = false) override;
+    IntRect trackRect(Scrollbar&, bool painting = false) override;
+
+    void paintTrackBackground(GraphicsContext&, Scrollbar&, const IntRect&) override;
+    void paintThumb(GraphicsContext&, Scrollbar&, const IntRect&) override;
+};
+
+} // namespace WebCore
diff --git a/Source/WebCore/platform/playstation/UserAgentPlayStation.cpp b/Source/WebCore/platform/playstation/UserAgentPlayStation.cpp
new file mode 100644
index 0000000..a56e551
--- /dev/null
+++ b/Source/WebCore/platform/playstation/UserAgentPlayStation.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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. ``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
+ * 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.
+ */
+
+#include "config.h"
+#include "UserAgent.h"
+
+namespace WebCore {
+
+String standardUserAgent(const String&, const String&)
+{
+    return emptyString();
+}
+
+String standardUserAgentForURL(const URL&)
+{
+    // The null string means we don't need a specific UA for the given URL.
+    return emptyString();
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/rendering/RenderThemePlayStation.cpp b/Source/WebCore/rendering/RenderThemePlayStation.cpp
new file mode 100644
index 0000000..0601da8
--- /dev/null
+++ b/Source/WebCore/rendering/RenderThemePlayStation.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#include "config.h"
+#include "RenderThemePlayStation.h"
+
+#include "NotImplemented.h"
+
+namespace WebCore {
+
+RenderTheme& RenderTheme::singleton()
+{
+    static NeverDestroyed<RenderThemePlayStation> theme;
+    return theme;
+}
+
+void RenderThemePlayStation::updateCachedSystemFontDescription(CSSValueID, FontCascadeDescription&) const
+{
+    notImplemented();
+}
+
+} // namespace WebCore
diff --git a/Source/WebCore/rendering/RenderThemePlayStation.h b/Source/WebCore/rendering/RenderThemePlayStation.h
new file mode 100644
index 0000000..3584cc6
--- /dev/null
+++ b/Source/WebCore/rendering/RenderThemePlayStation.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * 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.
+ */
+
+#pragma once
+
+#include "RenderTheme.h"
+
+namespace WebCore {
+
+class RenderThemePlayStation final : public RenderTheme {
+public:
+    friend NeverDestroyed<RenderThemePlayStation>;
+
+private:
+    void updateCachedSystemFontDescription(CSSValueID systemFontID, FontCascadeDescription&) const final;
+};
+
+} // namespace WebCore
diff --git a/Source/cmake/FindLibPSL.cmake b/Source/cmake/FindLibPSL.cmake
index cf4b3fa..04032ea 100644
--- a/Source/cmake/FindLibPSL.cmake
+++ b/Source/cmake/FindLibPSL.cmake
@@ -54,12 +54,9 @@
     endif ()
 endif ()
 
-if ("${LibPSL_FIND_VERSION}" VERSION_GREATER "${LIBPSL_VERSION}")
-    message(FATAL_ERROR "Required version (" ${LibPSL_FIND_VERSION} ") is higher than found version (" ${LIBPSL_VERSION} ")")
-endif ()
-
 include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LIBPSL REQUIRED_VARS LIBPSL_INCLUDE_DIRS LIBPSL_LIBRARIES)
+find_package_handle_standard_args(LibPSL REQUIRED_VARS LIBPSL_INCLUDE_DIRS LIBPSL_LIBRARIES
+                                         VERSION_VAR LIBPSL_VERSION)
 
 mark_as_advanced(
     LIBPSL_INCLUDE_DIRS
diff --git a/Source/cmake/FindNghttp2.cmake b/Source/cmake/FindNghttp2.cmake
new file mode 100644
index 0000000..c89bc9b
--- /dev/null
+++ b/Source/cmake/FindNghttp2.cmake
@@ -0,0 +1,63 @@
+# - Try to find nghttp2
+# This module defines the following variables:
+#
+#  NGHTTP2_FOUND - nghttp2 was found
+#  NGHTTP2_INCLUDE_DIRS - the nghttp2 include directories
+#  NGHTTP2_LIBRARIES - link these to use nghttp2
+#
+# Copyright (C) 2018 Sony Interactive Entertainment Inc.
+#
+# 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 THE COPYRIGHT HOLDER 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 THE COPYRIGHT HOLDER 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.
+
+find_package(PkgConfig)
+pkg_check_modules(PC_NGHTTP2 QUIET nghttp2)
+
+find_path(NGHTTP2_INCLUDE_DIRS
+    NAMES nghttp2.h
+    HINTS ${PC_NGHTTP2_INCLUDEDIR}
+          ${PC_NGHTTP2_INCLUDE_DIRS}
+    PATH_SUFFIXES nghttp2
+)
+
+find_library(NGHTTP2_LIBRARIES
+    NAMES nghttp2
+    HINTS ${PC_NGHTTP2_LIBDIR}
+          ${PC_NGHTTP2_LIBRARY_DIRS}
+)
+
+if (NGHTTP2_INCLUDE_DIRS)
+    if (EXISTS "${NGHTTP2_INCLUDE_DIRS}/nghttp2ver.h")
+        file(READ "${NGHTTP2_INCLUDE_DIRS}/nghttp2ver.h" _nghttp2_version_content)
+
+        string(REGEX MATCH "#define +NGHTTP2_VERSION +\"([0-9]+\.[0-9]+\.[0-9]+)\"" _dummy "${_nghttp2_version_content}")
+        set(NGHTTP2_VERSION "${CMAKE_MATCH_1}")
+    endif ()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Nghttp2 REQUIRED_VARS NGHTTP2_INCLUDE_DIRS NGHTTP2_LIBRARIES
+                                          VERSION_VAR NGHTTP2_VERSION)
+
+mark_as_advanced(
+    NGHTTP2_INCLUDE_DIRS
+    NGHTTP2_LIBRARIES
+)
diff --git a/Source/cmake/FindPixman.cmake b/Source/cmake/FindPixman.cmake
new file mode 100644
index 0000000..c4d1fa1
--- /dev/null
+++ b/Source/cmake/FindPixman.cmake
@@ -0,0 +1,64 @@
+# - Try to find Pixman
+# This module defines the following variables:
+#
+#  PIXMAN_FOUND - Pixman was found
+#  PIXMAN_INCLUDE_DIRS - the Pixman include directories
+#  PIXMAN_LIBRARIES - link these to use Pixman
+#
+# Copyright (C) 2018 Sony Interactive Entertainment Inc.
+#
+# 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.
+
+find_path(PIXMAN_INCLUDE_DIRS
+    NAMES pixman.h
+    PATH_SUFFIXES pixman-1
+)
+
+find_library(PIXMAN_LIBRARIES
+    NAMES pixman-1
+)
+
+if (PIXMAN_INCLUDE_DIRS)
+    if (EXISTS "${PIXMAN_INCLUDE_DIRS}/pixman-version.h")
+        file(READ "${PIXMAN_INCLUDE_DIRS}/pixman-version.h" PIXMAN_VERSION_CONTENT)
+
+        string(REGEX MATCH "#define +PIXMAN_VERSION_MAJOR +([0-9]+)" _dummy "${PIXMAN_VERSION_CONTENT}")
+        set(PIXMAN_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+        string(REGEX MATCH "#define +PIXMAN_VERSION_MINOR +([0-9]+)" _dummy "${PIXMAN_VERSION_CONTENT}")
+        set(PIXMAN_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+        string(REGEX MATCH "#define +PIXMAN_VERSION_MICRO +([0-9]+)" _dummy "${PIXMAN_VERSION_CONTENT}")
+        set(PIXMAN_VERSION_MICRO "${CMAKE_MATCH_1}")
+
+        set(PIXMAN_VERSION "${PIXMAN_VERSION_MAJOR}.${PIXMAN_VERSION_MINOR}.${PIXMAN_VERSION_MICRO}")
+    endif ()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Pixman REQUIRED_VARS PIXMAN_INCLUDE_DIRS PIXMAN_LIBRARIES
+                                         VERSION_VAR PIXMAN_VERSION)
+
+mark_as_advanced(
+    PIXMAN_INCLUDE_DIRS
+    PIXMAN_LIBRARIES
+)
diff --git a/Source/cmake/FindWPE.cmake b/Source/cmake/FindWPE.cmake
index cb395c8..3a76569 100644
--- a/Source/cmake/FindWPE.cmake
+++ b/Source/cmake/FindWPE.cmake
@@ -37,7 +37,7 @@
 )
 
 find_library(WPE_LIBRARIES
-    NAMES wpe-0.2
+    NAMES wpe-0.2 wpe
     HINTS ${PC_WPE_LIBDIR} ${PC_WPE_LIBRARY_DIRS}
 )
 
diff --git a/Source/cmake/OptionsPlayStation.cmake b/Source/cmake/OptionsPlayStation.cmake
index 85194a2..501d048b 100644
--- a/Source/cmake/OptionsPlayStation.cmake
+++ b/Source/cmake/OptionsPlayStation.cmake
@@ -12,6 +12,40 @@
 # Disable Remote Inspector until implementation lands
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REMOTE_INSPECTOR PRIVATE OFF)
 
+# Enabled features
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ASYNC_SCROLLING PRIVATE ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SMOOTH_SCROLLING PRIVATE ON)
+
+# Experimental features
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_APPLICATION_MANIFEST PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES})
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_PAINTING_API PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES})
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILTERS_LEVEL_2 PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES})
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SERVICE_WORKER PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES})
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VARIATION_FONTS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES})
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBGL PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES})
+
+# Features to investigate
+#
+# Features that are temporarily turned off because an implementation is not
+# present at this time
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_AUDIO PRIVATE OFF)
+
+# No support planned
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ICONDATABASE PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MATHML PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_METER_ELEMENT PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SVG_FONTS PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_USERSELECT_ALL PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_USER_MESSAGE_HANDLERS PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CRYPTO PRIVATE OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XSLT PRIVATE OFF)
+
 WEBKIT_OPTION_END()
 
 # Do not use a separate directory based on configuration when building
@@ -38,17 +72,62 @@
 find_library(KERNEL_LIBRARY kernel)
 find_library(POSIX_COMPATABILITY_LIBRARY posixex)
 
-find_package(Threads REQUIRED)
+find_package(Cairo REQUIRED)
+find_package(CURL REQUIRED)
+find_package(EGL REQUIRED)
+find_package(Fontconfig REQUIRED)
+find_package(Freetype REQUIRED)
+find_package(HarfBuzz REQUIRED)
 find_package(ICU REQUIRED)
+find_package(JPEG REQUIRED)
+find_package(LibPSL REQUIRED)
+find_package(LibXml2 REQUIRED)
+find_package(Nghttp2 REQUIRED)
+find_package(OpenSSL REQUIRED)
+find_package(Pixman REQUIRED)
+find_package(PNG REQUIRED)
+find_package(Sqlite REQUIRED)
+find_package(Threads REQUIRED)
+find_package(WebP REQUIRED)
+find_package(WPE REQUIRED)
+find_package(ZLIB REQUIRED)
+
+# Emulate what pkg-config would do with statically compiled libraries
+# FIXME: https://bugs.webkit.org/show_bug.cgi?id=192410
+list(APPEND CAIRO_LIBRARIES ${PIXMAN_LIBRARIES})
+list(APPEND CURL_LIBRARIES ${NGHTTP2_LIBRARIES})
+
+# Temporarily turn off Accessibility support
+SET_AND_EXPOSE_TO_BUILD(HAVE_ACCESSIBILITY OFF)
+
+SET_AND_EXPOSE_TO_BUILD(HAVE_PTHREAD_SETNAME_NP ON)
 
 SET_AND_EXPOSE_TO_BUILD(USE_EXPORT_MACROS ON)
-SET_AND_EXPOSE_TO_BUILD(HAVE_PTHREAD_SETNAME_NP ON)
+
+SET_AND_EXPOSE_TO_BUILD(USE_CAIRO ON)
+SET_AND_EXPOSE_TO_BUILD(USE_CURL ON)
+SET_AND_EXPOSE_TO_BUILD(USE_FREETYPE ON)
+SET_AND_EXPOSE_TO_BUILD(USE_HARFBUZZ ON)
+SET_AND_EXPOSE_TO_BUILD(USE_LIBWPE ON)
+
+# Rendering options
+SET_AND_EXPOSE_TO_BUILD(ENABLE_GRAPHICS_CONTEXT_3D ON)
+SET_AND_EXPOSE_TO_BUILD(USE_COORDINATED_GRAPHICS ON)
+SET_AND_EXPOSE_TO_BUILD(USE_COORDINATED_GRAPHICS_THREADED ON)
+SET_AND_EXPOSE_TO_BUILD(USE_EGL ON)
+SET_AND_EXPOSE_TO_BUILD(USE_NICOSIA TRUE)
+SET_AND_EXPOSE_TO_BUILD(USE_OPENGL_ES ON)
+SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER ON)
+SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER_GL ON)
+SET_AND_EXPOSE_TO_BUILD(USE_TILED_BACKING_STORE ON)
+SET_AND_EXPOSE_TO_BUILD(USE_UNIX_DOMAIN_SOCKETS ON)
 
 set(WTF_LIBRARY_TYPE STATIC)
 set(JavaScriptCore_LIBRARY_TYPE SHARED)
+set(WebCore_LIBRARY_TYPE STATIC)
 
 set(ENABLE_API_TESTS ON)
-set(ENABLE_WEBCORE OFF)
+set(ENABLE_WEBCORE ON)
 set(ENABLE_WEBKIT OFF)
 set(ENABLE_WEBKIT_LEGACY OFF)