Several upstream (as in WebKit itself) commits that fix the build with libc++,
plus a few additional changes made only for the port (the OS(FREEBSD) part for
time_t). Some of those commits had to be edited because they did not apply
cleanly to the ancient WebKit checkout present in Qt.

Upstream commit messages:

------------------------------------------------------------------------
r86529 | abarth@webkit.org | 2011-05-16 09:30:58 +0300 (Mon, 16 May 2011) | 7 lines

2011-05-15  Adam Barth  <abarth@webkit.org>

        Attempt to fix Qt build.  (Strict PassOwnPtr fix.)

        * dom/XMLDocumentParserQt.cpp:
        (WebCore::XMLDocumentParser::doEnd):

------------------------------------------------------------------------
r86530 | abarth@webkit.org | 2011-05-16 09:36:56 +0300 (Mon,  16 May 2011) | 13 lines

2011-05-15  Adam Barth  <abarth@webkit.org>

        Attempt to fix Qt build.  (Strict PassOwnPtr fix.)

* platform/network/qt/QNetworkReplyHandler.cpp:
(WebCore::QNetworkReplyWrapper::release):
(WebCore::QNetworkReplyWrapper::receiveMetaData):
(WebCore::QNetworkReplyWrapper::receiveSniffedMIMEType):
(WebCore::QNetworkReplyHandler::release):
(WebCore::QNetworkReplyHandler::finish):
(WebCore::QNetworkReplyHandler::redirect):
(WebCore::QNetworkReplyHandler::start):

------------------------------------------------------------------------
r86531 | abarth@webkit.org | 2011-05-16 09:41:08 +0300 (Mon, 16 May 2011) | 7 lines

2011-05-15  Adam Barth  <abarth@webkit.org>

        Attempt to fix Qt build.  (Strict PassOwnPtr fix.)

        * platform/text/qt/TextCodecQt.cpp:
        (WebCore::newTextCodecQt):

------------------------------------------------------------------------
r86532 | abarth@webkit.org | 2011-05-16 09:46:33 +0300 (Mon, 16 May 2011) | 8 lines

2011-05-15  Adam Barth  <abarth@webkit.org>

        Attempt to fix Qt build.  (Strict PassOwnPtr fix.)

        * platform/graphics/qt/GraphicsLayerQt.cpp:
        (WebCore::GraphicsLayerQt::GraphicsLayerQt):
        (WebCore::GraphicsLayer::create):


------------------------------------------------------------------------
r86533 | abarth@webkit.org | 2011-05-16 09:52:23 +0300 (Mon, 16 May 2011) | 10 lines

2011-05-15  Adam Barth  <abarth@webkit.org>

        Attempt to fix the Qt build.  (Strict PassOwnPtr fix.)

        * Api/qgraphicswebview.cpp:
        (QGraphicsWebViewPrivate::detachCurrentPage):
        (QGraphicsWebView::setPage):
        * Api/qwebpage.cpp:
        (QWebPage::setView):

------------------------------------------------------------------------
r86537 | abarth@webkit.org | 2011-05-16 10:24:01 +0300 (Mon, 16 May 2011) | 41 lines

2011-05-16  Adam Barth  <abarth@webkit.org>

        [Qt] QtPlatformPlugin create methods should use PassOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=60873

        This change is slightly more than a build fix because the patch kind of
        spidered a bit while I was trying to fix the build the "right way."
        Hopefully nothing here is controversial.

        * Api/qwebpage.cpp:
        (QWebPagePrivate::adjustPointForClicking):
        * WebCoreSupport/ChromeClientQt.cpp:
        (WebCore::ChromeClientQt::createSelectPopup):
        * WebCoreSupport/FullScreenVideoQt.cpp:
        (WebCore::FullScreenVideoQt::FullScreenVideoQt):
        (WebCore::FullScreenVideoQt::~FullScreenVideoQt):
        * WebCoreSupport/FullScreenVideoQt.h:
        * WebCoreSupport/NotificationPresenterClientQt.cpp:
        (WebCore::NotificationWrapper::NotificationWrapper):
        (WebCore::NotificationPresenterClientQt::displayNotification):
        * WebCoreSupport/PopupMenuQt.cpp:
        (WebCore::PopupMenuQt::PopupMenuQt):
        (WebCore::PopupMenuQt::~PopupMenuQt):
        (WebCore::PopupMenuQt::show):
        * WebCoreSupport/PopupMenuQt.h:
        * WebCoreSupport/QtPlatformPlugin.cpp:
        (WebCore::QtPlatformPlugin::createSelectInputMethod):
        (WebCore::QtPlatformPlugin::createNotificationPresenter):
        (WebCore::QtPlatformPlugin::createHapticFeedbackPlayer):
        (WebCore::QtPlatformPlugin::createTouchModifier):
        (WebCore::QtPlatformPlugin::createFullScreenVideoHandler):
        * WebCoreSupport/QtPlatformPlugin.h:
        (WebCore::QtPlatformPlugin::QtPlatformPlugin):
