mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1165981 - Only allow flash as a plugin on Windows 64-bit builds; r=bsmedberg
This commit is contained in:
parent
711844b5be
commit
1314808709
@ -1959,9 +1959,39 @@ struct CompareFilesByTime
|
|||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
bool
|
||||||
|
nsPluginHost::ShouldAddPlugin(nsPluginTag* aPluginTag)
|
||||||
|
{
|
||||||
|
#if defined(XP_WIN) && (defined(__x86_64__) || defined(_M_X64))
|
||||||
|
// On 64-bit windows, the only plugin we should load is flash. Use library
|
||||||
|
// filename and MIME type to check.
|
||||||
|
if (StringBeginsWith(aPluginTag->mFileName, NS_LITERAL_CSTRING("NPSWF"), nsCaseInsensitiveCStringComparator()) &&
|
||||||
|
(aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-shockwave-flash")) ||
|
||||||
|
aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-shockwave-flash-test")))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Accept the test plugin MIME types, so mochitests still work.
|
||||||
|
if (aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-test")) ||
|
||||||
|
aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-Second-Test")) ||
|
||||||
|
aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-java-test"))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#ifdef PLUGIN_LOGGING
|
||||||
|
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
||||||
|
("ShouldAddPlugin : Ignoring non-flash plugin library %s\n", aPluginTag->mFileName.get()));
|
||||||
|
#endif // PLUGIN_LOGGING
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif // defined(XP_WIN) && (defined(__x86_64__) || defined(_M_X64))
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsPluginHost::AddPluginTag(nsPluginTag* aPluginTag)
|
nsPluginHost::AddPluginTag(nsPluginTag* aPluginTag)
|
||||||
{
|
{
|
||||||
|
if (!ShouldAddPlugin(aPluginTag)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
aPluginTag->mNext = mPlugins;
|
aPluginTag->mNext = mPlugins;
|
||||||
mPlugins = aPluginTag;
|
mPlugins = aPluginTag;
|
||||||
|
|
||||||
@ -3119,6 +3149,11 @@ nsPluginHost::ReadPluginInfo()
|
|||||||
|
|
||||||
MOZ_LOG(nsPluginLogging::gPluginLog, PLUGIN_LOG_BASIC,
|
MOZ_LOG(nsPluginLogging::gPluginLog, PLUGIN_LOG_BASIC,
|
||||||
("LoadCachedPluginsInfo : Loading Cached plugininfo for %s\n", tag->mFileName.get()));
|
("LoadCachedPluginsInfo : Loading Cached plugininfo for %s\n", tag->mFileName.get()));
|
||||||
|
|
||||||
|
if (!ShouldAddPlugin(tag)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
tag->mNext = mCachedPlugins;
|
tag->mNext = mCachedPlugins;
|
||||||
mCachedPlugins = tag;
|
mCachedPlugins = tag;
|
||||||
}
|
}
|
||||||
|
@ -340,6 +340,10 @@ private:
|
|||||||
uint32_t ChromeEpochForContent();
|
uint32_t ChromeEpochForContent();
|
||||||
void SetChromeEpochForContent(uint32_t aEpoch);
|
void SetChromeEpochForContent(uint32_t aEpoch);
|
||||||
|
|
||||||
|
// On certain platforms, we only want to load certain plugins. This function
|
||||||
|
// centralizes loading rules.
|
||||||
|
bool ShouldAddPlugin(nsPluginTag* aPluginTag);
|
||||||
|
|
||||||
nsRefPtr<nsPluginTag> mPlugins;
|
nsRefPtr<nsPluginTag> mPlugins;
|
||||||
nsRefPtr<nsPluginTag> mCachedPlugins;
|
nsRefPtr<nsPluginTag> mCachedPlugins;
|
||||||
nsRefPtr<nsInvalidPluginTag> mInvalidPlugins;
|
nsRefPtr<nsInvalidPluginTag> mInvalidPlugins;
|
||||||
|
Loading…
Reference in New Issue
Block a user