Modified: trunk/Source/WebKit/ChangeLog (288237 => 288238)
--- trunk/Source/WebKit/ChangeLog 2022-01-19 21:24:47 UTC (rev 288237)
+++ trunk/Source/WebKit/ChangeLog 2022-01-19 21:30:04 UTC (rev 288238)
@@ -1,5 +1,23 @@
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-19 Chris Dumez <[email protected]>
+
WebKit::AuthenticatorPresenterCoordinator() constructor falls through ASSERT_NOT_REACHED()
https://bugs.webkit.org/show_bug.cgi?id=234991
<rdar://problem/87275093>
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (288237 => 288238)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-01-19 21:24:47 UTC (rev 288237)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-01-19 21:30:04 UTC (rev 288238)
@@ -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] { });
}
}