Title: [242662] trunk/Source/WebKit
- Revision
- 242662
- Author
- beid...@apple.com
- Date
- 2019-03-08 15:58:52 -0800 (Fri, 08 Mar 2019)
Log Message
Have the UIProcess take the UnboundedNetworking assertion when downloads are in progress.
https://bugs.webkit.org/show_bug.cgi?id=195468
Reviewed by Andy Estes.
* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::DownloadProxyMap):
(WebKit::DownloadProxyMap::createDownloadProxy): If this is the first download, and the process has the entitlement,
take the assertion.
(WebKit::DownloadProxyMap::downloadFinished):
(WebKit::DownloadProxyMap::processDidClose):
* UIProcess/Downloads/DownloadProxyMap.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (242661 => 242662)
--- trunk/Source/WebKit/ChangeLog 2019-03-08 23:51:05 UTC (rev 242661)
+++ trunk/Source/WebKit/ChangeLog 2019-03-08 23:58:52 UTC (rev 242662)
@@ -1,3 +1,18 @@
+2019-03-08 Brady Eidson <beid...@apple.com>
+
+ Have the UIProcess take the UnboundedNetworking assertion when downloads are in progress.
+ https://bugs.webkit.org/show_bug.cgi?id=195468
+
+ Reviewed by Andy Estes.
+
+ * UIProcess/Downloads/DownloadProxyMap.cpp:
+ (WebKit::DownloadProxyMap::DownloadProxyMap):
+ (WebKit::DownloadProxyMap::createDownloadProxy): If this is the first download, and the process has the entitlement,
+ take the assertion.
+ (WebKit::DownloadProxyMap::downloadFinished):
+ (WebKit::DownloadProxyMap::processDidClose):
+ * UIProcess/Downloads/DownloadProxyMap.h:
+
2019-03-08 Chris Dumez <cdu...@apple.com>
Add assertions to help debug a WebProcessCache crash
Modified: trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp (242661 => 242662)
--- trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp 2019-03-08 23:51:05 UTC (rev 242661)
+++ trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp 2019-03-08 23:58:52 UTC (rev 242662)
@@ -30,12 +30,20 @@
#include "DownloadProxy.h"
#include "DownloadProxyMessages.h"
#include "MessageReceiverMap.h"
+#include "ProcessAssertion.h"
#include <wtf/StdLibExtras.h>
+#if PLATFORM(COCOA)
+#include <wtf/cocoa/Entitlements.h>
+#endif
+
namespace WebKit {
DownloadProxyMap::DownloadProxyMap(NetworkProcessProxy& process)
: m_process(&process)
+#if PLATFORM(COCOA)
+ , m_shouldTakeAssertion(WTF::processHasEntitlement("com.apple.multitasking.systemappassertions"))
+#endif
{
}
@@ -49,6 +57,11 @@
auto downloadProxy = DownloadProxy::create(*this, processPool, resourceRequest);
m_downloads.set(downloadProxy->downloadID(), downloadProxy.copyRef());
+ if (m_downloads.size() == 1 && m_shouldTakeAssertion) {
+ ASSERT(!m_downloadAssertion);
+ m_downloadAssertion = std::make_unique<ProcessAssertion>(getCurrentProcessID(), "WebKit downloads"_s, AssertionState::UnboundedNetworking);
+ }
+
m_process->addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID().downloadID(), downloadProxy.get());
return downloadProxy.ptr();
@@ -63,6 +76,11 @@
m_process->removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadID.downloadID());
downloadProxy->invalidate();
m_downloads.remove(downloadID);
+
+ if (m_downloads.isEmpty() && m_shouldTakeAssertion) {
+ ASSERT(m_downloadAssertion);
+ m_downloadAssertion = nullptr;
+ }
}
void DownloadProxyMap::processDidClose()
@@ -75,6 +93,7 @@
}
m_downloads.clear();
+ m_downloadAssertion = nullptr;
m_process = nullptr;
}
Modified: trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.h (242661 => 242662)
--- trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.h 2019-03-08 23:51:05 UTC (rev 242661)
+++ trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.h 2019-03-08 23:58:52 UTC (rev 242662)
@@ -37,6 +37,7 @@
class DownloadProxy;
class NetworkProcessProxy;
+class ProcessAssertion;
class WebProcessPool;
class DownloadProxyMap {
@@ -57,6 +58,9 @@
private:
NetworkProcessProxy* m_process;
HashMap<DownloadID, RefPtr<DownloadProxy>> m_downloads;
+
+ bool m_shouldTakeAssertion { false };
+ std::unique_ptr<ProcessAssertion> m_downloadAssertion;
};
} // namespace WebKit
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes