Diff
Modified: trunk/Source/WebCore/ChangeLog (181493 => 181494)
--- trunk/Source/WebCore/ChangeLog 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/ChangeLog 2015-03-14 02:50:28 UTC (rev 181494)
@@ -1,3 +1,17 @@
+2015-03-13 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r181483.
+ https://bugs.webkit.org/show_bug.cgi?id=142688
+
+ Caused use-after-free on many tests (Requested by ap on
+ #webkit).
+
+ Reverted changeset:
+
+ "Allow clients to selectively disable plug-ins"
+ https://bugs.webkit.org/show_bug.cgi?id=142506
+ http://trac.webkit.org/changeset/181483
+
2015-03-13 Antti Koivisto <[email protected]>
Cache glyph widths to GlyphPages
Modified: trunk/Source/WebCore/dom/DOMImplementation.cpp (181493 => 181494)
--- trunk/Source/WebCore/dom/DOMImplementation.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/dom/DOMImplementation.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -329,7 +329,7 @@
// PDF is one image type for which a plugin can override built-in support.
// We do not want QuickTime to take over all image types, obviously.
- if (MIMETypeRegistry::isPDFOrPostScriptMIMEType(type) && pluginData && pluginData->supportsWebVisibleMimeType(type, allowedPluginTypes))
+ if (MIMETypeRegistry::isPDFOrPostScriptMIMEType(type) && pluginData && pluginData->supportsMimeType(type, allowedPluginTypes))
return PluginDocument::create(frame, url);
if (Image::supportsType(type))
return ImageDocument::create(*frame, url);
@@ -348,7 +348,7 @@
// Everything else except text/plain can be overridden by plugins. In particular, Adobe SVG Viewer should be used for SVG, if installed.
// Disallowing plug-ins to use text/plain prevents plug-ins from hijacking a fundamental type that the browser is expected to handle,
// and also serves as an optimization to prevent loading the plug-in database in the common case.
- if (type != "text/plain" && ((pluginData && pluginData->supportsWebVisibleMimeType(type, allowedPluginTypes)) || (frame && frame->loader().client().shouldAlwaysUsePluginDocument(type))))
+ if (type != "text/plain" && ((pluginData && pluginData->supportsMimeType(type, allowedPluginTypes)) || (frame && frame->loader().client().shouldAlwaysUsePluginDocument(type))))
return PluginDocument::create(frame, url);
if (isTextMIMEType(type))
return TextDocument::create(frame, url);
Modified: trunk/Source/WebCore/loader/SubframeLoader.cpp (181493 => 181494)
--- trunk/Source/WebCore/loader/SubframeLoader.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/loader/SubframeLoader.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -167,11 +167,8 @@
const PluginData& pluginData = page->pluginData();
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- pluginData.getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
- for (size_t i = 0; i < mimes.size(); ++i) {
- const MimeClassInfo& mimeClassInfo = mimes[i];
+ for (size_t i = 0; i < pluginData.mimes().size(); ++i) {
+ const MimeClassInfo& mimeClassInfo = pluginData.mimes()[i];
for (size_t j = 0; j < mimeClassInfo.extensions.size(); ++j) {
if (equalIgnoringCase(extension, mimeClassInfo.extensions[j]))
return mimeClassInfo.type;
@@ -194,7 +191,7 @@
return;
}
- String pluginFile = page->pluginData().pluginFileForWebVisibleMimeType(newMIMEType);
+ String pluginFile = page->pluginData().pluginFileForMimeType(newMIMEType);
String description = !pluginFile ? newMIMEType : pluginFile;
DiagnosticLoggingClient& diagnosticLoggingClient = page->mainFrame().diagnosticLoggingClient();
@@ -370,7 +367,7 @@
// Allow other plug-ins to win over QuickTime because if the user has installed a plug-in that
// can handle TIFF (which QuickTime can also handle) they probably intended to override QT.
if (m_frame.page() && (mimeType == "image/tiff" || mimeType == "image/tif" || mimeType == "image/x-tiff")) {
- String pluginName = m_frame.page()->pluginData().pluginNameForWebVisibleMimeType(mimeType);
+ String pluginName = m_frame.page()->pluginData().pluginNameForMimeType(mimeType);
if (!pluginName.isEmpty() && !pluginName.contains("QuickTime", false))
return true;
}
Modified: trunk/Source/WebCore/platform/PlatformStrategies.h (181493 => 181494)
--- trunk/Source/WebCore/platform/PlatformStrategies.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/platform/PlatformStrategies.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -88,7 +88,7 @@
PluginStrategy* m_pluginStrategy;
};
-WEBCORE_EXPORT PlatformStrategies* platformStrategies();
+PlatformStrategies* platformStrategies();
WEBCORE_EXPORT void setPlatformStrategies(PlatformStrategies*);
bool hasPlatformStrategies();
Modified: trunk/Source/WebCore/plugins/DOMMimeType.cpp (181493 => 181494)
--- trunk/Source/WebCore/plugins/DOMMimeType.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/DOMMimeType.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -42,7 +42,7 @@
{
}
-String DOMMimeType::type() const
+const String &DOMMimeType::type() const
{
return mimeClassInfo().type;
}
@@ -60,28 +60,17 @@
return builder.toString();
}
-String DOMMimeType::description() const
+const String &DOMMimeType::description() const
{
return mimeClassInfo().desc;
}
-MimeClassInfo DOMMimeType::mimeClassInfo() const
-{
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
- return mimes[m_index];
-}
-
PassRefPtr<DOMPlugin> DOMMimeType::enabledPlugin() const
{
if (!m_frame || !m_frame->page() || !m_frame->page()->mainFrame().loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
return 0;
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
- return DOMPlugin::create(m_pluginData.get(), m_frame, mimePluginIndices[m_index]);
+ return DOMPlugin::create(m_pluginData.get(), m_frame, m_pluginData->mimePluginIndices()[m_index]);
}
} // namespace WebCore
Modified: trunk/Source/WebCore/plugins/DOMMimeType.h (181493 => 181494)
--- trunk/Source/WebCore/plugins/DOMMimeType.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/DOMMimeType.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -37,13 +37,13 @@
static Ref<DOMMimeType> create(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index) { return adoptRef(*new DOMMimeType(pluginData, frame, index)); }
~DOMMimeType();
- String type() const;
+ const String &type() const;
String suffixes() const;
- String description() const;
+ const String &description() const;
PassRefPtr<DOMPlugin> enabledPlugin() const;
private:
- MimeClassInfo mimeClassInfo() const;
+ const MimeClassInfo& mimeClassInfo() const { return m_pluginData->mimes()[m_index]; }
DOMMimeType(PassRefPtr<PluginData>, Frame*, unsigned index);
RefPtr<PluginData> m_pluginData;
Modified: trunk/Source/WebCore/plugins/DOMMimeTypeArray.cpp (181493 => 181494)
--- trunk/Source/WebCore/plugins/DOMMimeTypeArray.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/DOMMimeTypeArray.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -48,11 +48,7 @@
PluginData* data = ""
if (!data)
return 0;
-
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- data->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
- return mimes.size();
+ return data->mimes().size();
}
PassRefPtr<DOMMimeType> DOMMimeTypeArray::item(unsigned index)
@@ -60,11 +56,7 @@
PluginData* data = ""
if (!data)
return 0;
-
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- data->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
-
+ const Vector<MimeClassInfo>& mimes = data->mimes();
if (index >= mimes.size())
return 0;
return DOMMimeType::create(data, m_frame, index);
@@ -75,10 +67,7 @@
PluginData *data = ""
if (!data)
return 0;
-
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- data->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
+ const Vector<MimeClassInfo>& mimes = data->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
if (mimes[i].type == propertyName)
return true;
@@ -91,10 +80,7 @@
PluginData *data = ""
if (!data)
return 0;
-
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- data->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
+ const Vector<MimeClassInfo>& mimes = data->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
if (mimes[i].type == propertyName)
return DOMMimeType::create(data, m_frame, i);
Modified: trunk/Source/WebCore/plugins/DOMPlugin.cpp (181493 => 181494)
--- trunk/Source/WebCore/plugins/DOMPlugin.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/DOMPlugin.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -56,23 +56,16 @@
return pluginInfo().mimes.size();
}
-PluginInfo DOMPlugin::pluginInfo() const
-{
- return m_pluginData->webVisiblePlugins()[m_index];
-}
-
PassRefPtr<DOMMimeType> DOMPlugin::item(unsigned index)
{
if (index >= pluginInfo().mimes.size())
return 0;
- MimeClassInfo mime = pluginInfo().mimes[index];
+ const MimeClassInfo& mime = pluginInfo().mimes[index];
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
+ const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
- if (mimes[i] == mime && mimePluginIndices[i] == m_index)
+ if (mimes[i] == mime && m_pluginData->mimePluginIndices()[i] == m_index)
return DOMMimeType::create(m_pluginData.get(), m_frame, i);
}
return 0;
@@ -80,9 +73,7 @@
bool DOMPlugin::canGetItemsForName(const AtomicString& propertyName)
{
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
+ const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i)
if (mimes[i].type == propertyName)
return true;
@@ -91,9 +82,7 @@
PassRefPtr<DOMMimeType> DOMPlugin::namedItem(const AtomicString& propertyName)
{
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
+ const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i)
if (mimes[i].type == propertyName)
return DOMMimeType::create(m_pluginData.get(), m_frame, i);
Modified: trunk/Source/WebCore/plugins/DOMPlugin.h (181493 => 181494)
--- trunk/Source/WebCore/plugins/DOMPlugin.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/DOMPlugin.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -48,7 +48,7 @@
PassRefPtr<DOMMimeType> namedItem(const AtomicString& propertyName);
private:
- PluginInfo pluginInfo() const;
+ const PluginInfo& pluginInfo() const { return m_pluginData->plugins()[m_index]; }
DOMPlugin(PluginData*, Frame*, unsigned index);
RefPtr<PluginData> m_pluginData;
Modified: trunk/Source/WebCore/plugins/DOMPluginArray.cpp (181493 => 181494)
--- trunk/Source/WebCore/plugins/DOMPluginArray.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/DOMPluginArray.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -48,8 +48,7 @@
PluginData* data = ""
if (!data)
return 0;
-
- return data->webVisiblePlugins().size();
+ return data->plugins().size();
}
PassRefPtr<DOMPlugin> DOMPluginArray::item(unsigned index)
@@ -57,8 +56,7 @@
PluginData* data = ""
if (!data)
return 0;
-
- const Vector<PluginInfo>& plugins = data->webVisiblePlugins();
+ const Vector<PluginInfo>& plugins = data->plugins();
if (index >= plugins.size())
return 0;
return DOMPlugin::create(data, m_frame, index);
@@ -69,8 +67,7 @@
PluginData* data = ""
if (!data)
return 0;
-
- const Vector<PluginInfo>& plugins = data->webVisiblePlugins();
+ const Vector<PluginInfo>& plugins = data->plugins();
for (unsigned i = 0; i < plugins.size(); ++i) {
if (plugins[i].name == propertyName)
return true;
@@ -83,8 +80,7 @@
PluginData* data = ""
if (!data)
return 0;
-
- const Vector<PluginInfo>& plugins = data->webVisiblePlugins();
+ const Vector<PluginInfo>& plugins = data->plugins();
for (unsigned i = 0; i < plugins.size(); ++i) {
if (plugins[i].name == propertyName)
return DOMPlugin::create(data, m_frame, i);
Modified: trunk/Source/WebCore/plugins/PluginData.cpp (181493 => 181494)
--- trunk/Source/WebCore/plugins/PluginData.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/PluginData.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -2,7 +2,7 @@
Copyright (C) 2000 Harri Porten ([email protected])
Copyright (C) 2000 Daniel Molkentin ([email protected])
Copyright (C) 2000 Stefan Schimanski ([email protected])
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2015 Apple Inc. All Rights Reserved.
+ Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All Rights Reserved.
Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
This library is free software; you can redistribute it and/or
@@ -31,75 +31,48 @@
PluginData::PluginData(const Page* page)
{
- ASSERT_ARG(page, page);
+ initPlugins(page);
- m_page = page;
- initPlugins();
-}
-
-Vector<PluginInfo> PluginData::webVisiblePlugins() const
-{
- Vector<PluginInfo> plugins;
- platformStrategies()->pluginStrategy()->getWebVisiblePluginInfo(m_page, plugins);
- return plugins;
-}
-
-void PluginData::getWebVisibleMimesAndPluginIndices(Vector<MimeClassInfo>& mimes, Vector<size_t>& mimePluginIndices) const
-{
- ASSERT_ARG(mimes, mimes.isEmpty());
- ASSERT_ARG(mimePluginIndices, mimePluginIndices.isEmpty());
-
- const Vector<PluginInfo>& plugins = webVisiblePlugins();
- for (unsigned i = 0; i < plugins.size(); ++i) {
- const PluginInfo& plugin = plugins[i];
+ for (unsigned i = 0; i < m_plugins.size(); ++i) {
+ const PluginInfo& plugin = m_plugins[i];
for (unsigned j = 0; j < plugin.mimes.size(); ++j) {
- mimes.append(plugin.mimes[j]);
- mimePluginIndices.append(i);
+ m_mimes.append(plugin.mimes[j]);
+ m_mimePluginIndices.append(i);
}
}
}
-bool PluginData::supportsWebVisibleMimeType(const String& mimeType, const AllowedPluginTypes allowedPluginTypes) const
+bool PluginData::supportsMimeType(const String& mimeType, const AllowedPluginTypes allowedPluginTypes) const
{
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- const Vector<PluginInfo>& plugins = webVisiblePlugins();
- getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
-
- for (unsigned i = 0; i < mimes.size(); ++i) {
- if (mimes[i].type == mimeType && (allowedPluginTypes == AllPlugins || plugins[mimePluginIndices[i]].isApplicationPlugin))
+ for (unsigned i = 0; i < m_mimes.size(); ++i) {
+ if (m_mimes[i].type == mimeType && (allowedPluginTypes == AllPlugins || m_plugins[m_mimePluginIndices[i]].isApplicationPlugin))
return true;
}
return false;
}
-const PluginInfo* PluginData::pluginInfoForWebVisibleMimeType(const String& mimeType) const
+const PluginInfo* PluginData::pluginInfoForMimeType(const String& mimeType) const
{
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- const Vector<PluginInfo>& plugins = webVisiblePlugins();
- getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
-
- for (unsigned i = 0; i < mimes.size(); ++i) {
- const MimeClassInfo& info = mimes[i];
-
+ for (unsigned i = 0; i < m_mimes.size(); ++i) {
+ const MimeClassInfo& info = m_mimes[i];
+
if (info.type == mimeType)
- return &plugins[mimePluginIndices[i]];
+ return &m_plugins[m_mimePluginIndices[i]];
}
return 0;
}
-String PluginData::pluginNameForWebVisibleMimeType(const String& mimeType) const
+String PluginData::pluginNameForMimeType(const String& mimeType) const
{
- if (const PluginInfo* info = pluginInfoForWebVisibleMimeType(mimeType))
+ if (const PluginInfo* info = pluginInfoForMimeType(mimeType))
return info->name;
return String();
}
-String PluginData::pluginFileForWebVisibleMimeType(const String& mimeType) const
+String PluginData::pluginFileForMimeType(const String& mimeType) const
{
- if (const PluginInfo* info = pluginInfoForWebVisibleMimeType(mimeType))
+ if (const PluginInfo* info = pluginInfoForMimeType(mimeType))
return info->file;
return String();
}
@@ -109,11 +82,11 @@
platformStrategies()->pluginStrategy()->refreshPlugins();
}
-void PluginData::initPlugins()
+void PluginData::initPlugins(const Page* page)
{
ASSERT(m_plugins.isEmpty());
-
- platformStrategies()->pluginStrategy()->getPluginInfo(m_page, m_plugins);
+
+ platformStrategies()->pluginStrategy()->getPluginInfo(page, m_plugins);
}
}
Modified: trunk/Source/WebCore/plugins/PluginData.h (181493 => 181494)
--- trunk/Source/WebCore/plugins/PluginData.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/PluginData.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -29,24 +29,6 @@
class Page;
struct PluginInfo;
-enum PluginLoadClientPolicy : uint8_t {
- // No client-specific plug-in load policy has been defined. The plug-in should be visible in navigator.plugins and WebKit should synchronously
- // ask the client whether the plug-in should be loaded.
- PluginLoadClientPolicyUndefined = 0,
-
- // The plug-in module should be blocked from being instantiated. The plug-in should be hidden in navigator.plugins.
- PluginLoadClientPolicyBlock,
-
- // WebKit should synchronously ask the client whether the plug-in should be loaded. The plug-in should be visible in navigator.plugins.
- PluginLoadClientPolicyAsk,
-
- // The plug-in module may be loaded if WebKit is not blocking it.
- PluginLoadClientPolicyAllow,
-
- // The plug-in module should be loaded irrespective of whether WebKit has asked it to be blocked.
- PluginLoadClientPolicyAllowAlways,
-};
-
struct MimeClassInfo {
String type;
String desc;
@@ -64,13 +46,6 @@
String desc;
Vector<MimeClassInfo> mimes;
bool isApplicationPlugin;
-
- PluginLoadClientPolicy clientLoadPolicy;
-
-#if PLATFORM(MAC)
- String bundleIdentifier;
- String versionString;
-#endif
};
// FIXME: merge with PluginDatabase in the future
@@ -79,35 +54,38 @@
static Ref<PluginData> create(const Page* page) { return adoptRef(*new PluginData(page)); }
const Vector<PluginInfo>& plugins() const { return m_plugins; }
- Vector<PluginInfo> webVisiblePlugins() const;
- WEBCORE_EXPORT void getWebVisibleMimesAndPluginIndices(Vector<MimeClassInfo>&, Vector<size_t>&) const;
+ const Vector<MimeClassInfo>& mimes() const { return m_mimes; }
+ const Vector<size_t>& mimePluginIndices() const { return m_mimePluginIndices; }
enum AllowedPluginTypes {
AllPlugins,
OnlyApplicationPlugins
};
- WEBCORE_EXPORT bool supportsWebVisibleMimeType(const String& mimeType, const AllowedPluginTypes) const;
- String pluginNameForWebVisibleMimeType(const String& mimeType) const;
- String pluginFileForWebVisibleMimeType(const String& mimeType) const;
+ WEBCORE_EXPORT bool supportsMimeType(const String& mimeType, const AllowedPluginTypes) const;
+ String pluginNameForMimeType(const String& mimeType) const;
+ String pluginFileForMimeType(const String& mimeType) const;
static void refresh();
private:
explicit PluginData(const Page*);
- void initPlugins();
- const PluginInfo* pluginInfoForWebVisibleMimeType(const String& mimeType) const;
+ void initPlugins(const Page*);
+ const PluginInfo* pluginInfoForMimeType(const String& mimeType) const;
protected:
#if defined ENABLE_WEB_REPLAY && ENABLE_WEB_REPLAY
- PluginData(Vector<PluginInfo> plugins)
+ PluginData(Vector<PluginInfo> plugins, Vector<MimeClassInfo> mimes, Vector<size_t> indices)
: m_plugins(plugins)
+ , m_mimes(mimes)
+ , m_mimePluginIndices(indices)
{
}
#endif
- const Page* m_page;
Vector<PluginInfo> m_plugins;
+ Vector<MimeClassInfo> m_mimes;
+ Vector<size_t> m_mimePluginIndices;
};
}
Modified: trunk/Source/WebCore/plugins/PluginStrategy.h (181493 => 181494)
--- trunk/Source/WebCore/plugins/PluginStrategy.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/plugins/PluginStrategy.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -36,11 +36,6 @@
public:
virtual void refreshPlugins() = 0;
virtual void getPluginInfo(const Page*, Vector<PluginInfo>&) = 0;
- virtual void getWebVisiblePluginInfo(const Page*, Vector<PluginInfo>&) = 0;
-#if PLATFORM(MAC)
- virtual void setPluginLoadClientPolicy(PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString) = 0;
- virtual void clearPluginClientPolicies() = 0;
-#endif
protected:
virtual ~PluginStrategy() { }
Modified: trunk/Source/WebCore/replay/SerializationMethods.cpp (181493 => 181494)
--- trunk/Source/WebCore/replay/SerializationMethods.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/replay/SerializationMethods.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -53,7 +53,6 @@
using WebCore::PlatformWheelEvent;
using WebCore::PlatformWheelEventGranularity;
using WebCore::PluginData;
-using WebCore::PluginLoadClientPolicy;
using WebCore::PluginInfo;
using WebCore::SecurityOrigin;
using WebCore::URL;
@@ -438,18 +437,23 @@
EncodedValue EncodingTraits<PluginData>::encodeValue(RefPtr<PluginData> input)
{
- // FIXME: This needs to work in terms of web-visible plug-ins.
EncodedValue encodedData = EncodedValue::createObject();
+ Vector<uint32_t> castedMimePluginIndices(input->mimePluginIndices().size());
+ for (uint32_t index : input->mimePluginIndices())
+ castedMimePluginIndices.append(WTF::safeCast<uint32_t>(index));
+
ENCODE_TYPE_WITH_KEY(encodedData, Vector<PluginInfo>, plugins, input->plugins());
+ ENCODE_TYPE_WITH_KEY(encodedData, Vector<MimeClassInfo>, mimes, input->mimes());
+ ENCODE_TYPE_WITH_KEY(encodedData, Vector<uint32_t>, mimePluginIndices, castedMimePluginIndices);
return encodedData;
}
class DeserializedPluginData : public PluginData {
public:
- DeserializedPluginData(Vector<PluginInfo> plugins)
- : PluginData(plugins)
+ DeserializedPluginData(Vector<PluginInfo> plugins, Vector<MimeClassInfo> mimes, Vector<size_t> indices)
+ : PluginData(plugins, mimes, indices)
{
}
};
@@ -457,10 +461,15 @@
bool EncodingTraits<PluginData>::decodeValue(EncodedValue& encodedData, RefPtr<PluginData>& input)
{
DECODE_TYPE_WITH_KEY(encodedData, Vector<PluginInfo>, plugins);
+ DECODE_TYPE_WITH_KEY(encodedData, Vector<MimeClassInfo>, mimes);
+ DECODE_TYPE_WITH_KEY(encodedData, Vector<uint32_t>, mimePluginIndices);
- // FIXME: This needs to work in terms of web-visible plug-ins.
- input = adoptRef(new DeserializedPluginData(plugins));
+ Vector<size_t> castedMimePluginIndices(mimePluginIndices.size());
+ for (uint32_t index : mimePluginIndices)
+ castedMimePluginIndices.append(WTF::safeCast<size_t>(index));
+ input = adoptRef(new DeserializedPluginData(plugins, mimes, castedMimePluginIndices));
+
return true;
}
@@ -474,11 +483,6 @@
ENCODE_TYPE_WITH_KEY(encodedData, String, desc, input.desc);
ENCODE_TYPE_WITH_KEY(encodedData, Vector<MimeClassInfo>, mimes, input.mimes);
ENCODE_TYPE_WITH_KEY(encodedData, bool, isApplicationPlugin, input.isApplicationPlugin);
- ENCODE_TYPE_WITH_KEY(encodedData, PluginLoadClientPolicy, clientLoadPolicy, static_cast<PluginLoadClientPolicy>(input.clientLoadPolicy));
-#if PLATFORM(MAC)
- ENCODE_TYPE_WITH_KEY(encodedData, String, bundleIdentifier, input.bundleIdentifier);
- ENCODE_TYPE_WITH_KEY(encodedData, String, versionString, input.versionString);
-#endif
return encodedData;
}
@@ -493,11 +497,6 @@
DECODE_TYPE_WITH_KEY_TO_LVALUE(encodedData, String, desc, info.desc);
DECODE_TYPE_WITH_KEY_TO_LVALUE(encodedData, Vector<MimeClassInfo>, mimes, info.mimes);
DECODE_TYPE_WITH_KEY_TO_LVALUE(encodedData, bool, isApplicationPlugin, info.isApplicationPlugin);
- DECODE_TYPE_WITH_KEY_TO_LVALUE(encodedData, PluginLoadClientPolicy, clientLoadPolicy, info.clientLoadPolicy);
-#if PLATFORM(MAC)
- DECODE_TYPE_WITH_KEY_TO_LVALUE(encodedData, String, bundleIdentifier, input.bundleIdentifier);
- DECODE_TYPE_WITH_KEY_TO_LVALUE(encodedData, String, versionString, input.versionString);
-#endif
input = info;
return true;
Modified: trunk/Source/WebCore/replay/WebInputs.json (181493 => 181494)
--- trunk/Source/WebCore/replay/WebInputs.json 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebCore/replay/WebInputs.json 2015-03-14 02:50:28 UTC (rev 181494)
@@ -67,13 +67,6 @@
"header": "plugins/PluginData.h"
},
{
- "name": "PluginLoadClientPolicy", "mode": "SCALAR", "storage": "uint8_t",
- "flags": ["ENUM"],
- "values": ["PluginLoadClientPolicyUndefined", "PluginLoadClientPolicyBlock", "PluginLoadClientPolicyAsk", "PluginLoadClientPolicyAllow", "PluginLoadClientPolicyAllowAlways"],
- "header": "plugins/PluginData.h"
- },
-
- {
"name": "ScrollDirection", "mode": "SCALAR", "storage": "uint8_t",
"flags": ["ENUM"],
"values": ["ScrollUp", "ScrollDown", "ScrollLeft", "ScrollRight"],
Modified: trunk/Source/WebKit/mac/ChangeLog (181493 => 181494)
--- trunk/Source/WebKit/mac/ChangeLog 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-03-14 02:50:28 UTC (rev 181494)
@@ -1,3 +1,17 @@
+2015-03-13 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r181483.
+ https://bugs.webkit.org/show_bug.cgi?id=142688
+
+ Caused use-after-free on many tests (Requested by ap on
+ #webkit).
+
+ Reverted changeset:
+
+ "Allow clients to selectively disable plug-ins"
+ https://bugs.webkit.org/show_bug.cgi?id=142506
+ http://trac.webkit.org/changeset/181483
+
2015-03-13 Eric Carlson <[email protected]>
[Mac] Enable WIRELESS_PLAYBACK_TARGET
Modified: trunk/Source/WebKit/mac/Plugins/WebBasePluginPackage.mm (181493 => 181494)
--- trunk/Source/WebKit/mac/Plugins/WebBasePluginPackage.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/mac/Plugins/WebBasePluginPackage.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -249,11 +249,6 @@
pluginInfo.desc = description;
pluginInfo.isApplicationPlugin = false;
- pluginInfo.clientLoadPolicy = PluginLoadClientPolicyUndefined;
-#if PLATFORM(MAC)
- pluginInfo.bundleIdentifier = self.bundleIdentifier;
- pluginInfo.versionString = self.bundleVersion;
-#endif
return YES;
}
Modified: trunk/Source/WebKit/mac/Plugins/WebNetscapePluginPackage.mm (181493 => 181494)
--- trunk/Source/WebKit/mac/Plugins/WebNetscapePluginPackage.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/mac/Plugins/WebNetscapePluginPackage.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -146,12 +146,7 @@
pluginInfo.name = theName;
pluginInfo.isApplicationPlugin = false;
- pluginInfo.clientLoadPolicy = PluginLoadClientPolicyUndefined;
-#if PLATFORM(MAC)
- pluginInfo.bundleIdentifier = self.bundleIdentifier;
- pluginInfo.versionString = self.bundleVersion;
-#endif
-
+
[self closeResourceFile:resRef];
return YES;
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h (181493 => 181494)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -62,11 +62,6 @@
// WebCore::PluginStrategy
virtual void refreshPlugins() override;
virtual void getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&) override;
- virtual void getWebVisiblePluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&) override;
-#if PLATFORM(MAC)
- virtual void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String&, const String&, const String&) override;
- virtual void clearPluginClientPolicies() override;
-#endif
// WebCore::LoaderStrategy
// - Using default implementation.
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm (181493 => 181494)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -128,21 +128,6 @@
END_BLOCK_OBJC_EXCEPTIONS;
}
-void WebPlatformStrategies::getWebVisiblePluginInfo(const Page* page, Vector<PluginInfo>& plugins)
-{
- getPluginInfo(page, plugins);
-}
-
-#if PLATFORM(MAC)
-void WebPlatformStrategies::setPluginLoadClientPolicy(PluginLoadClientPolicy, const String&, const String&, const String&)
-{
-}
-
-void WebPlatformStrategies::clearPluginClientPolicies()
-{
-}
-#endif
-
void WebPlatformStrategies::getTypes(Vector<String>& types, const String& pasteboardName)
{
PlatformPasteboard(pasteboardName).getTypes(types);
Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (181493 => 181494)
--- trunk/Source/WebKit/mac/WebView/WebFrame.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -979,8 +979,8 @@
if (WebCore::DOMImplementation::isTextMIMEType(mimeType)
|| Image::supportsType(mimeType)
- || (pluginData && pluginData->supportsWebVisibleMimeType(mimeType, PluginData::AllPlugins) && frame->loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
- || (pluginData && pluginData->supportsWebVisibleMimeType(mimeType, PluginData::OnlyApplicationPlugins)))
+ || (pluginData && pluginData->supportsMimeType(mimeType, PluginData::AllPlugins) && frame->loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
+ || (pluginData && pluginData->supportsMimeType(mimeType, PluginData::OnlyApplicationPlugins)))
return NO;
return YES;
Modified: trunk/Source/WebKit/win/ChangeLog (181493 => 181494)
--- trunk/Source/WebKit/win/ChangeLog 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/win/ChangeLog 2015-03-14 02:50:28 UTC (rev 181494)
@@ -1,3 +1,17 @@
+2015-03-13 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r181483.
+ https://bugs.webkit.org/show_bug.cgi?id=142688
+
+ Caused use-after-free on many tests (Requested by ap on
+ #webkit).
+
+ Reverted changeset:
+
+ "Allow clients to selectively disable plug-ins"
+ https://bugs.webkit.org/show_bug.cgi?id=142506
+ http://trac.webkit.org/changeset/181483
+
2015-03-10 Conrad Shultz <[email protected]>
Allow clients to selectively disable plug-ins
Modified: trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp (181493 => 181494)
--- trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -134,8 +134,3 @@
outPlugins[i] = info;
}
}
-
-void WebPlatformStrategies::getWebVisiblePluginInfo(const Page* page, Vector<PluginInfo>& plugins)
-{
- getPluginInfo(page, plugins);
-}
Modified: trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h (181493 => 181494)
--- trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -55,7 +55,6 @@
// WebCore::PluginStrategy
virtual void refreshPlugins();
virtual void getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&);
- virtual void getWebVisiblePluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&);
};
#endif // WebPlatformStrategies_h
Modified: trunk/Source/WebKit/win/WebView.cpp (181493 => 181494)
--- trunk/Source/WebKit/win/WebView.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit/win/WebView.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -2629,8 +2629,8 @@
|| MIMETypeRegistry::isSupportedMediaMIMEType(mimeType);
if (!canShow && m_page) {
- canShow = (m_page->pluginData().supportsWebVisibleMimeType(mimeType, PluginData::AllPlugins) && allowPlugins)
- || m_page->pluginData().supportsWebVisibleMimeType(mimeType, PluginData::OnlyApplicationPlugins);
+ canShow = (m_page->pluginData().supportsMimeType(mimeType, PluginData::AllPlugins) && allowPlugins)
+ || m_page->pluginData().supportsMimeType(mimeType, PluginData::OnlyApplicationPlugins);
}
if (!canShow)
Modified: trunk/Source/WebKit2/ChangeLog (181493 => 181494)
--- trunk/Source/WebKit2/ChangeLog 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/ChangeLog 2015-03-14 02:50:28 UTC (rev 181494)
@@ -1,3 +1,17 @@
+2015-03-13 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r181483.
+ https://bugs.webkit.org/show_bug.cgi?id=142688
+
+ Caused use-after-free on many tests (Requested by ap on
+ #webkit).
+
+ Reverted changeset:
+
+ "Allow clients to selectively disable plug-ins"
+ https://bugs.webkit.org/show_bug.cgi?id=142506
+ http://trac.webkit.org/changeset/181483
+
2015-03-13 Eric Carlson <[email protected]>
[Mac] Enable WIRELESS_PLAYBACK_TARGET
Modified: trunk/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm (181493 => 181494)
--- trunk/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -399,12 +399,7 @@
plugin.info.desc = plugin.info.file;
plugin.info.isApplicationPlugin = false;
- plugin.info.clientLoadPolicy = PluginLoadClientPolicyUndefined;
-#if PLATFORM(MAC)
- plugin.info.bundleIdentifier = plugin.bundleIdentifier;
- plugin.info.versionString = plugin.versionString;
-#endif
-
+
return true;
}
Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (181493 => 181494)
--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -566,18 +566,9 @@
void ArgumentCoder<PluginInfo>::encode(ArgumentEncoder& encoder, const PluginInfo& pluginInfo)
{
- encoder << pluginInfo.name;
- encoder << pluginInfo.file;
- encoder << pluginInfo.desc;
- encoder << pluginInfo.mimes;
- encoder << pluginInfo.isApplicationPlugin;
- encoder.encodeEnum(pluginInfo.clientLoadPolicy);
-#if PLATFORM(MAC)
- encoder << pluginInfo.bundleIdentifier;
- encoder << pluginInfo.versionString;
-#endif
+ encoder << pluginInfo.name << pluginInfo.file << pluginInfo.desc << pluginInfo.mimes << pluginInfo.isApplicationPlugin;
}
-
+
bool ArgumentCoder<PluginInfo>::decode(ArgumentDecoder& decoder, PluginInfo& pluginInfo)
{
if (!decoder.decode(pluginInfo.name))
@@ -590,15 +581,6 @@
return false;
if (!decoder.decode(pluginInfo.isApplicationPlugin))
return false;
- PluginLoadClientPolicy clientLoadPolicy;
- if (!decoder.decodeEnum(clientLoadPolicy))
- return false;
-#if PLATFORM(MAC)
- if (!decoder.decode(pluginInfo.bundleIdentifier))
- return false;
- if (!decoder.decode(pluginInfo.versionString))
- return false;
-#endif
return true;
}
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (181493 => 181494)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -144,10 +144,6 @@
encoder << hasSelectionServices;
encoder << hasRichContentServices;
#endif
-
-#if ENABLE(NETSCAPE_PLUGIN_API)
- encoder << pluginLoadClientPolicies;
-#endif
}
bool WebProcessCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebProcessCreationParameters& parameters)
@@ -306,11 +302,6 @@
return false;
#endif
-#if ENABLE(NETSCAPE_PLUGIN_API)
- if (!decoder.decode(parameters.pluginLoadClientPolicies))
- return false;
-#endif
-
return true;
}
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (181493 => 181494)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -167,10 +167,6 @@
bool hasSelectionServices;
bool hasRichContentServices;
#endif
-
-#if ENABLE(NETSCAPE_PLUGIN_API)
- HashMap<String, HashMap<String, HashMap<String, uint8_t>>> pluginLoadClientPolicies;
-#endif
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h (181493 => 181494)
--- trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -47,7 +47,6 @@
#include "WebGrammarDetail.h"
#include <WebCore/Credential.h>
#include <WebCore/FrameLoaderTypes.h>
-#include <WebCore/PluginData.h>
#include <WebCore/ProtectionSpace.h>
#include <WebCore/Settings.h>
@@ -483,25 +482,6 @@
return kWKPluginLoadPolicyBlocked;
}
-inline WKPluginLoadClientPolicy toWKPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy PluginLoadClientPolicy)
-{
- switch (PluginLoadClientPolicy) {
- case WebCore::PluginLoadClientPolicyUndefined:
- return kWKPluginLoadClientPolicyUndefined;
- case WebCore::PluginLoadClientPolicyBlock:
- return kWKPluginLoadClientPolicyBlock;
- case WebCore::PluginLoadClientPolicyAsk:
- return kWKPluginLoadClientPolicyAsk;
- case WebCore::PluginLoadClientPolicyAllow:
- return kWKPluginLoadClientPolicyAllow;
- case WebCore::PluginLoadClientPolicyAllowAlways:
- return kWKPluginLoadClientPolicyAllowAlways;
- }
-
- ASSERT_NOT_REACHED();
- return kWKPluginLoadClientPolicyBlock;
-}
-
inline PluginModuleLoadPolicy toPluginModuleLoadPolicy(WKPluginLoadPolicy pluginLoadPolicy)
{
switch (pluginLoadPolicy) {
@@ -517,25 +497,6 @@
return PluginModuleBlocked;
}
-inline WebCore::PluginLoadClientPolicy toPluginLoadClientPolicy(WKPluginLoadClientPolicy pluginLoadClientPolicy)
-{
- switch (pluginLoadClientPolicy) {
- case kWKPluginLoadClientPolicyUndefined:
- return WebCore::PluginLoadClientPolicyUndefined;
- case kWKPluginLoadClientPolicyBlock:
- return WebCore::PluginLoadClientPolicyBlock;
- case kWKPluginLoadClientPolicyAsk:
- return WebCore::PluginLoadClientPolicyAsk;
- case kWKPluginLoadClientPolicyAllow:
- return WebCore::PluginLoadClientPolicyAllow;
- case kWKPluginLoadClientPolicyAllowAlways:
- return WebCore::PluginLoadClientPolicyAllowAlways;
- }
-
- ASSERT_NOT_REACHED();
- return WebCore::PluginLoadClientPolicyBlock;
-}
-
inline WebCore::WebGLLoadPolicy toWebGLLoadPolicy(WKWebGLLoadPolicy webGLLoadPolicy)
{
switch (webGLLoadPolicy) {
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h (181493 => 181494)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -40,14 +40,6 @@
};
typedef uint32_t WKPluginLoadPolicy;
-enum WKPluginLoadClientPolicy {
- kWKPluginLoadClientPolicyUndefined = 0,
- kWKPluginLoadClientPolicyBlock,
- kWKPluginLoadClientPolicyAsk,
- kWKPluginLoadClientPolicyAllow,
- kWKPluginLoadClientPolicyAllowAlways,
-};
-
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h (181493 => 181494)
--- trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -27,7 +27,6 @@
#define WKContextPrivateMac_h
#include <WebKit/WKBase.h>
-#include <WebKit/WKPluginLoadPolicy.h>
#ifdef __cplusplus
extern "C" {
@@ -38,9 +37,6 @@
WK_EXPORT bool WKContextIsPlugInUpdateAvailable(WKContextRef context, WKStringRef plugInBundleIdentifier);
-WK_EXPORT void WKContextSetPluginLoadClientPolicy(WKContextRef context, WKPluginLoadClientPolicy policy, WKStringRef host, WKStringRef bundleIdentifier, WKStringRef versionString);
-WK_EXPORT void WKContextClearPluginClientPolicies(WKContextRef context);
-
WK_EXPORT WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef context, WKStringRef plugInBundleIdentifier);
typedef void (^WKContextGetInfoForInstalledPlugInsBlock)(WKArrayRef, WKErrorRef);
Modified: trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm (181493 => 181494)
--- trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -52,20 +52,6 @@
#endif
}
-void WKContextSetPluginLoadClientPolicy(WKContextRef contextRef, WKPluginLoadClientPolicy policy, WKStringRef host, WKStringRef bundleIdentifier, WKStringRef versionString)
-{
-#if ENABLE(NETSCAPE_PLUGIN_API)
- toImpl(contextRef)->setPluginLoadClientPolicy(toPluginLoadClientPolicy(policy), toWTFString(host), toWTFString(bundleIdentifier), toWTFString(versionString));
-#endif
-}
-
-void WKContextClearPluginClientPolicies(WKContextRef contextRef)
-{
-#if ENABLE(NETSCAPE_PLUGIN_API)
- toImpl(contextRef)->clearPluginClientPolicies();
-#endif
-}
-
WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef contextRef, WKStringRef plugInBundleIdentifierRef)
{
#if ENABLE(NETSCAPE_PLUGIN_API)
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (181493 => 181494)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -683,10 +683,6 @@
serviceController.refreshExistingServices();
#endif
-#if ENABLE(NETSCAPE_PLUGIN_API)
- parameters.pluginLoadClientPolicies = m_pluginLoadClientPolicies;
-#endif
-
#if OS(LINUX)
parameters.shouldEnableMemoryPressureReliefLogging = true;
#endif
@@ -1422,34 +1418,7 @@
m_client.plugInInformationBecameAvailable(this, API::Array::create(WTF::move(plugins)).get());
}
-
-void WebProcessPool::setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy policy, const String& host, const String& bundleIdentifier, const String& versionString)
-{
-#if ENABLE(NETSCAPE_PLUGIN_API)
- HashMap<String, HashMap<String, uint8_t>> policiesByIdentifier;
- if (m_pluginLoadClientPolicies.contains(host))
- policiesByIdentifier = m_pluginLoadClientPolicies.get(host);
-
- HashMap<String, uint8_t> versionsToPolicies;
- if (policiesByIdentifier.contains(bundleIdentifier))
- versionsToPolicies = policiesByIdentifier.get(bundleIdentifier);
-
- versionsToPolicies.set(versionString, policy);
- policiesByIdentifier.set(bundleIdentifier, versionsToPolicies);
- m_pluginLoadClientPolicies.set(host, policiesByIdentifier);
#endif
-
- sendToAllProcesses(Messages::WebProcess::SetPluginLoadClientPolicy(policy, host, bundleIdentifier, versionString));
-}
-
-void WebProcessPool::clearPluginClientPolicies()
-{
-#if ENABLE(NETSCAPE_PLUGIN_API)
- m_pluginLoadClientPolicies.clear();
-#endif
- sendToAllProcesses(Messages::WebProcess::ClearPluginClientPolicies());
-}
-#endif
void WebProcessPool::setMemoryCacheDisabled(bool disabled)
{
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (181493 => 181494)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -183,9 +183,6 @@
void setAdditionalPluginsDirectory(const String&);
PluginInfoStore& pluginInfoStore() { return m_pluginInfoStore; }
-
- void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString);
- void clearPluginClientPolicies();
#endif
#if ENABLE(NETWORK_PROCESS)
@@ -543,10 +540,6 @@
#if ENABLE(CONTENT_EXTENSIONS)
HashMap<String, String> m_encodedContentExtensions;
#endif
-
-#if ENABLE(NETSCAPE_PLUGIN_API)
- HashMap<String, HashMap<String, HashMap<String, uint8_t>>> m_pluginLoadClientPolicies;
-#endif
};
template<typename T>
Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm 2015-03-14 02:50:28 UTC (rev 181494)
@@ -539,7 +539,6 @@
PluginInfo info;
info.name = builtInPDFPluginName();
info.isApplicationPlugin = true;
- info.clientLoadPolicy = PluginLoadClientPolicyUndefined;
MimeClassInfo pdfMimeClassInfo;
pdfMimeClassInfo.type = "application/pdf";
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -1447,11 +1447,8 @@
{
ASSERT(extension.lower() == extension);
- Vector<MimeClassInfo> mimes;
- Vector<size_t> mimePluginIndices;
- pluginData.getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
- for (size_t i = 0; i < mimes.size(); ++i) {
- const MimeClassInfo& mimeClassInfo = mimes[i];
+ for (size_t i = 0; i < pluginData.mimes().size(); ++i) {
+ const MimeClassInfo& mimeClassInfo = pluginData.mimes()[i];
if (mimeClassInfo.extensions.contains(extension))
return true;
@@ -1486,9 +1483,9 @@
bool plugInSupportsMIMEType = false;
if (WebPage* webPage = m_frame->page()) {
const PluginData& pluginData = webPage->corePage()->pluginData();
- if (pluginData.supportsWebVisibleMimeType(mimeType, PluginData::AllPlugins) && webFrame()->coreFrame()->loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
+ if (pluginData.supportsMimeType(mimeType, PluginData::AllPlugins) && webFrame()->coreFrame()->loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
plugInSupportsMIMEType = true;
- else if (pluginData.supportsWebVisibleMimeType(mimeType, PluginData::OnlyApplicationPlugins))
+ else if (pluginData.supportsMimeType(mimeType, PluginData::OnlyApplicationPlugins))
plugInSupportsMIMEType = true;
}
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010, 2011, 2012, 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -44,7 +44,6 @@
#include "WebProcess.h"
#include "WebProcessProxyMessages.h"
#include <WebCore/Color.h>
-#include <WebCore/DocumentLoader.h>
#include <WebCore/IDBFactoryBackendInterface.h>
#include <WebCore/LoaderStrategy.h>
#include <WebCore/MainFrame.h>
@@ -267,8 +266,7 @@
void WebPlatformStrategies::getPluginInfo(const WebCore::Page* page, Vector<WebCore::PluginInfo>& plugins)
{
#if ENABLE(NETSCAPE_PLUGIN_API)
- ASSERT_ARG(page, page);
- populatePluginCache(*page);
+ populatePluginCache();
if (page->mainFrame().loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin)) {
plugins = m_cachedPlugins;
@@ -282,104 +280,21 @@
#endif // ENABLE(NETSCAPE_PLUGIN_API)
}
-void WebPlatformStrategies::getWebVisiblePluginInfo(const Page* page, Vector<PluginInfo>& plugins)
-{
- ASSERT_ARG(page, page);
- ASSERT_ARG(plugins, plugins.isEmpty());
-
- getPluginInfo(page, plugins);
-
-#if PLATFORM(MAC)
- for (int32_t i = plugins.size() - 1; i >= 0; --i) {
- PluginInfo& info = plugins.at(i);
- PluginLoadClientPolicy clientPolicy = info.clientLoadPolicy;
- // Allow built-in plugins. Also tentatively allow plugins that the client might later selectively permit.
- if (info.isApplicationPlugin || clientPolicy == PluginLoadClientPolicyAsk)
- continue;
-
- if (clientPolicy == PluginLoadClientPolicyBlock)
- plugins.remove(i);
- }
-#endif
-}
-
-#if PLATFORM(MAC)
-void WebPlatformStrategies::setPluginLoadClientPolicy(PluginLoadClientPolicy clientPolicy, const String& host, const String& bundleIdentifier, const String& versionString)
-{
- String hostToSet = host.isNull() || !host.length() ? "*" : host;
- String bundleIdentifierToSet = bundleIdentifier.isNull() || !bundleIdentifier.length() ? "*" : bundleIdentifier;
- String versionStringToSet = versionString.isNull() || !versionString.length() ? "*" : versionString;
-
- PluginPolicyMapsByIdentifier policiesByIdentifier;
- if (m_hostsToPluginIdentifierData.contains(hostToSet))
- policiesByIdentifier = m_hostsToPluginIdentifierData.get(hostToSet);
-
- PluginLoadClientPoliciesByBundleVersion versionsToPolicies;
- if (policiesByIdentifier.contains(bundleIdentifierToSet))
- versionsToPolicies = policiesByIdentifier.get(bundleIdentifierToSet);
-
- versionsToPolicies.set(versionStringToSet, clientPolicy);
- policiesByIdentifier.set(bundleIdentifierToSet, versionsToPolicies);
- m_hostsToPluginIdentifierData.set(hostToSet, policiesByIdentifier);
-}
-
-void WebPlatformStrategies::clearPluginClientPolicies()
-{
- m_hostsToPluginIdentifierData.clear();
-}
-
-#endif
-
#if ENABLE(NETSCAPE_PLUGIN_API)
-#if PLATFORM(MAC)
-bool WebPlatformStrategies::pluginLoadClientPolicyForHost(const String& host, const PluginInfo& info, PluginLoadClientPolicy& policy) const
+void WebPlatformStrategies::populatePluginCache()
{
- String hostToLookUp = host;
- if (!m_hostsToPluginIdentifierData.contains(hostToLookUp))
- hostToLookUp = "*";
- if (!m_hostsToPluginIdentifierData.contains(hostToLookUp))
- return false;
+ if (m_pluginCacheIsPopulated)
+ return;
- PluginPolicyMapsByIdentifier policiesByIdentifier = m_hostsToPluginIdentifierData.get(hostToLookUp);
- String identifier = info.bundleIdentifier;
- if (!identifier || !policiesByIdentifier.contains(identifier))
- identifier = "*";
- if (!policiesByIdentifier.contains(identifier))
- return false;
+ ASSERT(m_cachedPlugins.isEmpty());
+
+ // FIXME: Should we do something in case of error here?
+ if (!WebProcess::singleton().parentProcessConnection()->sendSync(Messages::WebProcessProxy::GetPlugins(m_shouldRefreshPlugins), Messages::WebProcessProxy::GetPlugins::Reply(m_cachedPlugins, m_cachedApplicationPlugins), 0))
+ return;
- PluginLoadClientPoliciesByBundleVersion versionsToPolicies = policiesByIdentifier.get(identifier);
- String version = info.versionString;
- if (!version || !versionsToPolicies.contains(version))
- version = "*";
- if (!versionsToPolicies.contains(version))
- return false;
-
- policy = versionsToPolicies.get(version);
- return true;
+ m_shouldRefreshPlugins = false;
+ m_pluginCacheIsPopulated = true;
}
-#endif // PLATFORM(MAC)
-
-void WebPlatformStrategies::populatePluginCache(const WebCore::Page& page)
-{
- if (!m_pluginCacheIsPopulated) {
- if (!WebProcess::singleton().parentProcessConnection()->sendSync(Messages::WebProcessProxy::GetPlugins(m_shouldRefreshPlugins), Messages::WebProcessProxy::GetPlugins::Reply(m_cachedPlugins, m_cachedApplicationPlugins), 0))
- return;
-
- m_shouldRefreshPlugins = false;
- m_pluginCacheIsPopulated = true;
- }
-
-#if PLATFORM(MAC)
- String pageHost = page.mainFrame().loader().documentLoader()->responseURL().host();
- for (PluginInfo& info : m_cachedPlugins) {
- PluginLoadClientPolicy clientPolicy;
- if (pluginLoadClientPolicyForHost(pageHost, info, clientPolicy))
- info.clientLoadPolicy = clientPolicy;
- }
-#else
- UNUSED_PARAM(page);
-#endif // not PLATFORM(MAC)
-}
#endif // ENABLE(NETSCAPE_PLUGIN_API)
#if PLATFORM(COCOA)
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -31,7 +31,6 @@
#include <WebCore/PasteboardStrategy.h>
#include <WebCore/PlatformStrategies.h>
#include <WebCore/PluginStrategy.h>
-#include <wtf/HashMap.h>
#include <wtf/NeverDestroyed.h>
namespace WebKit {
@@ -68,16 +67,7 @@
// WebCore::PluginStrategy
virtual void refreshPlugins() override;
virtual void getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&) override;
- virtual void getWebVisiblePluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&) override;
-#if PLATFORM(MAC)
- typedef HashMap<String, WebCore::PluginLoadClientPolicy> PluginLoadClientPoliciesByBundleVersion;
- typedef HashMap<String, PluginLoadClientPoliciesByBundleVersion> PluginPolicyMapsByIdentifier;
-
- virtual void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString) override;
- virtual void clearPluginClientPolicies() override;
-#endif
-
// WebCore::PasteboardStrategy
#if PLATFORM(IOS)
virtual void writeToPasteboard(const WebCore::PasteboardWebContent&) override;
@@ -109,16 +99,11 @@
#if ENABLE(NETSCAPE_PLUGIN_API)
// WebCore::PluginStrategy implementation.
- void populatePluginCache(const WebCore::Page&);
+ void populatePluginCache();
bool m_pluginCacheIsPopulated;
bool m_shouldRefreshPlugins;
Vector<WebCore::PluginInfo> m_cachedPlugins;
Vector<WebCore::PluginInfo> m_cachedApplicationPlugins;
-
-#if PLATFORM(MAC)
- HashMap<String, PluginPolicyMapsByIdentifier> m_hostsToPluginIdentifierData;
- bool pluginLoadClientPolicyForHost(const String&, const WebCore::PluginInfo&, WebCore::PluginLoadClientPolicy&) const;
-#endif // PLATFORM(MAC)
#endif // ENABLE(NETSCAPE_PLUGIN_API)
};
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -4426,11 +4426,11 @@
return true;
const PluginData& pluginData = m_page->pluginData();
- if (pluginData.supportsWebVisibleMimeType(MIMEType, PluginData::AllPlugins) && corePage()->mainFrame().loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
+ if (pluginData.supportsMimeType(MIMEType, PluginData::AllPlugins) && corePage()->mainFrame().loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
return true;
// We can use application plugins even if plugins aren't enabled.
- if (pluginData.supportsWebVisibleMimeType(MIMEType, PluginData::OnlyApplicationPlugins))
+ if (pluginData.supportsMimeType(MIMEType, PluginData::OnlyApplicationPlugins))
return true;
return false;
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2015-03-14 02:50:28 UTC (rev 181494)
@@ -384,15 +384,6 @@
Inspector::RemoteInspector::singleton().setParentProcessInformation(presenterApplicationPid(), auditData);
}
#endif
-
-#if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)
- for (const auto& hostKeyValue : parameters.pluginLoadClientPolicies) {
- for (const auto& bundleIdentifierKeyValue : hostKeyValue.value) {
- for (const auto& versionStringKeyValue : bundleIdentifierKeyValue.value)
- platformStrategies()->pluginStrategy()->setPluginLoadClientPolicy(static_cast<PluginLoadClientPolicy>(versionStringKeyValue.value), hostKeyValue.key, bundleIdentifierKeyValue.key, versionStringKeyValue.key);
- }
- }
-#endif
}
#if ENABLE(NETWORK_PROCESS)
@@ -871,20 +862,6 @@
parentProcessConnection()->send(Messages::WebProcessPool::PlugInDidReceiveUserInteraction(plugInOriginHash, sessionID), 0);
}
-void WebProcess::setPluginLoadClientPolicy(uint8_t policy, const String& host, const String& bundleIdentifier, const String& versionString)
-{
-#if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)
- platformStrategies()->pluginStrategy()->setPluginLoadClientPolicy(static_cast<PluginLoadClientPolicy>(policy), host, bundleIdentifier, versionString);
-#endif
-}
-
-void WebProcess::clearPluginClientPolicies()
-{
-#if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)
- platformStrategies()->pluginStrategy()->clearPluginClientPolicies();
-#endif
-}
-
static void fromCountedSetToHashMap(TypeCountSet* countedSet, HashMap<String, uint64_t>& map)
{
TypeCountSet::const_iterator end = countedSet->end();
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2015-03-14 02:50:28 UTC (rev 181494)
@@ -123,8 +123,6 @@
bool shouldPlugInAutoStartFromOrigin(WebPage&, const String& pageOrigin, const String& pluginOrigin, const String& mimeType);
void plugInDidStartFromOrigin(const String& pageOrigin, const String& pluginOrigin, const String& mimeType, WebCore::SessionID);
void plugInDidReceiveUserInteraction(const String& pageOrigin, const String& pluginOrigin, const String& mimeType, WebCore::SessionID);
- void setPluginLoadClientPolicy(uint8_t policy, const String& host, const String& bundleIdentifier, const String& versionString);
- void clearPluginClientPolicies();
bool fullKeyboardAccessEnabled() const { return m_fullKeyboardAccessEnabled; }
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.messages.in (181493 => 181494)
--- trunk/Source/WebKit2/WebProcess/WebProcess.messages.in 2015-03-14 01:44:54 UTC (rev 181493)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.messages.in 2015-03-14 02:50:28 UTC (rev 181494)
@@ -56,8 +56,6 @@
DidAddPlugInAutoStartOriginHash(uint32_t hash, double expirationTime, WebCore::SessionID sessionID)
ResetPlugInAutoStartOriginDefaultHashes(HashMap<uint32_t,double> hashes)
ResetPlugInAutoStartOriginHashes(HashMap<WebCore::SessionID, HashMap<uint32_t,double>> hashes)
- SetPluginLoadClientPolicy(uint8_t policy, String host, String bundleIdentifier, String versionString)
- ClearPluginClientPolicies()
void StartMemorySampler(WebKit::SandboxExtension::Handle sampleLogFileHandle, String sampleLogFilePath, double interval);
void StopMemorySampler();