Skip to content

Commit

Permalink
Use smart pointers in NetworkDataTask
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=259162
rdar://112157898

Reviewed by Chris Dumez.

* Source/WebKit/NetworkProcess/BackgroundFetchLoad.h:
* Source/WebKit/NetworkProcess/Downloads/PendingDownload.h:
* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::setPendingDownload):
(WebKit::NetworkDataTask::pendingDownload const):
* Source/WebKit/NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::client const):
(WebKit::NetworkDataTask::pendingDownload const): Deleted.
(WebKit::NetworkDataTask::setPendingDownload): Deleted.
* Source/WebKit/NetworkProcess/PingLoad.h:

Canonical link: https://commits.webkit.org/266012@main
  • Loading branch information
achristensen07 committed Jul 12, 2023
1 parent 302c4c5 commit 526d9c0
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Source/WebKit/NetworkProcess/BackgroundFetchLoad.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ namespace WebKit {
class NetworkLoadChecker;
class NetworkProcess;

class BackgroundFetchLoad final : public WebCore::BackgroundFetchRecordLoader, public CanMakeWeakPtr<BackgroundFetchLoad>, private NetworkDataTaskClient {
class BackgroundFetchLoad final : public WebCore::BackgroundFetchRecordLoader, public NetworkDataTaskClient {
WTF_MAKE_FAST_ALLOCATED;
public:
BackgroundFetchLoad(NetworkProcess&, PAL::SessionID, Client&, const WebCore::BackgroundFetchRequest&, size_t responseDataSize, const WebCore::ClientOrigin&);
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/NetworkProcess/Downloads/PendingDownload.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class NetworkLoad;
class NetworkLoadParameters;
class NetworkSession;

class PendingDownload : public NetworkLoadClient, public IPC::MessageSender {
class PendingDownload : public NetworkLoadClient, public IPC::MessageSender, public CanMakeWeakPtr<PendingDownload> {
WTF_MAKE_FAST_ALLOCATED;
public:
PendingDownload(IPC::Connection*, NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
Expand Down
11 changes: 11 additions & 0 deletions Source/WebKit/NetworkProcess/NetworkDataTask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,4 +205,15 @@ String NetworkDataTask::attributedBundleIdentifier(WebPageProxyIdentifier pageID
return { };
}

void NetworkDataTask::setPendingDownload(PendingDownload& pendingDownload)
{
ASSERT(!m_pendingDownload);
m_pendingDownload = { pendingDownload };
}

PendingDownload* NetworkDataTask::pendingDownload() const
{
return m_pendingDownload.get();
}

} // namespace WebKit
16 changes: 6 additions & 10 deletions Source/WebKit/NetworkProcess/NetworkDataTask.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ using RedirectCompletionHandler = CompletionHandler<void(WebCore::ResourceReques
using ChallengeCompletionHandler = CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>;
using ResponseCompletionHandler = CompletionHandler<void(WebCore::PolicyAction)>;

class NetworkDataTaskClient {
class NetworkDataTaskClient : public CanMakeWeakPtr<NetworkDataTaskClient> {
public:
virtual void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler&&) = 0;
virtual void didReceiveChallenge(WebCore::AuthenticationChallenge&&, NegotiatedLegacyTLS, ChallengeCompletionHandler&&) = 0;
Expand Down Expand Up @@ -108,22 +108,18 @@ class NetworkDataTask : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<N
};
virtual State state() const = 0;

NetworkDataTaskClient* client() const { return m_client; }
NetworkDataTaskClient* client() const { return m_client.get(); }
void clearClient() { m_client = nullptr; }

DownloadID pendingDownloadID() const { return m_pendingDownloadID; }
PendingDownload* pendingDownload() const { return m_pendingDownload; }
PendingDownload* pendingDownload() const;
void setPendingDownloadID(DownloadID downloadID)
{
ASSERT(!m_pendingDownloadID);
ASSERT(downloadID);
m_pendingDownloadID = downloadID;
}
void setPendingDownload(PendingDownload& pendingDownload)
{
ASSERT(!m_pendingDownload);
m_pendingDownload = &pendingDownload;
}
void setPendingDownload(PendingDownload&);

virtual void setPendingDownloadLocation(const String& filename, SandboxExtension::Handle&&, bool /*allowOverwrite*/) { m_pendingDownloadLocation = filename; }
const String& pendingDownloadLocation() const { return m_pendingDownloadLocation; }
Expand Down Expand Up @@ -165,8 +161,8 @@ class NetworkDataTask : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<N
void restrictRequestReferrerToOriginIfNeeded(WebCore::ResourceRequest&);

WeakPtr<NetworkSession> m_session;
NetworkDataTaskClient* m_client { nullptr };
PendingDownload* m_pendingDownload { nullptr };
WeakPtr<NetworkDataTaskClient> m_client;
WeakPtr<PendingDownload> m_pendingDownload;
DownloadID m_pendingDownloadID;
String m_user;
String m_password;
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/NetworkProcess/PingLoad.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class NetworkLoadChecker;
class NetworkProcess;
class NetworkSchemeRegistry;

class PingLoad final : public CanMakeWeakPtr<PingLoad>, private NetworkDataTaskClient {
class PingLoad final : public NetworkDataTaskClient {
public:
PingLoad(NetworkProcess&, PAL::SessionID, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
PingLoad(NetworkConnectionToWebProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
Expand Down

0 comments on commit 526d9c0

Please sign in to comment.