Title: [191333] trunk/Source/WebKit2
- Revision
- 191333
- Author
- [email protected]
- Date
- 2015-10-19 23:21:00 -0700 (Mon, 19 Oct 2015)
Log Message
ERROR: Unhandled web process message 'StorageAreaMap:DispatchStorageEvent'
https://bugs.webkit.org/show_bug.cgi?id=150315
Reviewed by Andreas Kling.
It was introduced in r184930, that keeps the session storage area
maps alive in the UI process when they are destroyed by the web
process. The problem is that we also keep the listeners, so that
events are also dispatched to the listeners of destroyed areas,
and the message handlers were removed in the web process.
* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::createTransientLocalStorageMap): Add a
listener for the new storage map ID when the map is reused.
(WebKit::StorageManager::destroyStorageMap): Always remove
listeners of destroyed maps.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (191332 => 191333)
--- trunk/Source/WebKit2/ChangeLog 2015-10-20 06:18:15 UTC (rev 191332)
+++ trunk/Source/WebKit2/ChangeLog 2015-10-20 06:21:00 UTC (rev 191333)
@@ -1,3 +1,22 @@
+2015-10-19 Carlos Garcia Campos <[email protected]>
+
+ ERROR: Unhandled web process message 'StorageAreaMap:DispatchStorageEvent'
+ https://bugs.webkit.org/show_bug.cgi?id=150315
+
+ Reviewed by Andreas Kling.
+
+ It was introduced in r184930, that keeps the session storage area
+ maps alive in the UI process when they are destroyed by the web
+ process. The problem is that we also keep the listeners, so that
+ events are also dispatched to the listeners of destroyed areas,
+ and the message handlers were removed in the web process.
+
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::createTransientLocalStorageMap): Add a
+ listener for the new storage map ID when the map is reused.
+ (WebKit::StorageManager::destroyStorageMap): Always remove
+ listeners of destroyed maps.
+
2015-10-19 Tim Horton <[email protected]>
Remove unused support for long presses from WebKit
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (191332 => 191333)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2015-10-20 06:18:15 UTC (rev 191332)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2015-10-20 06:21:00 UTC (rev 191333)
@@ -736,6 +736,7 @@
continue;
if (!origin->isSameSchemeHostPort(&area->securityOrigin()))
continue;
+ area->addListener(connection, storageMapID);
m_storageAreasByConnection.remove(it);
m_storageAreasByConnection.add({ &connection, storageMapID }, WTF::move(area));
return;
@@ -796,11 +797,12 @@
return;
}
+ it->value->removeListener(connection, storageMapID);
+
// Don't remove session storage maps. The web process may reconnect and expect the data to still be around.
if (it->value->isSessionStorage())
return;
- it->value->removeListener(connection, storageMapID);
m_storageAreasByConnection.remove(connectionAndStorageMapIDPair);
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes