Diff
Modified: trunk/Source/WebKit/ChangeLog (260282 => 260283)
--- trunk/Source/WebKit/ChangeLog 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/ChangeLog 2020-04-17 21:20:25 UTC (rev 260283)
@@ -1,3 +1,63 @@
+2020-04-17 Chris Dumez <cdu...@apple.com>
+
+ [iOS] Refactor WebKit uploads process assertion logic to minimize chances of leaking them
+ https://bugs.webkit.org/show_bug.cgi?id=210664
+ <rdar://problem/61751982>
+
+ Reviewed by Geoff Garen.
+
+ To minimize chances of leaking "WebKit uploads" process assertion, the following refactoring
+ was done:
+ 1. WebKit upload assertions are now held by NetworkProcessProxy instead of the WebProcessPool.
+ This makes more sense since uploads are tied to a particular network process. In base of
+ a network process crash, we would not want those assertions to persist for example.
+ 2. Store all upload assertions (UIProcess + NetworkProcess + WebProcesses) into a single
+ UploadActivity data structure that can easily be cleared. Make sure we clear it on network
+ process crash.
+ 3. No longer on the WebProcess to send IPC whenever its has pending uploads or not. Instead,
+ have the network process send such IPC. This makes more sense, especially now that all
+ webkit upload process assertions are now stored on NetworkProcessProxy. It also makes it
+ so that we deal properly with WebProcess crashes. In case of a WebProcess crash, its
+ connection to the network process will get closed. NetworkConnectionToWebProcess::didClose()
+ gets called and causes all NetworkResourceLoader objects for this connection to get
+ destroyed. As a result, the network process will properly notify the UIProcess that this
+ process no longer has any upload in progress.
+
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
+ (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
+ (WebKit::NetworkConnectionToWebProcess::hasUploadStateChanged):
+ * NetworkProcess/NetworkConnectionToWebProcess.h:
+ * NetworkProcess/NetworkResourceLoadMap.cpp:
+ (WebKit::NetworkResourceLoadMap::NetworkResourceLoadMap):
+ (WebKit::NetworkResourceLoadMap::~NetworkResourceLoadMap):
+ (WebKit::NetworkResourceLoadMap::add):
+ (WebKit::NetworkResourceLoadMap::clear):
+ (WebKit::NetworkResourceLoadMap::take):
+ (WebKit::NetworkResourceLoadMap::setHasUpload):
+ * NetworkProcess/NetworkResourceLoadMap.h:
+ (WebKit::NetworkResourceLoadMap::hasUpload const):
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::didClose):
+ (WebKit::NetworkProcessProxy::setWebProcessHasUploads):
+ * UIProcess/Network/NetworkProcessProxy.h:
+ * UIProcess/Network/NetworkProcessProxy.messages.in:
+ * UIProcess/ProcessAssertion.cpp:
+ (WebKit::ProcessAssertion::ProcessAssertion):
+ * UIProcess/ProcessAssertion.h:
+ (WebKit::ProcessAssertion::pid const):
+ * UIProcess/WebProcessPool.cpp:
+ * UIProcess/WebProcessPool.h:
+ * UIProcess/WebProcessPool.messages.in:
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::~WebProcessProxy):
+ * UIProcess/WebProcessProxy.h:
+ * WebProcess/Network/WebLoaderStrategy.cpp:
+ (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
+ (WebKit::WebLoaderStrategy::remove):
+ (WebKit::WebLoaderStrategy::loadResourceSynchronously):
+ * WebProcess/Network/WebLoaderStrategy.h:
+
2020-04-17 Jer Noble <jer.no...@apple.com>
Bring Fullscreen API + alert() behavior from iOS to macOS
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (260282 => 260283)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -105,6 +105,7 @@
: m_connection(IPC::Connection::createServerConnection(connectionIdentifier, *this))
, m_networkProcess(networkProcess)
, m_sessionID(sessionID)
+ , m_networkResourceLoaders([this](bool hasUpload) { hasUploadStateChanged(hasUpload); })
#if ENABLE(WEB_RTC)
, m_mdnsRegister(*this)
#endif
@@ -131,6 +132,9 @@
m_connection->invalidate();
+ // This may call hasUploadStateChanged().
+ m_networkResourceLoaders.clear();
+
for (auto& port : m_processEntangledPorts)
networkProcess().messagePortChannelRegistry().didCloseMessagePort(port);
@@ -149,6 +153,12 @@
#endif
}
+void NetworkConnectionToWebProcess::hasUploadStateChanged(bool hasUpload)
+{
+ RELEASE_LOG_IF_ALLOWED(Loading, "hasUploadStateChanged - WebProcess %llu - hasUpload: %d", webProcessIdentifier().toUInt64(), hasUpload);
+ m_networkProcess->parentProcessConnection()->send(Messages::NetworkProcessProxy::SetWebProcessHasUploads(m_webProcessIdentifier, hasUpload), 0);
+}
+
void NetworkConnectionToWebProcess::didCleanupResourceLoader(NetworkResourceLoader& loader)
{
RELEASE_ASSERT(loader.identifier());
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (260282 => 260283)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -314,6 +314,8 @@
size_t findRootNetworkActivity(WebCore::PageIdentifier);
size_t findNetworkActivityTracker(ResourceLoadIdentifier resourceID);
+ void hasUploadStateChanged(bool);
+
#if ENABLE(APPLE_PAY_REMOTE_UI)
WebPaymentCoordinatorProxy& paymentCoordinator();
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadMap.cpp (260282 => 260283)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadMap.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadMap.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -29,10 +29,24 @@
namespace WebKit {
+NetworkResourceLoadMap::NetworkResourceLoadMap(Function<void(bool hasUpload)>&& hasUploadChangeListener)
+ : m_hasUploadChangeListener(WTFMove(hasUploadChangeListener))
+{
+}
+
+NetworkResourceLoadMap::~NetworkResourceLoadMap()
+{
+ clear();
+}
+
NetworkResourceLoadMap::MapType::AddResult NetworkResourceLoadMap::add(ResourceLoadIdentifier identifier, Ref<NetworkResourceLoader>&& loader)
{
ASSERT(!m_loaders.contains(identifier));
- return m_loaders.add(identifier, WTFMove(loader));
+ bool hasUpload = loader->originalRequest().hasUpload();
+ auto result = m_loaders.add(identifier, WTFMove(loader));
+ if (hasUpload)
+ setHasUpload(true);
+ return result;
}
bool NetworkResourceLoadMap::remove(ResourceLoadIdentifier identifier)
@@ -40,11 +54,21 @@
return !!take(identifier);
}
+void NetworkResourceLoadMap::clear()
+{
+ m_loaders.clear();
+ setHasUpload(false);
+}
+
RefPtr<NetworkResourceLoader> NetworkResourceLoadMap::take(ResourceLoadIdentifier identifier)
{
auto loader = m_loaders.take(identifier);
if (!loader)
return nullptr;
+
+ if ((*loader)->originalRequest().hasUpload())
+ setHasUpload(WTF::anyOf(m_loaders.values(), [](auto& loader) { return loader->originalRequest().hasUpload(); }));
+
return WTFMove(*loader);
}
@@ -53,4 +77,14 @@
return m_loaders.get(identifier);
}
+void NetworkResourceLoadMap::setHasUpload(bool hasUpload)
+{
+ if (m_hasUpload == hasUpload)
+ return;
+
+ m_hasUpload = hasUpload;
+ if (m_hasUploadChangeListener)
+ m_hasUploadChangeListener(m_hasUpload);
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadMap.h (260282 => 260283)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadMap.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadMap.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -42,11 +42,14 @@
class NetworkResourceLoadMap {
public:
typedef HashMap<ResourceLoadIdentifier, Ref<NetworkResourceLoader>> MapType;
+ NetworkResourceLoadMap(Function<void(bool hasUpload)>&&);
+ ~NetworkResourceLoadMap();
bool isEmpty() const { return m_loaders.isEmpty(); }
bool contains(ResourceLoadIdentifier identifier) const { return m_loaders.contains(identifier); }
MapType::iterator begin() { return m_loaders.begin(); }
MapType::ValuesIteratorRange values() { return m_loaders.values(); }
+ void clear();
MapType::AddResult add(ResourceLoadIdentifier, Ref<NetworkResourceLoader>&&);
NetworkResourceLoader* get(ResourceLoadIdentifier) const;
@@ -53,8 +56,14 @@
bool remove(ResourceLoadIdentifier);
RefPtr<NetworkResourceLoader> take(ResourceLoadIdentifier);
+ bool hasUpload() const { return m_hasUpload; }
+
private:
+ void setHasUpload(bool);
+
MapType m_loaders;
+ bool m_hasUpload { false };
+ Function<void(bool hasUpload)> m_hasUploadChangeListener;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -274,6 +274,8 @@
m_syncAllCookiesActivity = nullptr;
m_syncAllCookiesCounter = 0;
+ m_uploadActivity = WTF::nullopt;
+
// This will cause us to be deleted.
networkProcessCrashed();
}
@@ -1355,16 +1357,42 @@
#endif
}
-void NetworkProcessProxy::takeUploadAssertion()
+void NetworkProcessProxy::setWebProcessHasUploads(WebCore::ProcessIdentifier processID, bool hasUpload)
{
- ASSERT(!m_uploadAssertion);
- m_uploadAssertion = makeUnique<ProcessAssertion>(processIdentifier(), "WebKit uploads"_s, ProcessAssertionType::UnboundedNetworking);
-}
+ if (!hasUpload) {
+ if (!m_uploadActivity)
+ return;
-void NetworkProcessProxy::clearUploadAssertion()
-{
- ASSERT(m_uploadAssertion);
- m_uploadAssertion = nullptr;
+ auto assertion = m_uploadActivity->webProcessAssertions.take(processID);
+ if (!assertion)
+ return;
+
+ RELEASE_LOG(ProcessSuspension, "NetworkProcessProxy::setWebProcessHasUploads: Releasing upload assertion on behalf of WebProcess with PID %d", assertion->pid());
+
+ if (m_uploadActivity->webProcessAssertions.isEmpty()) {
+ RELEASE_LOG(ProcessSuspension, "NetworkProcessProxy::setWebProcessHasUploads: The number of uploads in progress is now zero. Releasing Networking and UI process assertions.");
+ m_uploadActivity = WTF::nullopt;
+ }
+ return;
+ }
+
+ auto* process = WebProcessProxy::processForIdentifier(processID);
+ if (!process)
+ return;
+
+ if (!m_uploadActivity) {
+ RELEASE_LOG(ProcessSuspension, "NetworkProcessProxy::setWebProcessHasUploads: The number of uploads in progress is now greater than 0. Taking Networking and UI process assertions.");
+ m_uploadActivity = UploadActivity {
+ makeUnique<ProcessAssertion>(getCurrentProcessID(), "WebKit uploads"_s, ProcessAssertionType::UnboundedNetworking),
+ makeUnique<ProcessAssertion>(processIdentifier(), "WebKit uploads"_s, ProcessAssertionType::UnboundedNetworking),
+ HashMap<WebCore::ProcessIdentifier, std::unique_ptr<ProcessAssertion>>()
+ };
+ }
+
+ m_uploadActivity->webProcessAssertions.ensure(processID, [&] {
+ RELEASE_LOG(ProcessSuspension, "NetworkProcessProxy::setWebProcessHasUploads: Taking upload assertion on behalf of WebProcess with PID %d", process->processIdentifier());
+ return makeUnique<ProcessAssertion>(process->processIdentifier(), "WebKit uploads"_s, ProcessAssertionType::UnboundedNetworking);
+ });
}
void NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply(WebPageProxyIdentifier pageID, Messages::NetworkProcessProxy::TestProcessIncomingSyncMessagesWhenWaitingForSyncReply::DelayedReply&& reply)
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -201,9 +201,6 @@
void addSession(Ref<WebsiteDataStore>&&);
void removeSession(PAL::SessionID);
- void takeUploadAssertion();
- void clearUploadAssertion();
-
#if ENABLE(INDEXED_DATABASE)
void createSymLinkForFileUpgrade(const String& indexedDatabaseDirectory);
#endif
@@ -255,6 +252,7 @@
void didFetchWebsiteData(CallbackID, const WebsiteData&);
void didDeleteWebsiteData(CallbackID);
void didDeleteWebsiteDataForOrigins(CallbackID);
+ void setWebProcessHasUploads(WebCore::ProcessIdentifier, bool);
void logDiagnosticMessage(WebPageProxyIdentifier, const String& message, const String& description, WebCore::ShouldSample);
void logDiagnosticMessageWithResult(WebPageProxyIdentifier, const String& message, const String& description, uint32_t result, WebCore::ShouldSample);
void logDiagnosticMessageWithValue(WebPageProxyIdentifier, const String& message, const String& description, double value, unsigned significantFigures, WebCore::ShouldSample);
@@ -311,8 +309,13 @@
#endif
HashMap<PAL::SessionID, RefPtr<WebsiteDataStore>> m_websiteDataStores;
-
- std::unique_ptr<ProcessAssertion> m_uploadAssertion;
+
+ struct UploadActivity {
+ std::unique_ptr<ProcessAssertion> uiAssertion;
+ std::unique_ptr<ProcessAssertion> networkAssertion;
+ HashMap<WebCore::ProcessIdentifier, std::unique_ptr<ProcessAssertion>> webProcessAssertions;
+ };
+ Optional<UploadActivity> m_uploadActivity;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in 2020-04-17 21:20:25 UTC (rev 260283)
@@ -65,6 +65,8 @@
UnregisterServiceWorkerClientProcess(WebCore::ProcessIdentifier webProcessIdentifier, WebCore::ProcessIdentifier serviceWorkerProcessIdentifier)
#endif
+ SetWebProcessHasUploads(WebCore::ProcessIdentifier processID, bool hasUpload)
+
RequestStorageSpace(PAL::SessionID sessionID, struct WebCore::ClientOrigin origin, uint64_t quota, uint64_t currentSize, uint64_t spaceRequired) -> (Optional<uint64_t> newQuota) Async
ResourceLoadDidSendRequest(WebKit::WebPageProxyIdentifier pageIdentifier, struct WebKit::ResourceLoadInfo resourceLoadInfo, WebCore::ResourceRequest request, Optional<IPC::FormDataReference> httpBody)
Modified: trunk/Source/WebKit/UIProcess/ProcessAssertion.cpp (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/ProcessAssertion.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/ProcessAssertion.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -32,8 +32,9 @@
namespace WebKit {
-ProcessAssertion::ProcessAssertion(ProcessID, ASCIILiteral, ProcessAssertionType assertionType)
+ProcessAssertion::ProcessAssertion(ProcessID pid, ASCIILiteral, ProcessAssertionType assertionType)
: m_assertionType(assertionType)
+ , m_pid(pid)
{
}
Modified: trunk/Source/WebKit/UIProcess/ProcessAssertion.h (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/ProcessAssertion.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/ProcessAssertion.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -69,6 +69,7 @@
Client* client() { return m_client; }
ProcessAssertionType type() const { return m_assertionType; }
+ ProcessID pid() const { return m_pid; }
#if PLATFORM(IOS_FAMILY)
protected:
@@ -80,8 +81,8 @@
private:
const ProcessAssertionType m_assertionType;
+ const ProcessID m_pid;
#if PLATFORM(IOS_FAMILY)
- const ProcessID m_pid;
RetainPtr<RBSAssertion> m_rbsAssertion;
RetainPtr<WKRBSAssertionDelegate> m_delegate;
RetainPtr<BKSProcessAssertion> m_bksAssertion; // Legacy.
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -2350,54 +2350,6 @@
}
#endif
-void WebProcessPool::setWebProcessHasUploads(ProcessIdentifier processID)
-{
- ASSERT(processID);
- auto* process = WebProcessProxy::processForIdentifier(processID);
- ASSERT(process);
-
- if (!process)
- return;
-
- WEBPROCESSPOOL_RELEASE_LOG(ProcessSuspension, "setWebProcessHasUploads: Web process now has uploads in progress (process=%p, PID=%i)", process, process->processIdentifier());
-
- if (m_processesWithUploads.isEmpty()) {
- WEBPROCESSPOOL_RELEASE_LOG(ProcessSuspension, "setWebProcessHasUploads: The number of uploads in progress is now one. Taking Networking and UI process assertions.");
-
- ensureNetworkProcess().takeUploadAssertion();
-
- ASSERT(!m_uiProcessUploadAssertion);
- m_uiProcessUploadAssertion = makeUnique<ProcessAssertion>(getCurrentProcessID(), "WebKit uploads"_s, ProcessAssertionType::UnboundedNetworking);
- }
-
- auto result = m_processesWithUploads.add(processID, nullptr);
- ASSERT(result.isNewEntry);
- result.iterator->value = makeUnique<ProcessAssertion>(process->processIdentifier(), "WebKit uploads"_s, ProcessAssertionType::UnboundedNetworking);
-}
-
-void WebProcessPool::clearWebProcessHasUploads(ProcessIdentifier processID)
-{
- ASSERT(processID);
- auto result = m_processesWithUploads.take(processID);
- if (!result)
- return;
-
- auto* process = WebProcessProxy::processForIdentifier(processID);
- ASSERT_UNUSED(process, process);
- WEBPROCESSPOOL_RELEASE_LOG(ProcessSuspension, "clearWebProcessHasUploads: Web process no longer has uploads in progress (process=%p, PID=%i)", process, process->processIdentifier());
-
- if (m_processesWithUploads.isEmpty()) {
- WEBPROCESSPOOL_RELEASE_LOG(ProcessSuspension, "clearWebProcessHasUploads: The number of uploads in progress is now zero. Releasing Networking and UI process assertions.");
-
- if (m_networkProcess)
- m_networkProcess->clearUploadAssertion();
-
- ASSERT(m_uiProcessUploadAssertion);
- m_uiProcessUploadAssertion = nullptr;
- }
-
-}
-
void WebProcessPool::setWebProcessIsPlayingAudibleMedia(WebCore::ProcessIdentifier processID)
{
auto* process = WebProcessProxy::processForIdentifier(processID);
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -516,9 +516,6 @@
void setUserMessageHandler(Function<void(UserMessage&&, CompletionHandler<void(UserMessage&&)>&&)>&& handler) { m_userMessageHandler = WTFMove(handler); }
const Function<void(UserMessage&&, CompletionHandler<void(UserMessage&&)>&&)>& userMessageHandler() const { return m_userMessageHandler; }
#endif
-
- void setWebProcessHasUploads(WebCore::ProcessIdentifier);
- void clearWebProcessHasUploads(WebCore::ProcessIdentifier);
void setWebProcessIsPlayingAudibleMedia(WebCore::ProcessIdentifier);
void clearWebProcessIsPlayingAudibleMedia(WebCore::ProcessIdentifier);
@@ -790,9 +787,6 @@
Function<void(UserMessage&&, CompletionHandler<void(UserMessage&&)>&&)> m_userMessageHandler;
#endif
- HashMap<WebCore::ProcessIdentifier, std::unique_ptr<ProcessAssertion>> m_processesWithUploads;
- std::unique_ptr<ProcessAssertion> m_uiProcessUploadAssertion;
-
HashMap<WebCore::ProcessIdentifier, std::unique_ptr<ProcessAssertion>> m_processesPlayingAudibleMedia;
std::unique_ptr<ProcessAssertion> m_uiProcessMediaPlaybackAssertion;
std::unique_ptr<ProcessAssertion> m_gpuProcessMediaPlaybackAssertion;
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.messages.in (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.messages.in 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.messages.in 2020-04-17 21:20:25 UTC (rev 260283)
@@ -30,7 +30,4 @@
#endif
ReportWebContentCPUTime(Seconds cpuTime, uint64_t activityState)
-
- SetWebProcessHasUploads(WebCore::ProcessIdentifier processID)
- ClearWebProcessHasUploads(WebCore::ProcessIdentifier processID)
}
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -215,9 +215,6 @@
RELEASE_ASSERT(isMainThreadOrCheckDisabled());
ASSERT(m_pageURLRetainCountMap.isEmpty());
- if (m_processPool)
- m_processPool->clearWebProcessHasUploads(coreProcessIdentifier());
-
auto result = allProcesses().remove(coreProcessIdentifier());
ASSERT_UNUSED(result, result);
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (260282 => 260283)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -29,6 +29,7 @@
#include "AuxiliaryProcessProxy.h"
#include "BackgroundProcessResponsivenessTimer.h"
#include "MessageReceiverMap.h"
+#include "NetworkProcessProxy.h"
#include "PluginInfoStore.h"
#include "ProcessLauncher.h"
#include "ProcessTerminationReason.h"
@@ -78,7 +79,6 @@
namespace WebKit {
class AudioSessionRoutingArbitratorProxy;
-class NetworkProcessProxy;
class ObjCObjectGraph;
class PageClient;
class ProvisionalPageProxy;
Modified: trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp (260282 => 260283)
--- trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp 2020-04-17 21:20:25 UTC (rev 260283)
@@ -397,12 +397,6 @@
}
auto loader = WebResourceLoader::create(resourceLoader, trackingParameters);
- if (resourceLoader.originalRequest().hasUpload()) {
- if (m_loadersWithUploads.isEmpty())
- WebProcess::singleton().parentProcessConnection()->send(Messages::WebProcessPool::SetWebProcessHasUploads(Process::identifier()), 0);
- m_loadersWithUploads.add(loader.ptr());
- }
-
m_webResourceLoaders.set(identifier, WTFMove(loader));
}
@@ -464,9 +458,6 @@
WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RemoveLoadIdentifier(identifier), 0);
- if (m_loadersWithUploads.remove(loader.get()) && m_loadersWithUploads.isEmpty())
- WebProcess::singleton().parentProcessConnection()->send(Messages::WebProcessPool::ClearWebProcessHasUploads { Process::identifier() }, 0);
-
// It's possible that this WebResourceLoader might be just about to message back to the NetworkProcess (e.g. ContinueWillSendRequest)
// but there's no point in doing so anymore.
loader->detachFromCoreLoader();
@@ -614,10 +605,6 @@
HangDetectionDisabler hangDetectionDisabler;
IPC::UnboundedSynchronousIPCScope unboundedSynchronousIPCScope;
- bool shouldNotifyOfUpload = request.hasUpload() && m_loadersWithUploads.isEmpty();
- if (shouldNotifyOfUpload)
- WebProcess::singleton().parentProcessConnection()->send(Messages::WebProcessPool::SetWebProcessHasUploads { Process::identifier() }, 0);
-
if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().sendSync(Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad(loadParameters), Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::Reply(error, response, data), 0)) {
WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: failed sending synchronous network process message");
if (page)
@@ -625,9 +612,6 @@
response = ResourceResponse();
error = internalError(request.url());
}
-
- if (shouldNotifyOfUpload)
- WebProcess::singleton().parentProcessConnection()->send(Messages::WebProcessPool::ClearWebProcessHasUploads { Process::identifier() }, 0);
}
void WebLoaderStrategy::pageLoadCompleted(Page& page)
Modified: trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h (260282 => 260283)
--- trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h 2020-04-17 21:19:49 UTC (rev 260282)
+++ trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h 2020-04-17 21:20:25 UTC (rev 260283)
@@ -126,7 +126,6 @@
HashMap<unsigned long, PreconnectCompletionHandler> m_preconnectCompletionHandlers;
Vector<Function<void(bool)>> m_onlineStateChangeListeners;
bool m_isOnLine { true };
- HashSet<WebResourceLoader*> m_loadersWithUploads;
};
} // namespace WebKit