Modified: branches/safari-613-branch/Source/WebKit/ChangeLog (288514 => 288515)
--- branches/safari-613-branch/Source/WebKit/ChangeLog 2022-01-25 01:55:50 UTC (rev 288514)
+++ branches/safari-613-branch/Source/WebKit/ChangeLog 2022-01-25 01:55:53 UTC (rev 288515)
@@ -1,5 +1,46 @@
2022-01-24 Alan Coon <[email protected]>
+ Cherry-pick r288238. rdar://problem/87272534
+
+ WebsiteDataStore.cpp uses switch statements for WebKit::ProcessAccessType enum that fall through ASSERT_NOT_REACHED()
+ https://bugs.webkit.org/show_bug.cgi?id=234986
+ <rdar://problem/87272534>
+
+ Reviewed by Darin Adler.
+
+ Clean up / clarify processAccessType logic in WebsiteDataStore.cpp.
+
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::computeNetworkProcessAccessTypeForDataFetch):
+ (WebKit::computeWebProcessAccessTypeForDataFetch):
+ (WebKit::WebsiteDataStore::fetchDataAndApply):
+ (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
+ (WebKit::computeWebProcessAccessTypeForDataRemoval):
+ (WebKit::WebsiteDataStore::removeData):
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@288238 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2022-01-19 Chris Dumez <[email protected]>
+
+ WebsiteDataStore.cpp uses switch statements for WebKit::ProcessAccessType enum that fall through ASSERT_NOT_REACHED()
+ https://bugs.webkit.org/show_bug.cgi?id=234986
+ <rdar://problem/87272534>
+
+ Reviewed by Darin Adler.
+
+ Clean up / clarify processAccessType logic in WebsiteDataStore.cpp.
+
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::computeNetworkProcessAccessTypeForDataFetch):
+ (WebKit::computeWebProcessAccessTypeForDataFetch):
+ (WebKit::WebsiteDataStore::fetchDataAndApply):
+ (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
+ (WebKit::computeWebProcessAccessTypeForDataRemoval):
+ (WebKit::WebsiteDataStore::removeData):
+
+2022-01-24 Alan Coon <[email protected]>
+
Cherry-pick r288232. rdar://problem/87265153
WebKit::DownloadProxy::publishProgress() falls through ASSERT_NOT_REACHED()
Modified: branches/safari-613-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (288514 => 288515)
--- branches/safari-613-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-01-25 01:55:50 UTC (rev 288514)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-01-25 01:55:53 UTC (rev 288515)
@@ -287,34 +287,22 @@
}
}
-enum class ProcessAccessType {
- None,
- OnlyIfLaunched,
- Launch,
-};
+enum class ProcessAccessType : uint8_t { None, OnlyIfLaunched, Launch };
static ProcessAccessType computeNetworkProcessAccessTypeForDataFetch(OptionSet<WebsiteDataType> dataTypes, bool isNonPersistentStore)
{
for (auto dataType : dataTypes) {
- if (WebsiteData::ownerProcess(dataType) == WebsiteDataProcessType::Network) {
- if (isNonPersistentStore)
- return ProcessAccessType::OnlyIfLaunched;
- return ProcessAccessType::Launch;
- }
+ if (WebsiteData::ownerProcess(dataType) == WebsiteDataProcessType::Network)
+ return isNonPersistentStore ? ProcessAccessType::OnlyIfLaunched : ProcessAccessType::Launch;
}
return ProcessAccessType::None;
}
-static ProcessAccessType computeWebProcessAccessTypeForDataFetch(OptionSet<WebsiteDataType> dataTypes, bool isNonPersistentStore)
+static ProcessAccessType computeWebProcessAccessTypeForDataFetch(OptionSet<WebsiteDataType> dataTypes, bool /* isNonPersistentStore */)
{
- UNUSED_PARAM(isNonPersistentStore);
-
- ProcessAccessType processAccessType = ProcessAccessType::None;
-
if (dataTypes.contains(WebsiteDataType::MemoryCache))
return ProcessAccessType::OnlyIfLaunched;
-
- return processAccessType;
+ return ProcessAccessType::None;
}
void WebsiteDataStore::fetchData(OptionSet<WebsiteDataType> dataTypes, OptionSet<WebsiteDataFetchOption> fetchOptions, Function<void(Vector<WebsiteDataRecord>)>&& completionHandler)
@@ -471,21 +459,8 @@
auto webProcessAccessType = computeWebProcessAccessTypeForDataFetch(dataTypes, !isPersistent());
if (webProcessAccessType != ProcessAccessType::None) {
for (auto& process : processes()) {
- switch (webProcessAccessType) {
- case ProcessAccessType::OnlyIfLaunched:
- if (process.state() != WebProcessProxy::State::Running)
- continue;
- break;
-
- case ProcessAccessType::Launch:
- // FIXME: Handle this.
- ASSERT_NOT_REACHED();
- break;
-
- case ProcessAccessType::None:
- ASSERT_NOT_REACHED();
- }
-
+ if (webProcessAccessType == ProcessAccessType::OnlyIfLaunched && process.state() != WebProcessProxy::State::Running)
+ continue;
process.fetchWebsiteData(m_sessionID, dataTypes, [callbackAggregator](WebsiteData websiteData) {
callbackAggregator->addWebsiteData(WTFMove(websiteData));
});
@@ -559,30 +534,21 @@
static ProcessAccessType computeNetworkProcessAccessTypeForDataRemoval(OptionSet<WebsiteDataType> dataTypes, bool isNonPersistentStore)
{
ProcessAccessType processAccessType = ProcessAccessType::None;
-
for (auto dataType : dataTypes) {
- if (dataType == WebsiteDataType::Cookies) {
- if (isNonPersistentStore)
- processAccessType = std::max(processAccessType, ProcessAccessType::OnlyIfLaunched);
- else
- processAccessType = std::max(processAccessType, ProcessAccessType::Launch);
- } else if (WebsiteData::ownerProcess(dataType) == WebsiteDataProcessType::Network)
+ if (WebsiteData::ownerProcess(dataType) != WebsiteDataProcessType::Network)
+ continue;
+ if (dataType != WebsiteDataType::Cookies || !isNonPersistentStore)
return ProcessAccessType::Launch;
+ processAccessType = ProcessAccessType::OnlyIfLaunched;
}
-
return processAccessType;
}
-static ProcessAccessType computeWebProcessAccessTypeForDataRemoval(OptionSet<WebsiteDataType> dataTypes, bool isNonPersistentStore)
+static ProcessAccessType computeWebProcessAccessTypeForDataRemoval(OptionSet<WebsiteDataType> dataTypes, bool /* isNonPersistentStore */)
{
- UNUSED_PARAM(isNonPersistentStore);
-
- ProcessAccessType processAccessType = ProcessAccessType::None;
-
if (dataTypes.contains(WebsiteDataType::MemoryCache))
- processAccessType = std::max(processAccessType, ProcessAccessType::OnlyIfLaunched);
-
- return processAccessType;
+ return ProcessAccessType::OnlyIfLaunched;
+ return ProcessAccessType::None;
}
class RemovalCallbackAggregator : public ThreadSafeRefCounted<RemovalCallbackAggregator, WTF::DestructionThread::MainRunLoop> {
@@ -653,21 +619,8 @@
}
for (auto& process : processes()) {
- switch (webProcessAccessType) {
- case ProcessAccessType::OnlyIfLaunched:
- if (process.state() != WebProcessProxy::State::Running)
- continue;
- break;
-
- case ProcessAccessType::Launch:
- // FIXME: Handle this.
- ASSERT_NOT_REACHED();
- break;
-
- case ProcessAccessType::None:
- ASSERT_NOT_REACHED();
- }
-
+ if (webProcessAccessType == ProcessAccessType::OnlyIfLaunched && process.state() != WebProcessProxy::State::Running)
+ continue;
process.deleteWebsiteData(m_sessionID, dataTypes, modifiedSince, [callbackAggregator] { });
}
}
@@ -772,21 +725,8 @@
auto webProcessAccessType = computeWebProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
if (webProcessAccessType != ProcessAccessType::None) {
for (auto& process : processes()) {
- switch (webProcessAccessType) {
- case ProcessAccessType::OnlyIfLaunched:
- if (process.state() != WebProcessProxy::State::Running)
- continue;
- break;
-
- case ProcessAccessType::Launch:
- // FIXME: Handle this.
- ASSERT_NOT_REACHED();
- break;
-
- case ProcessAccessType::None:
- ASSERT_NOT_REACHED();
- }
-
+ if (webProcessAccessType == ProcessAccessType::OnlyIfLaunched && process.state() != WebProcessProxy::State::Running)
+ continue;
process.deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, [callbackAggregator] { });
}
}