diff options
| -rw-r--r-- | src/core/custom_url_scheme_handler.cpp | 6 | ||||
| -rw-r--r-- | src/core/custom_url_scheme_handler.h | 3 | ||||
| -rw-r--r-- | src/core/url_request_context_getter_qt.cpp | 4 | ||||
| -rw-r--r-- | src/core/url_request_custom_job.cpp | 2 | ||||
| -rw-r--r-- | src/webenginewidgets/api/qwebengineurlschemehandler.cpp | 9 | ||||
| -rw-r--r-- | src/webenginewidgets/api/qwebengineurlschemehandler_p.h | 2 | ||||
| -rw-r--r-- | src/webenginewidgets/api/qwebengineurlschemehandler_p_p.h | 4 | 
7 files changed, 16 insertions, 14 deletions
diff --git a/src/core/custom_url_scheme_handler.cpp b/src/core/custom_url_scheme_handler.cpp index a8701a5d4..edc8000c9 100644 --- a/src/core/custom_url_scheme_handler.cpp +++ b/src/core/custom_url_scheme_handler.cpp @@ -39,7 +39,6 @@  CustomUrlSchemeHandler::CustomUrlSchemeHandler(const QByteArray &scheme)      : m_scheme(scheme) -    , m_protocolHandler(new CustomProtocolHandler(this))  {  } @@ -57,7 +56,8 @@ void CustomUrlSchemeHandler::setScheme(const QByteArray &scheme)      m_scheme = scheme;  } -CustomProtocolHandler *CustomUrlSchemeHandler::protocolHandler() +CustomProtocolHandler *CustomUrlSchemeHandler::createProtocolHandler()  { -    return m_protocolHandler.data(); +    // Will be owned by the JobFactory. +    return new CustomProtocolHandler(this);  } diff --git a/src/core/custom_url_scheme_handler.h b/src/core/custom_url_scheme_handler.h index fef29c98a..dbcdf2a60 100644 --- a/src/core/custom_url_scheme_handler.h +++ b/src/core/custom_url_scheme_handler.h @@ -55,13 +55,12 @@ public:      QByteArray scheme() const;      void setScheme(const QByteArray &); -    CustomProtocolHandler *protocolHandler(); +    CustomProtocolHandler *createProtocolHandler();      virtual bool handleJob(URLRequestCustomJobDelegate*) = 0;  private:      QByteArray m_scheme; -    QScopedPointer<CustomProtocolHandler> m_protocolHandler;  };  #endif // CUSTOM_URL_SCHEME_HANDLER_H_ diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp index 41af37e5d..0a604eaaa 100644 --- a/src/core/url_request_context_getter_qt.cpp +++ b/src/core/url_request_context_getter_qt.cpp @@ -122,6 +122,8 @@ void URLRequestContextGetterQt::generateStorage()  {      Q_ASSERT(m_urlRequestContext);      Q_ASSERT(m_proxyConfigService); +    if (!m_proxyConfigService) +        return;      m_updateStorageSettings = false;      m_storage.reset(new net::URLRequestContextStorage(m_urlRequestContext.get())); @@ -285,7 +287,7 @@ void URLRequestContextGetterQt::generateJobFactory()          new net::FtpProtocolHandler(new net::FtpNetworkLayer(m_urlRequestContext->host_resolver())));      Q_FOREACH (CustomUrlSchemeHandler* handler, m_browserContext->customUrlSchemeHandlers()) { -        m_jobFactory->SetProtocolHandler(handler->scheme().toStdString(), handler->protocolHandler()); +        m_jobFactory->SetProtocolHandler(handler->scheme().toStdString(), handler->createProtocolHandler());      }      m_urlRequestContext->set_job_factory(m_jobFactory.get()); diff --git a/src/core/url_request_custom_job.cpp b/src/core/url_request_custom_job.cpp index e97804c2f..f206955f1 100644 --- a/src/core/url_request_custom_job.cpp +++ b/src/core/url_request_custom_job.cpp @@ -72,7 +72,7 @@ void URLRequestCustomJob::Start()  void URLRequestCustomJob::Kill()  { -    if (m_device->isOpen()) +    if (m_device && m_device->isOpen())          m_device->close();      m_weakFactory.InvalidateWeakPtrs(); diff --git a/src/webenginewidgets/api/qwebengineurlschemehandler.cpp b/src/webenginewidgets/api/qwebengineurlschemehandler.cpp index b52912b7c..ccb92258b 100644 --- a/src/webenginewidgets/api/qwebengineurlschemehandler.cpp +++ b/src/webenginewidgets/api/qwebengineurlschemehandler.cpp @@ -41,8 +41,6 @@  #include "qwebengineprofile_p.h"  #include "qwebengineurlrequestjob_p.h" -#include <QSharedPointer> -  QT_BEGIN_NAMESPACE  QWebEngineUrlSchemeHandlerPrivate::QWebEngineUrlSchemeHandlerPrivate(const QByteArray &scheme, QWebEngineUrlSchemeHandler *q, QWebEngineProfile *profile) @@ -63,8 +61,8 @@ bool QWebEngineUrlSchemeHandlerPrivate::handleJob(URLRequestCustomJobDelegate *j      return true;  } -QWebEngineUrlSchemeHandler::QWebEngineUrlSchemeHandler(const QByteArray &scheme, QWebEngineProfile *profile) -    : QObject(profile) +QWebEngineUrlSchemeHandler::QWebEngineUrlSchemeHandler(const QByteArray &scheme, QWebEngineProfile *profile, QObject *parent) +    : QObject(parent)      , d_ptr(new QWebEngineUrlSchemeHandlerPrivate(scheme, this, profile))  {      profile->d_func()->installUrlSchemeHandler(this); @@ -72,7 +70,8 @@ QWebEngineUrlSchemeHandler::QWebEngineUrlSchemeHandler(const QByteArray &scheme,  QWebEngineUrlSchemeHandler::~QWebEngineUrlSchemeHandler()  { -    d_ptr->m_profile->d_func()->removeUrlSchemeHandler(this); +    if (d_ptr->m_profile) +        d_ptr->m_profile->d_func()->removeUrlSchemeHandler(this);  }  QByteArray QWebEngineUrlSchemeHandler::scheme() const diff --git a/src/webenginewidgets/api/qwebengineurlschemehandler_p.h b/src/webenginewidgets/api/qwebengineurlschemehandler_p.h index 0455128c7..153b78f81 100644 --- a/src/webenginewidgets/api/qwebengineurlschemehandler_p.h +++ b/src/webenginewidgets/api/qwebengineurlschemehandler_p.h @@ -54,7 +54,7 @@ class QWebEngineUrlSchemeHandlerPrivate;  class QWEBENGINEWIDGETS_EXPORT QWebEngineUrlSchemeHandler : public QObject {      Q_OBJECT  public: -    QWebEngineUrlSchemeHandler(const QByteArray &scheme, QWebEngineProfile *profile); +    QWebEngineUrlSchemeHandler(const QByteArray &scheme, QWebEngineProfile *profile, QObject *parent = 0);      virtual ~QWebEngineUrlSchemeHandler();      QByteArray scheme() const; diff --git a/src/webenginewidgets/api/qwebengineurlschemehandler_p_p.h b/src/webenginewidgets/api/qwebengineurlschemehandler_p_p.h index e880bf000..6146cc05e 100644 --- a/src/webenginewidgets/api/qwebengineurlschemehandler_p_p.h +++ b/src/webenginewidgets/api/qwebengineurlschemehandler_p_p.h @@ -41,6 +41,8 @@  #include "custom_url_scheme_handler.h" +#include <QPointer> +  QT_BEGIN_NAMESPACE  class QWebEngineProfile; @@ -58,7 +60,7 @@ public:  private:      QWebEngineUrlSchemeHandler *q_ptr; -    QWebEngineProfile* m_profile; +    QPointer<QWebEngineProfile> m_profile;  };  QT_END_NAMESPACE  | 
