Title: [118423] branches/safari-536-branch/Source
- Revision
- 118423
- Author
- [email protected]
- Date
- 2012-05-24 15:14:27 -0700 (Thu, 24 May 2012)
Log Message
Merged r117471 -> <rdar://problem/10777218>
Modified Paths
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