Title: [137802] trunk/Source/WebKit2
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
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to