2011-05-16  Adam Barth  <abarth@webkit.org>

        [Qt] QtPlatformPlugin create methods should use PassOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=60873

        * plugins/qt/PluginViewQt.cpp:
        (WebCore::PluginView::platformStart):

------------------------------------------------------------------------
r86538 | abarth@webkit.org | 2011-05-16 10:27:51 +0300 (Mon, 16 May 2011) | 6 lines

2011-05-16  Adam Barth  <abarth@webkit.org>

        Missing include.

        * WebCoreSupport/PopupMenuQt.h:

------------------------------------------------------------------------
r86540 | abarth@webkit.org | 2011-05-16 10:43:22 +0300 (Mon, 16 May 2011) | 10 lines

2011-05-16  Adam Barth  <abarth@webkit.org>

        Attempt to fix Qt build.  (Strict PassOwnPtr fix.)

        This patch requires some slightly fancy footwork.

        * WebCoreSupport/InspectorClientQt.cpp:
        (WebCore::InspectorClientQt::openInspectorFrontend):
        (WebCore::InspectorFrontendClientQt::InspectorFrontendClientQt):

------------------------------------------------------------------------
r86541 | abarth@webkit.org | 2011-05-16 10:51:04 +0300 (Mon, 16 May 2011) | 7 lines

2011-05-16  Adam Barth  <abarth@webkit.org>

        Sigh.  This code is somewhat crazy.

        * WebCoreSupport/InspectorClientQt.cpp:
        (WebCore::InspectorClientQt::openInspectorFrontend):

------------------------------------------------------------------------
r86550 | abarth@webkit.org | 2011-05-16 12:30:40 +0300 (Mon, 16 May 2011) | 13 lines

2011-05-16  Adam Barth  <abarth@webkit.org>

        Partial revert of r86537.  FullScreenVideoQt.h can't depend on OwnPtr.h
        because moc_FullScreenVideoQt.cpp fails to include config.h.
        Apparently, having moc_FullScreenVideoQt.cpp properly include config.h
        is hard, so we're going back to manual new and delete for this class.
        Bad times.

        * WebCoreSupport/FullScreenVideoQt.cpp:
        (WebCore::FullScreenVideoQt::FullScreenVideoQt):
        (WebCore::FullScreenVideoQt::~FullScreenVideoQt):
        * WebCoreSupport/FullScreenVideoQt.h:

------------------------------------------------------------------------
r90915 | andersca@apple.com | 2011-07-13 17:11:49 +0300 (Wed, 13 Jul 2011) | 7 lines

If a compiler has nullptr support, include <cstddef> to get the nullptr_t definition
https://bugs.webkit.org/show_bug.cgi?id=64429

Include the cstddef which has the nullptr_t typedef according to the C++0x standard.

* wtf/NullPtr.h:

------------------------------------------------------------------------
r92556 | darin@apple.com | 2011-08-06 23:17:26 +0300 (Sat, 06 Aug 2011) | 17 lines

Fix Timer heap implementation to work with more libraries (other versions of STL)
https://bugs.webkit.org/show_bug.cgi?id=65782

Reviewed by Anders Carlsson.

No behavior change, so no tests needed. Existing tests pass.

