Title: [118423] branches/safari-536-branch/Source

Diff

Modified: branches/safari-536-branch/Source/WebCore/ChangeLog (118422 => 118423)


--- branches/safari-536-branch/Source/WebCore/ChangeLog	2012-05-24 22:07:12 UTC (rev 118422)
+++ branches/safari-536-branch/Source/WebCore/ChangeLog	2012-05-24 22:14:27 UTC (rev 118423)
@@ -1,3 +1,19 @@
+2012-05-24  Lucas Forschler  <[email protected]>
+
+    Merge 117471
+
+    2012-05-16  Andreas Kling  <[email protected]>
+
+            Make PluginInfoStore properly thread-safe.
+            <http://webkit.org/b/86648>
+            <rdar://problem/11451178>
+
+            Reviewed by Darin Adler.
+
+            * plugins/PluginData.h:
+            (WebCore::MimeClassInfo::isolatedCopy):
+            (WebCore::PluginInfo::isolatedCopy):
+
 2012-05-23  Lucas Forschler  <[email protected]>
 
     Merge 117744

Modified: branches/safari-536-branch/Source/WebCore/plugins/PluginData.h (118422 => 118423)


--- branches/safari-536-branch/Source/WebCore/plugins/PluginData.h	2012-05-24 22:07:12 UTC (rev 118422)
+++ branches/safari-536-branch/Source/WebCore/plugins/PluginData.h	2012-05-24 22:14:27 UTC (rev 118423)
@@ -34,7 +34,7 @@
     String desc;
     Vector<String> extensions;
 
-    MimeClassInfo isolatedCopy()
+    MimeClassInfo isolatedCopy() const
     {
         MimeClassInfo clone;
         clone.type = type.isolatedCopy();
@@ -56,7 +56,7 @@
     String desc;
     Vector<MimeClassInfo> mimes;
 
-    PluginInfo isolatedCopy()
+    PluginInfo isolatedCopy() const
     {
         PluginInfo clone;
         clone.name = name.isolatedCopy();

Modified: branches/safari-536-branch/Source/WebKit2/ChangeLog (118422 => 118423)


--- branches/safari-536-branch/Source/WebKit2/ChangeLog	2012-05-24 22:07:12 UTC (rev 118422)
+++ branches/safari-536-branch/Source/WebKit2/ChangeLog	2012-05-24 22:14:27 UTC (rev 118423)
@@ -1,3 +1,25 @@
+2012-05-24  Lucas Forschler  <[email protected]>
+
+    Merge 117471
+
+    2012-05-16  Andreas Kling  <[email protected]>
+
+            Make PluginInfoStore properly thread-safe.
+            <http://webkit.org/b/86648>
+            <rdar://problem/11451178>
+
+            Reviewed by Darin Adler.
+
+            Deep copy the internal storage of PluginInfoStore after constructing it, as we can
+            be doing this from a secondary thread.
+
+            * Shared/Plugins/PluginModuleInfo.h:
+            (WebKit::PluginModuleInfo::isolatedCopy):
+            * UIProcess/Plugins/PluginInfoStore.cpp:
+            (WebKit::deepIsolatedCopyPluginInfoVector):
+            (WebKit::PluginInfoStore::loadPluginsIfNecessary):
+            (WebKit::PluginInfoStore::plugins):
+
 2012-05-23  Lucas Forschler  <[email protected]>
 
     Merge 117698

Modified: branches/safari-536-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h (118422 => 118423)


--- branches/safari-536-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h	2012-05-24 22:07:12 UTC (rev 118422)
+++ branches/safari-536-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h	2012-05-24 22:14:27 UTC (rev 118423)
@@ -42,7 +42,7 @@
     uint64_t fileVersion;
 #endif
 
-    PluginModuleInfo isolatedCopy()
+    PluginModuleInfo isolatedCopy() const
     {
         PluginModuleInfo clone;
         clone.path = path.isolatedCopy();

Modified: branches/safari-536-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp (118422 => 118423)


--- branches/safari-536-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp	2012-05-24 22:07:12 UTC (rev 118422)
+++ branches/safari-536-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp	2012-05-24 22:14:27 UTC (rev 118423)
@@ -69,6 +69,16 @@
 typedef ListHashSet<String, 32> PathHashSet;
 #endif
 
+static inline Vector<PluginModuleInfo> deepIsolatedCopyPluginInfoVector(const Vector<PluginModuleInfo>& vector)
+{
+    // Let the copy begin!
+    Vector<PluginModuleInfo> copy;
+    copy.reserveCapacity(vector.size());
+    for (unsigned i = 0; i < vector.size(); ++i)
+        copy.append(vector[i].isolatedCopy());
+    return copy;
+}
+
 void PluginInfoStore::loadPluginsIfNecessary()
 {
     if (m_pluginListIsUpToDate)
@@ -94,7 +104,8 @@
     for (PathHashSet::const_iterator it = uniquePluginPaths.begin(); it != end; ++it)
         loadPlugin(plugins, *it);
 
-    m_plugins.swap(plugins);
+    m_plugins = deepIsolatedCopyPluginInfoVector(plugins);
+
     m_pluginListIsUpToDate = true;
 }
 
@@ -115,13 +126,7 @@
 {
     MutexLocker locker(m_pluginsLock);
     loadPluginsIfNecessary();
-
-    // Let the copy begin!
-    Vector<PluginModuleInfo> infos;
-    for (unsigned i = 0; i < m_plugins.size(); ++i)
-        infos.append(m_plugins[i].isolatedCopy());
-
-    return infos;
+    return deepIsolatedCopyPluginInfoVector(m_plugins);
 }
 
 PluginModuleInfo PluginInfoStore::findPluginForMIMEType(const String& mimeType) const
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to