- Revision
- 137802
- Author
- [email protected]
- Date
- 2012-12-15 12:13:41 -0800 (Sat, 15 Dec 2012)
Log Message
DownloadProxyMap shouldn't be a singleton after all
https://bugs.webkit.org/show_bug.cgi?id=105099
Reviewed by Sam Weinig.
Make the DownloadProxyMap be per context instead, and get rid of the m_downloads hash map from WebContext.
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::didFinish):
(WebKit::DownloadProxy::didFail):
(WebKit::DownloadProxy::didCancel):
* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::~DownloadProxyMap):
* UIProcess/Downloads/DownloadProxyMap.h:
(DownloadProxyMap):
(WebKit::DownloadProxyMap::downloads):
* UIProcess/WebContext.cpp:
(WebKit::WebContext::shouldTerminate):
(WebKit::WebContext::disconnectProcess):
(WebKit::WebContext::createDownloadProxy):
(WebKit::WebContext::downloadFinished):
* UIProcess/WebContext.h:
(WebContext):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (137801 => 137802)
--- trunk/Source/WebKit2/ChangeLog 2012-12-15 19:40:17 UTC (rev 137801)
+++ trunk/Source/WebKit2/ChangeLog 2012-12-15 20:13:41 UTC (rev 137802)
@@ -1,3 +1,29 @@
+2012-12-15 Anders Carlsson <[email protected]>
+
+ DownloadProxyMap shouldn't be a singleton after all
+ https://bugs.webkit.org/show_bug.cgi?id=105099
+
+ Reviewed by Sam Weinig.
+
+ Make the DownloadProxyMap be per context instead, and get rid of the m_downloads hash map from WebContext.
+
+ * UIProcess/Downloads/DownloadProxy.cpp:
+ (WebKit::DownloadProxy::didFinish):
+ (WebKit::DownloadProxy::didFail):
+ (WebKit::DownloadProxy::didCancel):
+ * UIProcess/Downloads/DownloadProxyMap.cpp:
+ (WebKit::DownloadProxyMap::~DownloadProxyMap):
+ * UIProcess/Downloads/DownloadProxyMap.h:
+ (DownloadProxyMap):
+ (WebKit::DownloadProxyMap::downloads):
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::shouldTerminate):
+ (WebKit::WebContext::disconnectProcess):
+ (WebKit::WebContext::createDownloadProxy):
+ (WebKit::WebContext::downloadFinished):
+ * UIProcess/WebContext.h:
+ (WebContext):
+
2012-12-15 No'am Rosenthal <[email protected]>
Disambiguate "background color" and "contents as solid color" on GraphicsLayer
Modified: trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxy.cpp (137801 => 137802)
--- trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxy.cpp 2012-12-15 19:40:17 UTC (rev 137801)
+++ trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxy.cpp 2012-12-15 20:13:41 UTC (rev 137802)
@@ -167,7 +167,6 @@
// This can cause the DownloadProxy object to be deleted.
m_webContext->downloadFinished(this);
- DownloadProxyMap::shared().downloadFinished(this);
}
static PassRefPtr<WebData> createWebData(const CoreIPC::DataReference& data)
@@ -189,7 +188,6 @@
// This can cause the DownloadProxy object to be deleted.
m_webContext->downloadFinished(this);
- DownloadProxyMap::shared().downloadFinished(this);
}
void DownloadProxy::didCancel(const CoreIPC::DataReference& resumeData)
@@ -200,7 +198,6 @@
// This can cause the DownloadProxy object to be deleted.
m_webContext->downloadFinished(this);
- DownloadProxyMap::shared().downloadFinished(this);
}
#if PLATFORM(QT)
Modified: trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp (137801 => 137802)
--- trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp 2012-12-15 19:40:17 UTC (rev 137801)
+++ trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp 2012-12-15 20:13:41 UTC (rev 137802)
@@ -31,19 +31,13 @@
namespace WebKit {
-DownloadProxyMap& DownloadProxyMap::shared()
-{
- DEFINE_STATIC_LOCAL(DownloadProxyMap, downloadProxyMap, ());
-
- return downloadProxyMap;
-}
-
DownloadProxyMap::DownloadProxyMap()
{
}
DownloadProxyMap::~DownloadProxyMap()
{
+ ASSERT(m_downloads.isEmpty());
}
DownloadProxy* DownloadProxyMap::createDownloadProxy(WebContext* webContext)
Modified: trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.h (137801 => 137802)
--- trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.h 2012-12-15 19:40:17 UTC (rev 137801)
+++ trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.h 2012-12-15 20:13:41 UTC (rev 137802)
@@ -39,16 +39,16 @@
WTF_MAKE_NONCOPYABLE(DownloadProxyMap);
public:
- static DownloadProxyMap& shared();
+ DownloadProxyMap();
+ ~DownloadProxyMap();
DownloadProxy* createDownloadProxy(WebContext*);
-
void downloadFinished(DownloadProxy*);
+ // FIXME: Don't fully expose the downloads map like this.
+ HashMap<uint64_t, RefPtr<DownloadProxy> >& downloads() { return m_downloads; }
+
private:
- DownloadProxyMap();
- ~DownloadProxyMap();
-
HashMap<uint64_t, RefPtr<DownloadProxy> > m_downloads;
};
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (137801 => 137802)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2012-12-15 19:40:17 UTC (rev 137801)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2012-12-15 20:13:41 UTC (rev 137802)
@@ -27,7 +27,6 @@
#include "WebContext.h"
#include "DownloadProxy.h"
-#include "DownloadProxyMap.h"
#include "DownloadProxyMessages.h"
#include "ImmutableArray.h"
#include "Logging.h"
@@ -538,7 +537,7 @@
if (!m_processTerminationEnabled)
return false;
- if (!m_downloads.isEmpty())
+ if (!m_downloads.downloads().isEmpty())
return false;
if (!m_applicationCacheManagerProxy->shouldTerminate(process))
@@ -601,12 +600,12 @@
}
// Invalidate all outstanding downloads.
- for (HashMap<uint64_t, RefPtr<DownloadProxy> >::iterator::Values it = m_downloads.begin().values(), end = m_downloads.end().values(); it != end; ++it) {
+ for (HashMap<uint64_t, RefPtr<DownloadProxy> >::iterator::Values it = m_downloads.downloads().begin().values(), end = m_downloads.downloads().end().values(); it != end; ++it) {
(*it)->processDidClose();
(*it)->invalidate();
}
- m_downloads.clear();
+ m_downloads.downloads().clear();
m_applicationCacheManagerProxy->invalidate();
#if ENABLE(BATTERY_STATUS)
@@ -836,19 +835,16 @@
DownloadProxy* WebContext::createDownloadProxy()
{
- DownloadProxy* downloadProxy = DownloadProxyMap::shared().createDownloadProxy(this);
- m_downloads.set(downloadProxy->downloadID(), downloadProxy);
+ DownloadProxy* downloadProxy = m_downloads.createDownloadProxy(this);
addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID(), downloadProxy);
return downloadProxy;
}
void WebContext::downloadFinished(DownloadProxy* downloadProxy)
{
- ASSERT(m_downloads.contains(downloadProxy->downloadID()));
-
downloadProxy->invalidate();
removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID());
- m_downloads.remove(downloadProxy->downloadID());
+ m_downloads.downloads().remove(downloadProxy->downloadID());
}
// FIXME: This is not the ideal place for this function.
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (137801 => 137802)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2012-12-15 19:40:17 UTC (rev 137801)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2012-12-15 20:13:41 UTC (rev 137802)
@@ -27,6 +27,7 @@
#define WebContext_h
#include "APIObject.h"
+#include "DownloadProxyMap.h"
#include "GenericCallback.h"
#include "MessageReceiver.h"
#include "MessageReceiverMap.h"
@@ -325,6 +326,8 @@
void addPlugInAutoStartOriginHash(const String& pageOrigin, unsigned plugInOriginHash);
+ CoreIPC::MessageReceiverMap m_messageReceiverMap;
+
ProcessModel m_processModel;
unsigned m_webProcessCountLimit; // The limit has no effect when process model is ProcessModelSharedSecondaryProcess.
@@ -369,7 +372,7 @@
CacheModel m_cacheModel;
WebDownloadClient m_downloadClient;
- HashMap<uint64_t, RefPtr<DownloadProxy> > m_downloads;
+ DownloadProxyMap m_downloads;
bool m_memorySamplerEnabled;
double m_memorySamplerInterval;
@@ -425,8 +428,6 @@
HashMap<uint64_t, RefPtr<DictionaryCallback> > m_dictionaryCallbacks;
- CoreIPC::MessageReceiverMap m_messageReceiverMap;
-
#if PLATFORM(MAC)
static bool s_applicationIsOccluded;
#endif