* platform/Timer.cpp: Added TimerHeapPointer and TimerHeapReference class
alongside the TimerHeapIterator class. Also added a swap function. Also
added a TimerHeapLessThanFunction class.
(WebCore::TimerBase::heapDecreaseKey): Pass pointers in to the TimerHeapIterator
since that's how the class works now. Pass a TimerHeapLessThanFunction object
instead of letting the library use the < operator directly.
(WebCore::TimerBase::heapPopMin): Ditto.

* platform/Timer.h: Updated for above changes.

------------------------------------------------------------------------
r107489 | weinig@apple.com | 2012-02-12 01:10:24 +0200 (Sun, 12 Feb 2012) | 9 lines

Prepare JavaScriptCore to build with libc++
<rdar://problem/10426673>
https://bugs.webkit.org/show_bug.cgi?id=78424

Reviewed by Anders Carlsson.

* wtf/NullPtr.cpp:
* wtf/NullPtr.h:
libc++ provides std::nullptr emulation, so we don't have to.

------------------------------------------------------------------------
--- src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h
@@ -35,9 +35,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH D
     #define __has_feature(feature) 0
 #endif
 
+#include <ciso646>
+
 #if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL)) || defined(_LIBCPP_VERSION)
 
 #define HAVE_NULLPTR 1
+
+#include <cstddef>
 
 #else
 
