Diff
Modified: trunk/Source/WebKit2/ChangeLog (160726 => 160727)
--- trunk/Source/WebKit2/ChangeLog 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/ChangeLog 2013-12-17 21:30:06 UTC (rev 160727)
@@ -1,3 +1,25 @@
+2013-12-17 Anders Carlsson <[email protected]>
+
+ Back out r159982
+ https://bugs.webkit.org/show_bug.cgi?id=125870
+ <rdar://problem/15598485>
+
+ Reviewed by Dan Bernstein.
+
+ Looks like r159982 caused intermittent crashes. Back it out for now.
+
+ * UIProcess/WebContextUserMessageCoders.h:
+ (WebKit::WebContextUserMessageEncoder::encode):
+ (WebKit::WebContextUserMessageDecoder::decode):
+ * UIProcess/WebPageGroup.cpp:
+ * UIProcess/WebPageGroup.h:
+ (WebKit::WebPageGroup::sendToAllProcessesInGroup):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::initializeWebPage):
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::disconnect):
+ * UIProcess/WebProcessProxy.h:
+
2013-12-17 Dan Bernstein <[email protected]>
Fixed an assertion failure seen running some mixed-content tests.
Modified: trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h (160726 => 160727)
--- trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h 2013-12-17 21:30:06 UTC (rev 160727)
@@ -76,8 +76,6 @@
}
case API::Object::Type::PageGroup: {
WebPageGroup* pageGroup = static_cast<WebPageGroup*>(m_root);
- if (pageGroup->addProcess(m_process))
- m_process.addWebPageGroup(*pageGroup);
encoder << pageGroup->data();
break;
}
@@ -147,7 +145,7 @@
uint64_t pageGroupID;
if (!decoder.decode(pageGroupID))
return false;
- coder.m_root = coder.m_process.webPageGroup(pageGroupID);
+ coder.m_root = WebPageGroup::get(pageGroupID);
break;
}
#if PLATFORM(MAC)
Modified: trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp (160726 => 160727)
--- trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp 2013-12-17 21:30:06 UTC (rev 160727)
@@ -194,14 +194,4 @@
sendToAllProcessesInGroup(Messages::WebPageGroupProxy::RemoveAllUserContent(), m_data.pageGroupID);
}
-bool WebPageGroup::addProcess(WebProcessProxy& process)
-{
- return m_processes.add(&process).isNewEntry;
-}
-
-void WebPageGroup::disconnectProcess(WebProcessProxy& process)
-{
- m_processes.remove(&process);
-}
-
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/WebPageGroup.h (160726 => 160727)
--- trunk/Source/WebKit2/UIProcess/WebPageGroup.h 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/UIProcess/WebPageGroup.h 2013-12-17 21:30:06 UTC (rev 160727)
@@ -65,24 +65,26 @@
void removeAllUserScripts();
void removeAllUserContent();
- bool addProcess(WebProcessProxy&);
- void disconnectProcess(WebProcessProxy&);
-
private:
template<typename T> void sendToAllProcessesInGroup(const T&, uint64_t destinationID);
WebPageGroupData m_data;
mutable RefPtr<WebPreferences> m_preferences;
HashSet<WebPageProxy*> m_pages;
- HashSet<WebProcessProxy*> m_processes;
};
template<typename T>
void WebPageGroup::sendToAllProcessesInGroup(const T& message, uint64_t destinationID)
{
- for (auto webProcessProxy : m_processes) {
- if (webProcessProxy->canSendMessage())
- webProcessProxy->send(T(message), destinationID);
+ HashSet<WebProcessProxy*> processesSeen;
+
+ for (WebPageProxy* webPageProxy : m_pages) {
+ WebProcessProxy& webProcessProxy = webPageProxy->process();
+ if (!processesSeen.add(&webProcessProxy).isNewEntry)
+ continue;
+
+ if (webProcessProxy.canSendMessage())
+ webProcessProxy.send(T(message), destinationID);
}
}
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (160726 => 160727)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-12-17 21:30:06 UTC (rev 160727)
@@ -517,9 +517,6 @@
inspector()->enableRemoteInspection();
#endif
- if (pageGroup().addProcess(process()))
- process().addWebPageGroup(pageGroup());
-
initializeCreationParameters();
process().send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (160726 => 160727)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2013-12-17 21:30:06 UTC (rev 160727)
@@ -39,7 +39,6 @@
#include "WebContext.h"
#include "WebNavigationDataStore.h"
#include "WebNotificationManagerProxy.h"
-#include "WebPageGroup.h"
#include "WebPageProxy.h"
#include "WebPluginSiteDataManager.h"
#include "WebProcessMessages.h"
@@ -147,16 +146,11 @@
Vector<RefPtr<WebFrameProxy>> frames;
copyValuesToVector(m_frameMap, frames);
- for (auto frame : frames)
- frame->disconnect();
+
+ for (size_t i = 0, size = frames.size(); i < size; ++i)
+ frames[i]->disconnect();
m_frameMap.clear();
- Vector<WebPageGroup*> pageGroups;
- copyValuesToVector(m_pageGroups, pageGroups);
- for (auto pageGroup : pageGroups)
- pageGroup->disconnectProcess(*this);
- m_pageGroups.clear();
-
if (m_downloadProxyMap)
m_downloadProxyMap->processDidClose();
@@ -217,19 +211,6 @@
return result;
}
-WebPageGroup* WebProcessProxy::webPageGroup(uint64_t pageGroupID)
-{
- if (!HashMap<uint64_t, WebPageGroup*>::isValidKey(pageGroupID))
- return nullptr;
-
- return m_pageGroups.get(pageGroupID);
-}
-
-void WebProcessProxy::addWebPageGroup(WebPageGroup& pageGroup)
-{
- m_pageGroups.add(pageGroup.pageGroupID(), &pageGroup);
-}
-
WebBackForwardListItem* WebProcessProxy::webBackForwardItem(uint64_t itemID) const
{
return m_backForwardListItemMap.get(itemID);
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (160726 => 160727)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h 2013-12-17 21:20:44 UTC (rev 160726)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h 2013-12-17 21:30:06 UTC (rev 160727)
@@ -82,9 +82,6 @@
void removeWebPage(uint64_t pageID);
Vector<WebPageProxy*> pages() const;
- WebPageGroup* webPageGroup(uint64_t pageGroupID);
- void addWebPageGroup(WebPageGroup&);
-
WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const;
ResponsivenessTimer* responsivenessTimer() { return &m_responsivenessTimer; }
@@ -199,7 +196,6 @@
WebPageProxyMap m_pageMap;
WebFrameProxyMap m_frameMap;
WebBackForwardListItemMap m_backForwardListItemMap;
- HashMap<uint64_t, WebPageGroup*> m_pageGroups;
OwnPtr<DownloadProxyMap> m_downloadProxyMap;