diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2023-08-18 16:17:22 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-09-12 12:49:14 +0000 |
commit | 4ed36a52d0c67f5615ca97fa2107bce21613f59c (patch) | |
tree | dc112f960fca853dd610823c39ac747cfb132ee5 /src | |
parent | a7b34c221d266e9b84077de90127d0e3ba252f5c (diff) |
Port away from QScopedPointer::take() - non-trivial case
The API was deprecated in Qt 6.0, so use std::unique_ptr instead.
The QWebEngineUrlRequestInfo's destructor is private, so create
a custom deleter struct which properly deletes the object.
This works, because InterceptedRequest is a friend of
QWebEngineUrlRequestInfo.
Pick-to: 6.5
Change-Id: I69e1b31360ec5ae4b32b6e7f0416b39aecb2f5f9
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
(cherry picked from commit 6bd52dc09c0b4d32833c6ffef690838b2cbc73e7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/net/proxying_url_loader_factory_qt.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/core/net/proxying_url_loader_factory_qt.cpp b/src/core/net/proxying_url_loader_factory_qt.cpp index 79e036566..6743ff888 100644 --- a/src/core/net/proxying_url_loader_factory_qt.cpp +++ b/src/core/net/proxying_url_loader_factory_qt.cpp @@ -126,8 +126,6 @@ public: void PauseReadingBodyFromNet() override; void ResumeReadingBodyFromNet() override; - static inline void cleanup(QWebEngineUrlRequestInfo *info) { delete info; } - private: void InterceptOnUIThread(); void ContinueAfterIntercept(); @@ -169,7 +167,13 @@ private: const net::MutableNetworkTrafficAnnotationTag traffic_annotation_; - QScopedPointer<QWebEngineUrlRequestInfo, InterceptedRequest> request_info_; + struct RequestInfoDeleter + { + void operator()(QWebEngineUrlRequestInfo *ptr) const + { delete ptr; } + }; + + std::unique_ptr<QWebEngineUrlRequestInfo, RequestInfoDeleter> request_info_; mojo::Receiver<network::mojom::URLLoader> proxied_loader_receiver_; mojo::Remote<network::mojom::URLLoaderClient> target_client_; @@ -354,7 +358,7 @@ void InterceptedRequest::ContinueAfterIntercept() if (request_info_) { // cleanup in scope because of delete this and it's not needed else where after - decltype(request_info_) scoped_request_info(request_info_.take()); + const auto scoped_request_info = std::move(request_info_); QWebEngineUrlRequestInfoPrivate &info = *scoped_request_info->d_ptr; if (info.changed) { |