--- src/3rdparty/webkit/Source/WebCore/dom/XMLDocumentParserQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/dom/XMLDocumentParserQt.cpp
@@ -215,7 +215,7 @@ void XMLDocumentParser::doEnd()
 {
 #if ENABLE(XSLT)
     if (m_sawXSLTransform) {
-        document()->setTransformSource(new TransformSource(m_originalSourceForTransform));
+        document()->setTransformSource(adoptPtr(new TransformSource(m_originalSourceForTransform)));
         document()->setParsing(false); // Make the doc think it's done, so it will apply xsl sheets.
         document()->styleSelectorChanged(RecalcStyleImmediately);
         document()->setParsing(true);
--- src/3rdparty/webkit/Source/WebCore/loader/icon/IconRecord.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/loader/icon/IconRecord.h
@@ -38,7 +38,7 @@
 #include <wtf/OwnPtr.h>
 #include <wtf/text/StringHash.h>
 
-#if OS(SOLARIS)
+#if OS(FREEBSD) || OS(SOLARIS)
 #include <sys/types.h> // For time_t structure.
 #endif
 
--- src/3rdparty/webkit/Source/WebCore/page/Page.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/page/Page.h
@@ -29,7 +29,7 @@
 #include <wtf/HashSet.h>
 #include <wtf/Noncopyable.h>
 
-#if OS(SOLARIS)
+#if OS(FREEBSD) || OS(SOLARIS)
 #include <sys/time.h> // For time_t structure.
 #endif
 
--- src/3rdparty/webkit/Source/WebCore/platform/network/ResourceResponseBase.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/platform/network/ResourceResponseBase.h
@@ -35,7 +35,7 @@
 #include <wtf/PassOwnPtr.h>
 #include <wtf/RefPtr.h>
 
-#if OS(SOLARIS)
+#if OS(FREEBSD) || OS(SOLARIS)
 #include <sys/time.h> // For time_t structure.
 #endif
 
--- src/3rdparty/webkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -285,7 +285,7 @@ void QNetworkReplyWrapper::receiveMetaData()
 
     Q_ASSERT(!m_sniffer);
 
-    m_sniffer = new QtMIMETypeSniffer(m_reply, m_advertisedMIMEType, isSupportedImageType);
+    m_sniffer = adoptPtr(new QtMIMETypeSniffer(m_reply, m_advertisedMIMEType, isSupportedImageType));
 
     if (m_sniffer->isFinished()) {
         receiveSniffedMIMEType();
@@ -666,7 +666,7 @@ void QNetworkReplyHandler::start()
     if (!reply)
         return;
 
-    m_replyWrapper = new QNetworkReplyWrapper(&m_queue, reply, m_resourceHandle->shouldContentSniff() && d->m_context->mimeSniffingEnabled(), this);
+    m_replyWrapper = adoptPtr(new QNetworkReplyWrapper(&m_queue, reply, m_resourceHandle->shouldContentSniff() && d->m_context->mimeSniffingEnabled(), this));
 
     if (m_loadType == SynchronousLoad) {
         m_replyWrapper->synchronousLoad();
--- src/3rdparty/webkit/Source/WebCore/platform/text/qt/TextCodecQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/platform/text/qt/TextCodecQt.cpp
@@ -64,7 +64,7 @@ void TextCodecQt::registerEncodingNames(EncodingNameRe
 
 static PassOwnPtr<TextCodec> newTextCodecQt(const TextEncoding& encoding, const void*)
 {
-    return new TextCodecQt(encoding);
+    return adoptPtr(new TextCodecQt(encoding));
 }
 
 void TextCodecQt::registerCodecs(TextCodecRegistrar registrar)
--- src/3rdparty/webkit/Source/WebCore/plugins/qt/PluginViewQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebCore/plugins/qt/PluginViewQt.cpp
@@ -950,7 +950,7 @@ bool PluginView::platformStart()
 
 #if USE(ACCELERATED_COMPOSITING) && !USE(TEXTURE_MAPPER)
         if (shouldUseAcceleratedCompositing()) {
-            m_platformLayer = new PluginGraphicsLayerQt(this);
+            m_platformLayer = adoptPtr(new PluginGraphicsLayerQt(this));
             // Trigger layer computation in RenderLayerCompositor
             m_element->setNeedsStyleRecalc(SyntheticStyleChange);
         }
--- src/3rdparty/webkit/Source/WebKit/qt/Api/qgraphicswebview.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/Api/qgraphicswebview.cpp
@@ -504,7 +504,7 @@ void QGraphicsWebView::setPage(QWebPage* page)
     if (!d->page)
         return;
 
-    d->page->d->client = new PageClientQGraphicsWidget(this, page); // set the page client
+    d->page->d->client = adoptPtr(new PageClientQGraphicsWidget(this, page));
 
     if (d->overlay())
         d->overlay()->prepareGraphicsItemGeometryChange();
--- src/3rdparty/webkit/Source/WebKit/qt/Api/qwebpage.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/Api/qwebpage.cpp
@@ -1343,7 +1343,7 @@ void QWebPagePrivate::adjustPointForClicking(QMouseEve
 void QWebPagePrivate::adjustPointForClicking(QGraphicsSceneMouseEvent* ev)
 {
     QtPlatformPlugin platformPlugin;
-    QWebTouchModifier* touchModifier = platformPlugin.createTouchModifier();
+    OwnPtr<QWebTouchModifier> touchModifier = platformPlugin.createTouchModifier();
     if (!touchModifier)
         return;
 
@@ -1352,8 +1352,7 @@ void QWebPagePrivate::adjustPointForClicking(QGraphics
     unsigned bottomPadding = touchModifier->hitTestPaddingForTouch(QWebTouchModifier::Down);
     unsigned leftPadding = touchModifier->hitTestPaddingForTouch(QWebTouchModifier::Left);
 
-    delete touchModifier;
-    touchModifier = 0;
+    touchModifier = nullptr;
 
     if (!topPadding && !rightPadding && !bottomPadding && !leftPadding)
         return;
@@ -2068,7 +2067,7 @@ void QWebPage::setView(QWidget* view)
     }
 
     if (view)
-        d->client = new PageClientQWidget(view, this);
+        d->client = adoptPtr(new PageClientQWidget(view, this));
 }
 
 /*!
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
@@ -702,18 +702,18 @@ void ChromeClientQt::exitFullscreenForNode(Node* node)
 } 
 #endif
 
-QWebSelectMethod* ChromeClientQt::createSelectPopup() const
+PassOwnPtr<QWebSelectMethod> ChromeClientQt::createSelectPopup() const
 {
-    QWebSelectMethod* result = m_platformPlugin.createSelectInputMethod();
+    OwnPtr<QWebSelectMethod> result = m_platformPlugin.createSelectInputMethod();
     if (result)
-        return result;
+        return result.release();
 
 #if defined(Q_WS_MAEMO_5)
-    return new QtMaemoWebPopup;
+    return adoptPtr(new QtMaemoWebPopup);
 #elif !defined(QT_NO_COMBOBOX)
-    return new QtFallbackWebPopup(this);
+    return adoptPtr(new QtFallbackWebPopup(this));
 #else
-    return 0;
+    return nullptr;
 #endif
 }
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h
@@ -34,6 +34,7 @@
 #include "KURL.h"
 #include "PlatformString.h"
 #include "QtPlatformPlugin.h"
+#include <wtf/PassOwnPtr.h>
 #include <wtf/RefCounted.h>
 
 QT_BEGIN_NAMESPACE
@@ -190,7 +191,7 @@ class ChromeClientQt : public ChromeClient { (public)
     virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
     virtual void populateVisitedLinks();
 
-    QWebSelectMethod* createSelectPopup() const;
+    PassOwnPtr<QWebSelectMethod> createSelectPopup() const;
 
     virtual void dispatchViewportDataDidChange(const ViewportArguments&) const;
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FullScreenVideoQt.cpp
@@ -140,7 +140,7 @@ FullScreenVideoQt::FullScreenVideoQt(ChromeClientQt* c
     Q_ASSERT(m_chromeClient);
 
 #if USE(QT_MULTIMEDIA)
-    m_FullScreenVideoHandler = m_chromeClient->m_platformPlugin.createFullScreenVideoHandler();
+    m_FullScreenVideoHandler = m_chromeClient->m_platformPlugin.createFullScreenVideoHandler().leakPtr();
     if (!m_FullScreenVideoHandler)
         m_FullScreenVideoHandler = new DefaultFullScreenVideoHandler;
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
@@ -203,8 +203,9 @@ void InspectorClientQt::inspectorDestroyed()
 void InspectorClientQt::openInspectorFrontend(WebCore::InspectorController* inspectorController)
 {
 #if ENABLE(INSPECTOR)
-    QWebView* inspectorView = new QWebView;
-    InspectorClientWebPage* inspectorPage = new InspectorClientWebPage(inspectorView);
+    OwnPtr<QWebView> inspectorView = adoptPtr(new QWebView);
+    // FIXME: Where does inspectorPage get deleted?
+    InspectorClientWebPage* inspectorPage = new InspectorClientWebPage(inspectorView.get());
     inspectorView->setPage(inspectorPage);
 
     QWebInspector* inspector = m_inspectedWebPage->d->getOrCreateInspector();
@@ -229,11 +230,14 @@ void InspectorClientQt::openInspectorFrontend(WebCore:
         inspectorPage->setProperty("_q_inspectorJavaScriptWindowObjects", inspectorJavaScriptWindowObjects);
 #endif
     inspectorView->page()->mainFrame()->load(inspectorUrl);
-    m_inspectedWebPage->d->inspectorFrontend = inspectorView;
-    inspector->d->setFrontend(inspectorView);
+    m_inspectedWebPage->d->inspectorFrontend = inspectorView.get();
+    inspector->d->setFrontend(inspectorView.get());
 
-    m_frontendClient = new InspectorFrontendClientQt(m_inspectedWebPage, inspectorView, this);
-    inspectorView->page()->d->page->inspectorController()->setInspectorFrontendClient(m_frontendClient);
+    // Is 'controller' the same object as 'inspectorController' (which appears to be unused)?
+    InspectorController* controller = inspectorView->page()->d->page->inspectorController();
+    OwnPtr<InspectorFrontendClientQt> frontendClient = adoptPtr(new InspectorFrontendClientQt(m_inspectedWebPage, inspectorView.release(), this));
+    m_frontendClient = frontendClient.get();
+    controller->setInspectorFrontendClient(frontendClient.release());
     m_frontendWebPage = inspectorPage;
 #endif
 }
@@ -297,7 +301,7 @@ bool InspectorClientQt::sendMessageToFrontend(const St
 
 #if ENABLE(INSPECTOR)
 InspectorFrontendClientQt::InspectorFrontendClientQt(QWebPage* inspectedWebPage, PassOwnPtr<QWebView> inspectorView, InspectorClientQt* inspectorClient)
-    : InspectorFrontendClientLocal(inspectedWebPage->d->page->inspectorController(), inspectorView->page()->d->page, new InspectorFrontendSettingsQt())
+    : InspectorFrontendClientLocal(inspectedWebPage->d->page->inspectorController(), inspectorView->page()->d->page, adoptPtr(new InspectorFrontendSettingsQt()))
     , m_inspectedWebPage(inspectedWebPage)
     , m_inspectorView(inspectorView)
     , m_destroyingInspectorView(false)
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp
@@ -211,9 +211,9 @@ void NotificationPresenterClientQt::displayNotificatio
         QPixmap pixmap;
         if (bytes.length() && pixmap.loadFromData(bytes)) {
             QIcon icon(pixmap);
-            wrapper->m_notificationIcon = new QSystemTrayIcon(icon);
+            wrapper->m_notificationIcon = adoptPtr(new QSystemTrayIcon(icon));
         } else
-            wrapper->m_notificationIcon = new QSystemTrayIcon();
+            wrapper->m_notificationIcon = adoptPtr(new QSystemTrayIcon());
 #endif
     }
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/PopupMenuQt.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/PopupMenuQt.cpp
@@ -82,16 +82,12 @@ namespace WebCore {
 
 PopupMenuQt::PopupMenuQt(PopupMenuClient* client, const ChromeClientQt* chromeClient)
     : m_popupClient(client)
-    , m_popup(0)
-    , m_selectData(0)
     , m_chromeClient(chromeClient)
 {
 }
 
 PopupMenuQt::~PopupMenuQt()
 {
-    delete m_selectData;
-    delete m_popup;
 }
 
 void PopupMenuQt::disconnectClient()
@@ -107,21 +103,19 @@ void PopupMenuQt::show(const IntRect& rect, FrameView*
 
     if (!m_popup) {
         m_popup = m_chromeClient->createSelectPopup();
-        connect(m_popup, SIGNAL(didHide()), this, SLOT(didHide()));
-        connect(m_popup, SIGNAL(selectItem(int, bool, bool)), this, SLOT(selectItem(int, bool, bool)));
+        connect(m_popup.get(), SIGNAL(didHide()), this, SLOT(didHide()));
+        connect(m_popup.get(), SIGNAL(selectItem(int, bool, bool)), this, SLOT(selectItem(int, bool, bool)));
     }
 
-    if (QtFallbackWebPopup* fallback = qobject_cast<QtFallbackWebPopup*>(m_popup)) {
+    if (QtFallbackWebPopup* fallback = qobject_cast<QtFallbackWebPopup*>(m_popup.get())) {
         QRect geometry(rect);
         geometry.moveTopLeft(view->contentsToWindow(rect.location()));
         fallback->setGeometry(geometry);
         fallback->setFont(m_popupClient->menuStyle().font().font());
     }
 
-    if (m_selectData)
-        delete m_selectData;
-    m_selectData = new SelectData(m_popupClient);
-    m_popup->show(*m_selectData);
+    m_selectData = adoptPtr(new SelectData(m_popupClient));
+    m_popup->show(*m_selectData.get());
 #endif
 }
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/PopupMenuQt.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/PopupMenuQt.h
@@ -22,6 +22,8 @@
 
 #include "PopupMenu.h"
 #include <QObject>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
 
 class QWebSelectData;
 class QWebSelectMethod;
@@ -49,8 +51,8 @@ private slots:
 
 private:
     PopupMenuClient* m_popupClient;
-    QWebSelectMethod* m_popup;
-    QWebSelectData* m_selectData;
+    OwnPtr<QWebSelectMethod> m_popup;
+    OwnPtr<QWebSelectData> m_selectData;
     const ChromeClientQt* m_chromeClient;
 };
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp
@@ -102,36 +102,35 @@ QWebKitPlatformPlugin* QtPlatformPlugin::plugin()
     return m_plugin;
 }
 
-QWebSelectMethod* QtPlatformPlugin::createSelectInputMethod()
+PassOwnPtr<QWebSelectMethod> QtPlatformPlugin::createSelectInputMethod()
 {
     QWebKitPlatformPlugin* p = plugin();
-    return p ? static_cast<QWebSelectMethod*>(p->createExtension(QWebKitPlatformPlugin::MultipleSelections)) : 0;
+    return adoptPtr(p ? static_cast<QWebSelectMethod*>(p->createExtension(QWebKitPlatformPlugin::MultipleSelections)) : 0);
 }
 
-
-QWebNotificationPresenter* QtPlatformPlugin::createNotificationPresenter()
+PassOwnPtr<QWebNotificationPresenter> QtPlatformPlugin::createNotificationPresenter()
 {
     QWebKitPlatformPlugin* p = plugin();
-    return p ? static_cast<QWebNotificationPresenter*>(p->createExtension(QWebKitPlatformPlugin::Notifications)) : 0;
+    return adoptPtr(p ? static_cast<QWebNotificationPresenter*>(p->createExtension(QWebKitPlatformPlugin::Notifications)) : 0);
 }
 
-QWebHapticFeedbackPlayer* QtPlatformPlugin::createHapticFeedbackPlayer()
+PassOwnPtr<QWebHapticFeedbackPlayer> QtPlatformPlugin::createHapticFeedbackPlayer()
 {
     QWebKitPlatformPlugin* p = plugin();
-    return p ? static_cast<QWebHapticFeedbackPlayer*>(p->createExtension(QWebKitPlatformPlugin::Haptics)) : 0;
+    return adoptPtr(p ? static_cast<QWebHapticFeedbackPlayer*>(p->createExtension(QWebKitPlatformPlugin::Haptics)) : 0);
 }
 
-QWebTouchModifier* QtPlatformPlugin::createTouchModifier()
+PassOwnPtr<QWebTouchModifier> QtPlatformPlugin::createTouchModifier()
 {
     QWebKitPlatformPlugin* p = plugin();
-    return p ? static_cast<QWebTouchModifier*>(p->createExtension(QWebKitPlatformPlugin::TouchInteraction)) : 0;
+    return adoptPtr(p ? static_cast<QWebTouchModifier*>(p->createExtension(QWebKitPlatformPlugin::TouchInteraction)) : 0);
 }
 
 #if ENABLE(VIDEO) && USE(QT_MULTIMEDIA)
-QWebFullScreenVideoHandler* QtPlatformPlugin::createFullScreenVideoHandler()
+PassOwnPtr<QWebFullScreenVideoHandler> QtPlatformPlugin::createFullScreenVideoHandler()
 {
     QWebKitPlatformPlugin* p = plugin();
-    return p ? static_cast<QWebFullScreenVideoHandler*>(p->createExtension(QWebKitPlatformPlugin::FullScreenVideoPlayer)) : 0;
+    return adoptPtr(p ? static_cast<QWebFullScreenVideoHandler*>(p->createExtension(QWebKitPlatformPlugin::FullScreenVideoPlayer)) : 0);
 }
 #endif
 
--- src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.h.orig	2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/QtPlatformPlugin.h
@@ -22,6 +22,7 @@
 #define QtPlatformPlugin_h
 
 #include <QPluginLoader>
+#include <wtf/PassOwnPtr.h>
 
 class QWebSelectMethod;
 class QWebKitPlatformPlugin;
@@ -37,15 +38,20 @@ namespace WebCore {
 
 class QtPlatformPlugin {
 public:
-    QtPlatformPlugin() : m_loaded(false), m_plugin(0) {}
+    QtPlatformPlugin()
+        : m_loaded(false)
+        , m_plugin(0)
+    {
+    }
+
     ~QtPlatformPlugin();
 
-    QWebSelectMethod* createSelectInputMethod();
-    QWebNotificationPresenter* createNotificationPresenter();
-    QWebHapticFeedbackPlayer* createHapticFeedbackPlayer();
-    QWebTouchModifier* createTouchModifier();
+    PassOwnPtr<QWebSelectMethod> createSelectInputMethod();
+    PassOwnPtr<QWebNotificationPresenter> createNotificationPresenter();
+    PassOwnPtr<QWebHapticFeedbackPlayer> createHapticFeedbackPlayer();
+    PassOwnPtr<QWebTouchModifier> createTouchModifier();
 #if ENABLE(VIDEO) && USE(QT_MULTIMEDIA)
-    QWebFullScreenVideoHandler* createFullScreenVideoHandler();
+    PassOwnPtr<QWebFullScreenVideoHandler> createFullScreenVideoHandler();
 #endif
 
     QWebKitPlatformPlugin* plugin();
