[IPC] MESSAGE_CHECK() parameters for AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPCs
https://bugs.webkit.org/show_bug.cgi?id=204962
Reviewed by Ryosuke Niwa.
MESSAGE_CHECK() parameters for AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPCs. Those parameters
are used as keys in HashMaps.
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::PlugInAutoStartProvider::PlugInAutoStartProvider):
(WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
(WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):
* UIProcess/Plugins/PlugInAutoStartProvider.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addPlugInAutoStartOriginHash):
(WebKit::WebProcessProxy::plugInDidReceiveUserInteraction):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253232 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 702b830..8aaf5b1 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,23 @@
+2019-12-06 Chris Dumez <cdumez@apple.com>
+
+ [IPC] MESSAGE_CHECK() parameters for AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPCs
+ https://bugs.webkit.org/show_bug.cgi?id=204962
+
+ Reviewed by Ryosuke Niwa.
+
+ MESSAGE_CHECK() parameters for AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPCs. Those parameters
+ are used as keys in HashMaps.
+
+ * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
+ (WebKit::PlugInAutoStartProvider::PlugInAutoStartProvider):
+ (WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
+ (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
+ (WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):
+ * UIProcess/Plugins/PlugInAutoStartProvider.h:
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::addPlugInAutoStartOriginHash):
+ (WebKit::WebProcessProxy::plugInDidReceiveUserInteraction):
+
2019-12-06 Per Arne Vollan <pvollan@apple.com>
[iOS] Calls to device orientation API should be done in the UI process
diff --git a/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.cpp b/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.cpp
index d2b351c..a0cff0c 100644
--- a/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.cpp
+++ b/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.cpp
@@ -41,7 +41,7 @@
PlugInAutoStartProvider::PlugInAutoStartProvider(WebProcessPool* processPool)
: m_processPool(processPool)
{
- m_hashToOriginMap.add(PAL::SessionID::defaultSessionID(), HashMap<unsigned, String>());
+ m_hashToOriginMap.add(PAL::SessionID::defaultSessionID(), HashToOriginMap());
m_autoStartTable.add(PAL::SessionID::defaultSessionID(), AutoStartTable());
}
@@ -56,7 +56,7 @@
if (sessionIterator == m_hashToOriginMap.end()) {
if (m_hashToOriginMap.get(PAL::SessionID::defaultSessionID()).contains(plugInOriginHash))
return;
- sessionIterator = m_hashToOriginMap.set(sessionID, HashMap<unsigned, String>()).iterator;
+ sessionIterator = m_hashToOriginMap.set(sessionID, HashToOriginMap()).iterator;
} else if (sessionIterator->value.contains(plugInOriginHash) || m_hashToOriginMap.get(PAL::SessionID::defaultSessionID()).contains(plugInOriginHash))
return;
@@ -126,7 +126,7 @@
m_hashToOriginMap.clear();
m_autoStartTable.clear();
HashMap<unsigned, WallTime> hashMap;
- HashMap<unsigned, String>& hashToOriginMap = m_hashToOriginMap.add(PAL::SessionID::defaultSessionID(), HashMap<unsigned, String>()).iterator->value;
+ auto& hashToOriginMap = m_hashToOriginMap.add(PAL::SessionID::defaultSessionID(), HashToOriginMap()).iterator->value;
AutoStartTable& ast = m_autoStartTable.add(PAL::SessionID::defaultSessionID(), AutoStartTable()).iterator->value;
for (auto& strDict : table.map()) {
@@ -165,8 +165,8 @@
void PlugInAutoStartProvider::didReceiveUserInteraction(unsigned plugInOriginHash, PAL::SessionID sessionID)
{
- HashMap<PAL::SessionID, HashMap<unsigned, String>>::const_iterator sessionIterator = m_hashToOriginMap.find(sessionID);
- HashMap<unsigned, String>::const_iterator it;
+ auto sessionIterator = m_hashToOriginMap.find(sessionID);
+ HashToOriginMap::const_iterator it;
bool contains = false;
if (sessionIterator != m_hashToOriginMap.end()) {
it = sessionIterator->value.find(plugInOriginHash);
diff --git a/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.h b/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.h
index 735b760..542d16e 100644
--- a/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.h
+++ b/Source/WebKit/UIProcess/Plugins/PlugInAutoStartProvider.h
@@ -64,16 +64,19 @@
PlugInAutoStartOriginMap autoStartOriginHashesCopy(PAL::SessionID) const;
const PlugInAutoStartOrigins& autoStartOrigins() const { return m_autoStartOrigins; }
+ using HashToOriginMap = HashMap<unsigned, String>;
+ using PerSessionHashToOriginMap = HashMap<PAL::SessionID, HashToOriginMap>;
+ using AutoStartTable = HashMap<String, PlugInAutoStartOriginMap, ASCIICaseInsensitiveHash>;
+
private:
WebProcessPool* m_processPool;
void setAutoStartOriginsTableWithItemsPassingTest(API::Dictionary&, WTF::Function<bool(WallTime expirationTimestamp)>&&);
- typedef HashMap<String, PlugInAutoStartOriginMap, ASCIICaseInsensitiveHash> AutoStartTable;
typedef HashMap<PAL::SessionID, AutoStartTable> SessionAutoStartTable;
SessionAutoStartTable m_autoStartTable;
- HashMap<PAL::SessionID, HashMap<unsigned, String>> m_hashToOriginMap;
+ PerSessionHashToOriginMap m_hashToOriginMap;
PlugInAutoStartOrigins m_autoStartOrigins;
};
diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp
index 37dd5e9..906ba08 100644
--- a/Source/WebKit/UIProcess/WebProcessProxy.cpp
+++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp
@@ -1511,11 +1511,14 @@
void WebProcessProxy::addPlugInAutoStartOriginHash(String&& pageOrigin, uint32_t hash)
{
+ MESSAGE_CHECK(PlugInAutoStartProvider::AutoStartTable::isValidKey(pageOrigin));
+ MESSAGE_CHECK(PlugInAutoStartProvider::HashToOriginMap::isValidKey(hash));
processPool().plugInAutoStartProvider().addAutoStartOriginHash(WTFMove(pageOrigin), hash, sessionID());
}
void WebProcessProxy::plugInDidReceiveUserInteraction(uint32_t hash)
{
+ MESSAGE_CHECK(PlugInAutoStartProvider::HashToOriginMap::isValidKey(hash));
processPool().plugInAutoStartProvider().didReceiveUserInteraction(hash, sessionID());
}