Bug 1178963 part 1. Use nsIPluginTagInternal instead of nsPluginTag in cases where it may be nsFakePluginTag. r=peterv
This commit is contained in:
@@ -9,11 +9,13 @@
|
|||||||
#include "mozilla/dom/MimeTypeArrayBinding.h"
|
#include "mozilla/dom/MimeTypeArrayBinding.h"
|
||||||
#include "mozilla/dom/MimeTypeBinding.h"
|
#include "mozilla/dom/MimeTypeBinding.h"
|
||||||
#include "nsIDOMNavigator.h"
|
#include "nsIDOMNavigator.h"
|
||||||
|
#include "nsPIDOMWindow.h"
|
||||||
#include "nsPluginArray.h"
|
#include "nsPluginArray.h"
|
||||||
#include "nsIMIMEService.h"
|
#include "nsIMIMEService.h"
|
||||||
#include "nsIMIMEInfo.h"
|
#include "nsIMIMEInfo.h"
|
||||||
#include "Navigator.h"
|
#include "Navigator.h"
|
||||||
#include "nsServiceManagerUtils.h"
|
#include "nsServiceManagerUtils.h"
|
||||||
|
#include "nsPluginTags.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
using namespace mozilla::dom;
|
using namespace mozilla::dom;
|
||||||
@@ -216,19 +218,22 @@ NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(nsMimeType, Release)
|
|||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsMimeType, mWindow, mPluginElement)
|
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsMimeType, mWindow, mPluginElement)
|
||||||
|
|
||||||
nsMimeType::nsMimeType(nsPIDOMWindow* aWindow, nsPluginElement* aPluginElement,
|
nsMimeType::nsMimeType(nsPIDOMWindow* aWindow,
|
||||||
uint32_t aPluginTagMimeIndex, const nsAString& aType)
|
nsPluginElement* aPluginElement,
|
||||||
|
const nsAString& aType,
|
||||||
|
const nsAString& aDescription,
|
||||||
|
const nsAString& aExtension)
|
||||||
: mWindow(aWindow),
|
: mWindow(aWindow),
|
||||||
mPluginElement(aPluginElement),
|
mPluginElement(aPluginElement),
|
||||||
mPluginTagMimeIndex(aPluginTagMimeIndex),
|
mType(aType),
|
||||||
mType(aType)
|
mDescription(aDescription),
|
||||||
|
mExtension(aExtension)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMimeType::nsMimeType(nsPIDOMWindow* aWindow, const nsAString& aType)
|
nsMimeType::nsMimeType(nsPIDOMWindow* aWindow, const nsAString& aType)
|
||||||
: mWindow(aWindow),
|
: mWindow(aWindow),
|
||||||
mPluginElement(nullptr),
|
mPluginElement(nullptr),
|
||||||
mPluginTagMimeIndex(0),
|
|
||||||
mType(aType)
|
mType(aType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -251,14 +256,9 @@ nsMimeType::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsMimeType::GetDescription(nsString& retval) const
|
nsMimeType::GetDescription(nsString& aRetval) const
|
||||||
{
|
{
|
||||||
retval.Truncate();
|
aRetval = mDescription;
|
||||||
|
|
||||||
if (mPluginElement) {
|
|
||||||
CopyUTF8toUTF16(mPluginElement->PluginTag()->
|
|
||||||
mMimeDescriptions[mPluginTagMimeIndex], retval);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nsPluginElement*
|
nsPluginElement*
|
||||||
@@ -269,14 +269,9 @@ nsMimeType::GetEnabledPlugin() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsMimeType::GetSuffixes(nsString& retval) const
|
nsMimeType::GetSuffixes(nsString& aRetval) const
|
||||||
{
|
{
|
||||||
retval.Truncate();
|
aRetval = mExtension;
|
||||||
|
|
||||||
if (mPluginElement) {
|
|
||||||
CopyUTF8toUTF16(mPluginElement->PluginTag()->
|
|
||||||
mExtensions[mPluginTagMimeIndex], retval);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -58,8 +58,11 @@ public:
|
|||||||
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(nsMimeType)
|
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(nsMimeType)
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(nsMimeType)
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(nsMimeType)
|
||||||
|
|
||||||
nsMimeType(nsPIDOMWindow* aWindow, nsPluginElement* aPluginElement,
|
nsMimeType(nsPIDOMWindow* aWindow,
|
||||||
uint32_t aPluginTagMimeIndex, const nsAString& aMimeType);
|
nsPluginElement* aPluginElement,
|
||||||
|
const nsAString& aType,
|
||||||
|
const nsAString& aDescription,
|
||||||
|
const nsAString& aExtension);
|
||||||
nsMimeType(nsPIDOMWindow* aWindow, const nsAString& aMimeType);
|
nsMimeType(nsPIDOMWindow* aWindow, const nsAString& aMimeType);
|
||||||
nsPIDOMWindow* GetParentObject() const;
|
nsPIDOMWindow* GetParentObject() const;
|
||||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||||
@@ -85,8 +88,9 @@ protected:
|
|||||||
// mimetype array. We rely on the cycle collector to break this
|
// mimetype array. We rely on the cycle collector to break this
|
||||||
// cycle.
|
// cycle.
|
||||||
nsRefPtr<nsPluginElement> mPluginElement;
|
nsRefPtr<nsPluginElement> mPluginElement;
|
||||||
uint32_t mPluginTagMimeIndex;
|
|
||||||
nsString mType;
|
nsString mType;
|
||||||
|
nsString mDescription;
|
||||||
|
nsString mExtension;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* nsMimeTypeArray_h___ */
|
#endif /* nsMimeTypeArray_h___ */
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ nsPluginArray::Refresh(bool aReloadDocuments)
|
|||||||
// that plugins did not change and was not reloaded
|
// that plugins did not change and was not reloaded
|
||||||
if (pluginHost->ReloadPlugins() ==
|
if (pluginHost->ReloadPlugins() ==
|
||||||
NS_ERROR_PLUGINS_PLUGINSNOTCHANGED) {
|
NS_ERROR_PLUGINS_PLUGINSNOTCHANGED) {
|
||||||
nsTArray<nsRefPtr<nsPluginTag> > newPluginTags;
|
nsTArray<nsCOMPtr<nsIInternalPluginTag> > newPluginTags;
|
||||||
pluginHost->GetPlugins(newPluginTags);
|
pluginHost->GetPlugins(newPluginTags);
|
||||||
|
|
||||||
// Check if the number of plugins we know about are different from
|
// Check if the number of plugins we know about are different from
|
||||||
@@ -279,7 +279,7 @@ operator<(const nsRefPtr<nsPluginElement>& lhs,
|
|||||||
const nsRefPtr<nsPluginElement>& rhs)
|
const nsRefPtr<nsPluginElement>& rhs)
|
||||||
{
|
{
|
||||||
// Sort plugins alphabetically by name.
|
// Sort plugins alphabetically by name.
|
||||||
return lhs->PluginTag()->mName < rhs->PluginTag()->mName;
|
return lhs->PluginTag()->Name() < rhs->PluginTag()->Name();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -296,14 +296,13 @@ nsPluginArray::EnsurePlugins()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsTArray<nsRefPtr<nsPluginTag> > pluginTags;
|
nsTArray<nsCOMPtr<nsIInternalPluginTag> > pluginTags;
|
||||||
pluginHost->GetPlugins(pluginTags);
|
pluginHost->GetPlugins(pluginTags);
|
||||||
|
|
||||||
// need to wrap each of these with a nsPluginElement, which is
|
// need to wrap each of these with a nsPluginElement, which is
|
||||||
// scriptable.
|
// scriptable.
|
||||||
for (uint32_t i = 0; i < pluginTags.Length(); ++i) {
|
for (uint32_t i = 0; i < pluginTags.Length(); ++i) {
|
||||||
nsPluginTag* pluginTag = pluginTags[i];
|
mPlugins.AppendElement(new nsPluginElement(mWindow, pluginTags[i]));
|
||||||
mPlugins.AppendElement(new nsPluginElement(mWindow, pluginTag));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alphabetize the enumeration order of non-hidden plugins to reduce
|
// Alphabetize the enumeration order of non-hidden plugins to reduce
|
||||||
@@ -323,7 +322,7 @@ NS_INTERFACE_MAP_END
|
|||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsPluginElement, mWindow, mMimeTypes)
|
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsPluginElement, mWindow, mMimeTypes)
|
||||||
|
|
||||||
nsPluginElement::nsPluginElement(nsPIDOMWindow* aWindow,
|
nsPluginElement::nsPluginElement(nsPIDOMWindow* aWindow,
|
||||||
nsPluginTag* aPluginTag)
|
nsIInternalPluginTag* aPluginTag)
|
||||||
: mWindow(aWindow),
|
: mWindow(aWindow),
|
||||||
mPluginTag(aPluginTag)
|
mPluginTag(aPluginTag)
|
||||||
{
|
{
|
||||||
@@ -349,25 +348,25 @@ nsPluginElement::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|||||||
void
|
void
|
||||||
nsPluginElement::GetDescription(nsString& retval) const
|
nsPluginElement::GetDescription(nsString& retval) const
|
||||||
{
|
{
|
||||||
CopyUTF8toUTF16(mPluginTag->mDescription, retval);
|
CopyUTF8toUTF16(mPluginTag->Description(), retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsPluginElement::GetFilename(nsString& retval) const
|
nsPluginElement::GetFilename(nsString& retval) const
|
||||||
{
|
{
|
||||||
CopyUTF8toUTF16(mPluginTag->mFileName, retval);
|
CopyUTF8toUTF16(mPluginTag->FileName(), retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsPluginElement::GetVersion(nsString& retval) const
|
nsPluginElement::GetVersion(nsString& retval) const
|
||||||
{
|
{
|
||||||
CopyUTF8toUTF16(mPluginTag->mVersion, retval);
|
CopyUTF8toUTF16(mPluginTag->Version(), retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsPluginElement::GetName(nsString& retval) const
|
nsPluginElement::GetName(nsString& retval) const
|
||||||
{
|
{
|
||||||
CopyUTF8toUTF16(mPluginTag->mName, retval);
|
CopyUTF8toUTF16(mPluginTag->Name(), retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMimeType*
|
nsMimeType*
|
||||||
@@ -452,8 +451,18 @@ nsPluginElement::EnsurePluginMimeTypes()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t i = 0; i < mPluginTag->mMimeTypes.Length(); ++i) {
|
if (mPluginTag->MimeTypes().Length() != mPluginTag->MimeDescriptions().Length() ||
|
||||||
NS_ConvertUTF8toUTF16 type(mPluginTag->mMimeTypes[i]);
|
mPluginTag->MimeTypes().Length() != mPluginTag->Extensions().Length()) {
|
||||||
mMimeTypes.AppendElement(new nsMimeType(mWindow, this, i, type));
|
MOZ_ASSERT(false, "mime type arrays expected to be the same length");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < mPluginTag->MimeTypes().Length(); ++i) {
|
||||||
|
NS_ConvertUTF8toUTF16 type(mPluginTag->MimeTypes()[i]);
|
||||||
|
NS_ConvertUTF8toUTF16 description(mPluginTag->MimeDescriptions()[i]);
|
||||||
|
NS_ConvertUTF8toUTF16 extension(mPluginTag->Extensions()[i]);
|
||||||
|
|
||||||
|
mMimeTypes.AppendElement(new nsMimeType(mWindow, this, type, description,
|
||||||
|
extension));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,11 @@
|
|||||||
#include "nsWeakReference.h"
|
#include "nsWeakReference.h"
|
||||||
#include "nsIObserver.h"
|
#include "nsIObserver.h"
|
||||||
#include "nsWrapperCache.h"
|
#include "nsWrapperCache.h"
|
||||||
#include "nsPluginTags.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
#include "nsPIDOMWindow.h"
|
||||||
|
|
||||||
class nsPluginElement;
|
class nsPluginElement;
|
||||||
class nsMimeType;
|
class nsMimeType;
|
||||||
|
class nsIInternalPluginTag;
|
||||||
|
|
||||||
class nsPluginArray final : public nsIObserver,
|
class nsPluginArray final : public nsIObserver,
|
||||||
public nsSupportsWeakReference,
|
public nsSupportsWeakReference,
|
||||||
@@ -70,12 +70,12 @@ public:
|
|||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsPluginElement)
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsPluginElement)
|
||||||
|
|
||||||
nsPluginElement(nsPIDOMWindow* aWindow, nsPluginTag* aPluginTag);
|
nsPluginElement(nsPIDOMWindow* aWindow, nsIInternalPluginTag* aPluginTag);
|
||||||
|
|
||||||
nsPIDOMWindow* GetParentObject() const;
|
nsPIDOMWindow* GetParentObject() const;
|
||||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||||
|
|
||||||
nsPluginTag* PluginTag() const
|
nsIInternalPluginTag* PluginTag() const
|
||||||
{
|
{
|
||||||
return mPluginTag;
|
return mPluginTag;
|
||||||
}
|
}
|
||||||
@@ -102,7 +102,7 @@ protected:
|
|||||||
void EnsurePluginMimeTypes();
|
void EnsurePluginMimeTypes();
|
||||||
|
|
||||||
nsCOMPtr<nsPIDOMWindow> mWindow;
|
nsCOMPtr<nsPIDOMWindow> mWindow;
|
||||||
nsRefPtr<nsPluginTag> mPluginTag;
|
nsCOMPtr<nsIInternalPluginTag> mPluginTag;
|
||||||
nsTArray<nsRefPtr<nsMimeType> > mMimeTypes;
|
nsTArray<nsRefPtr<nsMimeType> > mMimeTypes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -750,7 +750,7 @@ HangMonitoredProcess::GetPluginName(nsACString& aPluginName)
|
|||||||
return NS_ERROR_UNEXPECTED;
|
return NS_ERROR_UNEXPECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
aPluginName = tag->mName;
|
aPluginName = tag->Name();
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1673,8 +1673,8 @@ nsNPAPIPluginInstance::CarbonNPAPIFailure()
|
|||||||
static bool
|
static bool
|
||||||
GetJavaVersionFromMimetype(nsPluginTag* pluginTag, nsCString& version)
|
GetJavaVersionFromMimetype(nsPluginTag* pluginTag, nsCString& version)
|
||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < pluginTag->mMimeTypes.Length(); ++i) {
|
for (uint32_t i = 0; i < pluginTag->MimeTypes().Length(); ++i) {
|
||||||
nsCString type = pluginTag->mMimeTypes[i];
|
nsCString type = pluginTag->MimeTypes()[i];
|
||||||
nsAutoCString jpi("application/x-java-applet;jpi-version=");
|
nsAutoCString jpi("application/x-java-applet;jpi-version=");
|
||||||
|
|
||||||
int32_t idx = type.Find(jpi, false, 0, -1);
|
int32_t idx = type.Find(jpi, false, 0, -1);
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ nsInvalidPluginTag::~nsInvalidPluginTag()
|
|||||||
|
|
||||||
// Helper to check for a MIME in a comma-delimited preference
|
// Helper to check for a MIME in a comma-delimited preference
|
||||||
static bool
|
static bool
|
||||||
IsTypeInList(nsCString &aMimeType, nsCString aTypeList)
|
IsTypeInList(const nsCString& aMimeType, nsCString aTypeList)
|
||||||
{
|
{
|
||||||
nsAutoCString searchStr;
|
nsAutoCString searchStr;
|
||||||
searchStr.Assign(',');
|
searchStr.Assign(',');
|
||||||
@@ -998,7 +998,7 @@ nsPluginHost::TrySetUpPluginInstance(const nsACString &aMimeType,
|
|||||||
|
|
||||||
#if defined(MOZ_WIDGET_ANDROID) && defined(MOZ_CRASHREPORTER)
|
#if defined(MOZ_WIDGET_ANDROID) && defined(MOZ_CRASHREPORTER)
|
||||||
if (pluginTag->mIsFlashPlugin) {
|
if (pluginTag->mIsFlashPlugin) {
|
||||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("FlashVersion"), pluginTag->mVersion);
|
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("FlashVersion"), pluginTag->Version());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1156,7 +1156,7 @@ nsPluginHost::HavePluginForExtension(const nsACString & aExtension,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsPluginHost::GetPlugins(nsTArray<nsRefPtr<nsPluginTag> >& aPluginArray,
|
nsPluginHost::GetPlugins(nsTArray<nsCOMPtr<nsIInternalPluginTag>>& aPluginArray,
|
||||||
bool aIncludeDisabled)
|
bool aIncludeDisabled)
|
||||||
{
|
{
|
||||||
aPluginArray.Clear();
|
aPluginArray.Clear();
|
||||||
@@ -1217,7 +1217,7 @@ nsPluginHost::FindPreferredPlugin(const InfallibleTArray<nsPluginTag*>& matches)
|
|||||||
|
|
||||||
nsPluginTag *preferredPlugin = matches[0];
|
nsPluginTag *preferredPlugin = matches[0];
|
||||||
for (unsigned int i = 1; i < matches.Length(); i++) {
|
for (unsigned int i = 1; i < matches.Length(); i++) {
|
||||||
if (mozilla::Version(matches[i]->mVersion.get()) > preferredPlugin->mVersion.get()) {
|
if (mozilla::Version(matches[i]->Version().get()) > preferredPlugin->Version().get()) {
|
||||||
preferredPlugin = matches[i];
|
preferredPlugin = matches[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1411,12 +1411,12 @@ nsresult nsPluginHost::GetPlugin(const nsACString &aMimeType,
|
|||||||
rv = NS_OK;
|
rv = NS_OK;
|
||||||
PLUGIN_LOG(PLUGIN_LOG_BASIC,
|
PLUGIN_LOG(PLUGIN_LOG_BASIC,
|
||||||
("nsPluginHost::GetPlugin Begin mime=%s, plugin=%s\n",
|
("nsPluginHost::GetPlugin Begin mime=%s, plugin=%s\n",
|
||||||
PromiseFlatCString(aMimeType).get(), pluginTag->mFileName.get()));
|
PromiseFlatCString(aMimeType).get(), pluginTag->FileName().get()));
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (!pluginTag->mFileName.IsEmpty())
|
if (!pluginTag->FileName().IsEmpty())
|
||||||
printf("For %s found plugin %s\n",
|
printf("For %s found plugin %s\n",
|
||||||
PromiseFlatCString(aMimeType).get(), pluginTag->mFileName.get());
|
PromiseFlatCString(aMimeType).get(), pluginTag->FileName().get());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rv = EnsurePluginLoaded(pluginTag);
|
rv = EnsurePluginLoaded(pluginTag);
|
||||||
@@ -1431,7 +1431,7 @@ nsresult nsPluginHost::GetPlugin(const nsACString &aMimeType,
|
|||||||
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
||||||
("nsPluginHost::GetPlugin End mime=%s, rv=%d, plugin=%p name=%s\n",
|
("nsPluginHost::GetPlugin End mime=%s, rv=%d, plugin=%p name=%s\n",
|
||||||
PromiseFlatCString(aMimeType).get(), rv, *aPlugin,
|
PromiseFlatCString(aMimeType).get(), rv, *aPlugin,
|
||||||
(pluginTag ? pluginTag->mFileName.get() : "(not found)")));
|
(pluginTag ? pluginTag->FileName().get() : "(not found)")));
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
@@ -1970,7 +1970,7 @@ nsPluginHost::ShouldAddPlugin(nsPluginTag* aPluginTag)
|
|||||||
#if defined(XP_WIN) && (defined(__x86_64__) || defined(_M_X64))
|
#if defined(XP_WIN) && (defined(__x86_64__) || defined(_M_X64))
|
||||||
// On 64-bit windows, the only plugin we should load is flash. Use library
|
// On 64-bit windows, the only plugin we should load is flash. Use library
|
||||||
// filename and MIME type to check.
|
// filename and MIME type to check.
|
||||||
if (StringBeginsWith(aPluginTag->mFileName, NS_LITERAL_CSTRING("NPSWF"), nsCaseInsensitiveCStringComparator()) &&
|
if (StringBeginsWith(aPluginTag->FileName(), NS_LITERAL_CSTRING("NPSWF"), nsCaseInsensitiveCStringComparator()) &&
|
||||||
(aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-shockwave-flash")) ||
|
(aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-shockwave-flash")) ||
|
||||||
aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-shockwave-flash-test")))) {
|
aPluginTag->HasMimeType(NS_LITERAL_CSTRING("application/x-shockwave-flash-test")))) {
|
||||||
return true;
|
return true;
|
||||||
@@ -1983,7 +1983,7 @@ nsPluginHost::ShouldAddPlugin(nsPluginTag* aPluginTag)
|
|||||||
}
|
}
|
||||||
#ifdef PLUGIN_LOGGING
|
#ifdef PLUGIN_LOGGING
|
||||||
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
||||||
("ShouldAddPlugin : Ignoring non-flash plugin library %s\n", aPluginTag->mFileName.get()));
|
("ShouldAddPlugin : Ignoring non-flash plugin library %s\n", aPluginTag->FileName().get()));
|
||||||
#endif // PLUGIN_LOGGING
|
#endif // PLUGIN_LOGGING
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
@@ -2003,9 +2003,9 @@ nsPluginHost::AddPluginTag(nsPluginTag* aPluginTag)
|
|||||||
if (aPluginTag->IsActive()) {
|
if (aPluginTag->IsActive()) {
|
||||||
nsAdoptingCString disableFullPage =
|
nsAdoptingCString disableFullPage =
|
||||||
Preferences::GetCString(kPrefDisableFullPage);
|
Preferences::GetCString(kPrefDisableFullPage);
|
||||||
for (uint32_t i = 0; i < aPluginTag->mMimeTypes.Length(); i++) {
|
for (uint32_t i = 0; i < aPluginTag->MimeTypes().Length(); i++) {
|
||||||
if (!IsTypeInList(aPluginTag->mMimeTypes[i], disableFullPage)) {
|
if (!IsTypeInList(aPluginTag->MimeTypes()[i], disableFullPage)) {
|
||||||
RegisterWithCategoryManager(aPluginTag->mMimeTypes[i],
|
RegisterWithCategoryManager(aPluginTag->MimeTypes()[i],
|
||||||
ePluginRegister);
|
ePluginRegister);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2590,11 +2590,15 @@ nsPluginHost::FindPluginsForContent(uint32_t aPluginEpoch,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsTArray<nsRefPtr<nsPluginTag>> plugins;
|
nsTArray<nsCOMPtr<nsIInternalPluginTag>> plugins;
|
||||||
GetPlugins(plugins, true);
|
GetPlugins(plugins, true);
|
||||||
|
|
||||||
for (size_t i = 0; i < plugins.Length(); i++) {
|
for (size_t i = 0; i < plugins.Length(); i++) {
|
||||||
nsRefPtr<nsPluginTag> tag = plugins[i];
|
nsCOMPtr<nsIInternalPluginTag> basetag = plugins[i];
|
||||||
|
|
||||||
|
/// XXX(johns) Bug FIXME-jsplugins - We need to cleanup the various plugintag classes
|
||||||
|
/// to be more sane and avoid this dance
|
||||||
|
nsPluginTag *tag = static_cast<nsPluginTag *>(basetag.get());
|
||||||
|
|
||||||
if (!nsNPAPIPlugin::RunPluginOOP(tag)) {
|
if (!nsNPAPIPlugin::RunPluginOOP(tag)) {
|
||||||
// Don't expose non-OOP plugins to content processes since we have no way
|
// Don't expose non-OOP plugins to content processes since we have no way
|
||||||
@@ -2603,15 +2607,15 @@ nsPluginHost::FindPluginsForContent(uint32_t aPluginEpoch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
aPlugins->AppendElement(PluginTag(tag->mId,
|
aPlugins->AppendElement(PluginTag(tag->mId,
|
||||||
tag->mName,
|
tag->Name(),
|
||||||
tag->mDescription,
|
tag->Description(),
|
||||||
tag->mMimeTypes,
|
tag->MimeTypes(),
|
||||||
tag->mMimeDescriptions,
|
tag->MimeDescriptions(),
|
||||||
tag->mExtensions,
|
tag->Extensions(),
|
||||||
tag->mIsJavaPlugin,
|
tag->mIsJavaPlugin,
|
||||||
tag->mIsFlashPlugin,
|
tag->mIsFlashPlugin,
|
||||||
tag->mFileName,
|
tag->FileName(),
|
||||||
tag->mVersion,
|
tag->Version(),
|
||||||
tag->mLastModifiedTime,
|
tag->mLastModifiedTime,
|
||||||
tag->IsFromExtension()));
|
tag->IsFromExtension()));
|
||||||
}
|
}
|
||||||
@@ -2634,18 +2638,18 @@ nsPluginHost::UpdatePluginInfo(nsPluginTag* aPluginTag)
|
|||||||
// Update types with category manager
|
// Update types with category manager
|
||||||
nsAdoptingCString disableFullPage =
|
nsAdoptingCString disableFullPage =
|
||||||
Preferences::GetCString(kPrefDisableFullPage);
|
Preferences::GetCString(kPrefDisableFullPage);
|
||||||
for (uint32_t i = 0; i < aPluginTag->mMimeTypes.Length(); i++) {
|
for (uint32_t i = 0; i < aPluginTag->MimeTypes().Length(); i++) {
|
||||||
nsRegisterType shouldRegister;
|
nsRegisterType shouldRegister;
|
||||||
|
|
||||||
if (IsTypeInList(aPluginTag->mMimeTypes[i], disableFullPage)) {
|
if (IsTypeInList(aPluginTag->MimeTypes()[i], disableFullPage)) {
|
||||||
shouldRegister = ePluginUnregister;
|
shouldRegister = ePluginUnregister;
|
||||||
} else {
|
} else {
|
||||||
nsPluginTag *plugin = FindNativePluginForType(aPluginTag->mMimeTypes[i],
|
nsPluginTag *plugin = FindNativePluginForType(aPluginTag->MimeTypes()[i],
|
||||||
true);
|
true);
|
||||||
shouldRegister = plugin ? ePluginRegister : ePluginUnregister;
|
shouldRegister = plugin ? ePluginRegister : ePluginUnregister;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterWithCategoryManager(aPluginTag->mMimeTypes[i], shouldRegister);
|
RegisterWithCategoryManager(aPluginTag->MimeTypes()[i], shouldRegister);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIObserverService> obsService =
|
nsCOMPtr<nsIObserverService> obsService =
|
||||||
@@ -2666,7 +2670,7 @@ nsPluginHost::IsTypeWhitelisted(const char *aMimeType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsPluginHost::RegisterWithCategoryManager(nsCString &aMimeType,
|
nsPluginHost::RegisterWithCategoryManager(const nsCString& aMimeType,
|
||||||
nsRegisterType aType)
|
nsRegisterType aType)
|
||||||
{
|
{
|
||||||
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
|
||||||
@@ -2768,13 +2772,13 @@ nsPluginHost::WritePluginInfo()
|
|||||||
// filename & fullpath are on separate line
|
// filename & fullpath are on separate line
|
||||||
// because they can contain field delimiter char
|
// because they can contain field delimiter char
|
||||||
PR_fprintf(fd, "%s%c%c\n%s%c%c\n%s%c%c\n",
|
PR_fprintf(fd, "%s%c%c\n%s%c%c\n%s%c%c\n",
|
||||||
(tag->mFileName.get()),
|
(tag->FileName().get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
||||||
(tag->mFullPath.get()),
|
(tag->mFullPath.get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
||||||
(tag->mVersion.get()),
|
(tag->Version().get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
PLUGIN_REGISTRY_END_OF_LINE_MARKER);
|
PLUGIN_REGISTRY_END_OF_LINE_MARKER);
|
||||||
|
|
||||||
@@ -2792,23 +2796,23 @@ nsPluginHost::WritePluginInfo()
|
|||||||
|
|
||||||
//description, name & mtypecount are on separate line
|
//description, name & mtypecount are on separate line
|
||||||
PR_fprintf(fd, "%s%c%c\n%s%c%c\n%d\n",
|
PR_fprintf(fd, "%s%c%c\n%s%c%c\n%d\n",
|
||||||
(tag->mDescription.get()),
|
(tag->Description().get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
||||||
(tag->mName.get()),
|
(tag->Name().get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
PLUGIN_REGISTRY_END_OF_LINE_MARKER,
|
||||||
tag->mMimeTypes.Length());
|
tag->MimeTypes().Length());
|
||||||
|
|
||||||
// Add in each mimetype this plugin supports
|
// Add in each mimetype this plugin supports
|
||||||
for (uint32_t i = 0; i < tag->mMimeTypes.Length(); i++) {
|
for (uint32_t i = 0; i < tag->MimeTypes().Length(); i++) {
|
||||||
PR_fprintf(fd, "%d%c%s%c%s%c%s%c%c\n",
|
PR_fprintf(fd, "%d%c%s%c%s%c%s%c%c\n",
|
||||||
i,PLUGIN_REGISTRY_FIELD_DELIMITER,
|
i,PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
(tag->mMimeTypes[i].get()),
|
(tag->MimeTypes()[i].get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
(tag->mMimeDescriptions[i].get()),
|
(tag->MimeDescriptions()[i].get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
(tag->mExtensions[i].get()),
|
(tag->Extensions()[i].get()),
|
||||||
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
PLUGIN_REGISTRY_FIELD_DELIMITER,
|
||||||
PLUGIN_REGISTRY_END_OF_LINE_MARKER);
|
PLUGIN_REGISTRY_END_OF_LINE_MARKER);
|
||||||
}
|
}
|
||||||
@@ -3153,7 +3157,7 @@ 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->FileName().get()));
|
||||||
|
|
||||||
if (!ShouldAddPlugin(tag)) {
|
if (!ShouldAddPlugin(tag)) {
|
||||||
continue;
|
continue;
|
||||||
@@ -3881,7 +3885,7 @@ nsPluginHost::GetPluginName(nsNPAPIPluginInstance *aPluginInstance,
|
|||||||
if (!plugin)
|
if (!plugin)
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
*aPluginName = TagForPlugin(plugin)->mName.get();
|
*aPluginName = TagForPlugin(plugin)->Name().get();
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public:
|
|||||||
/* out */ nsACString & aMimeType,
|
/* out */ nsACString & aMimeType,
|
||||||
PluginFilter aFilter = eExcludeDisabled);
|
PluginFilter aFilter = eExcludeDisabled);
|
||||||
|
|
||||||
void GetPlugins(nsTArray<nsRefPtr<nsPluginTag> >& aPluginArray,
|
void GetPlugins(nsTArray<nsCOMPtr<nsIInternalPluginTag>>& aPluginArray,
|
||||||
bool aIncludeDisabled = false);
|
bool aIncludeDisabled = false);
|
||||||
|
|
||||||
void FindPluginsForContent(uint32_t aPluginEpoch,
|
void FindPluginsForContent(uint32_t aPluginEpoch,
|
||||||
@@ -287,7 +287,8 @@ private:
|
|||||||
// Registers or unregisters the given mime type with the category manager
|
// Registers or unregisters the given mime type with the category manager
|
||||||
// (performs no checks - see UpdateCategoryManager)
|
// (performs no checks - see UpdateCategoryManager)
|
||||||
enum nsRegisterType { ePluginRegister, ePluginUnregister };
|
enum nsRegisterType { ePluginRegister, ePluginUnregister };
|
||||||
void RegisterWithCategoryManager(nsCString &aMimeType, nsRegisterType aType);
|
void RegisterWithCategoryManager(const nsCString& aMimeType,
|
||||||
|
nsRegisterType aType);
|
||||||
|
|
||||||
void AddPluginTag(nsPluginTag* aPluginTag);
|
void AddPluginTag(nsPluginTag* aPluginTag);
|
||||||
|
|
||||||
|
|||||||
@@ -139,6 +139,39 @@ GetStatePrefNameForPlugin(nsPluginTag* aTag)
|
|||||||
return MakePrefNameForPlugin("state", aTag);
|
return MakePrefNameForPlugin("state", aTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* nsIInternalPluginTag */
|
||||||
|
nsIInternalPluginTag::nsIInternalPluginTag(const char* aName,
|
||||||
|
const char* aDescription,
|
||||||
|
const char* aFileName,
|
||||||
|
const char* aVersion)
|
||||||
|
: mName(aName)
|
||||||
|
, mDescription(aDescription)
|
||||||
|
, mFileName(aFileName)
|
||||||
|
, mVersion(aVersion)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
nsIInternalPluginTag::nsIInternalPluginTag(const char* aName,
|
||||||
|
const char* aDescription,
|
||||||
|
const char* aFileName,
|
||||||
|
const char* aVersion,
|
||||||
|
const nsTArray<nsCString>& aMimeTypes,
|
||||||
|
const nsTArray<nsCString>& aMimeDescriptions,
|
||||||
|
const nsTArray<nsCString>& aExtensions)
|
||||||
|
: mName(aName)
|
||||||
|
, mDescription(aDescription)
|
||||||
|
, mFileName(aFileName)
|
||||||
|
, mVersion(aVersion)
|
||||||
|
, mMimeTypes(aMimeTypes)
|
||||||
|
, mMimeDescriptions(aMimeDescriptions)
|
||||||
|
, mExtensions(aExtensions)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
nsIInternalPluginTag::~nsIInternalPluginTag()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/* nsPluginTag */
|
/* nsPluginTag */
|
||||||
|
|
||||||
uint32_t nsPluginTag::sNextId;
|
uint32_t nsPluginTag::sNextId;
|
||||||
@@ -146,17 +179,15 @@ uint32_t nsPluginTag::sNextId;
|
|||||||
nsPluginTag::nsPluginTag(nsPluginInfo* aPluginInfo,
|
nsPluginTag::nsPluginTag(nsPluginInfo* aPluginInfo,
|
||||||
int64_t aLastModifiedTime,
|
int64_t aLastModifiedTime,
|
||||||
bool fromExtension)
|
bool fromExtension)
|
||||||
: mId(sNextId++),
|
: nsIInternalPluginTag(aPluginInfo->fName, aPluginInfo->fDescription,
|
||||||
|
aPluginInfo->fFileName, aPluginInfo->fVersion),
|
||||||
|
mId(sNextId++),
|
||||||
mContentProcessRunningCount(0),
|
mContentProcessRunningCount(0),
|
||||||
mHadLocalInstance(false),
|
mHadLocalInstance(false),
|
||||||
mName(aPluginInfo->fName),
|
|
||||||
mDescription(aPluginInfo->fDescription),
|
|
||||||
mLibrary(nullptr),
|
mLibrary(nullptr),
|
||||||
mIsJavaPlugin(false),
|
mIsJavaPlugin(false),
|
||||||
mIsFlashPlugin(false),
|
mIsFlashPlugin(false),
|
||||||
mFileName(aPluginInfo->fFileName),
|
|
||||||
mFullPath(aPluginInfo->fFullPath),
|
mFullPath(aPluginInfo->fFullPath),
|
||||||
mVersion(aPluginInfo->fVersion),
|
|
||||||
mLastModifiedTime(aLastModifiedTime),
|
mLastModifiedTime(aLastModifiedTime),
|
||||||
mCachedBlocklistState(nsIBlocklistService::STATE_NOT_BLOCKED),
|
mCachedBlocklistState(nsIBlocklistService::STATE_NOT_BLOCKED),
|
||||||
mCachedBlocklistStateValid(false),
|
mCachedBlocklistStateValid(false),
|
||||||
@@ -182,16 +213,13 @@ nsPluginTag::nsPluginTag(const char* aName,
|
|||||||
int64_t aLastModifiedTime,
|
int64_t aLastModifiedTime,
|
||||||
bool fromExtension,
|
bool fromExtension,
|
||||||
bool aArgsAreUTF8)
|
bool aArgsAreUTF8)
|
||||||
: mId(sNextId++),
|
: nsIInternalPluginTag(aName, aDescription, aFileName, aVersion),
|
||||||
|
mId(sNextId++),
|
||||||
mContentProcessRunningCount(0),
|
mContentProcessRunningCount(0),
|
||||||
mName(aName),
|
|
||||||
mDescription(aDescription),
|
|
||||||
mLibrary(nullptr),
|
mLibrary(nullptr),
|
||||||
mIsJavaPlugin(false),
|
mIsJavaPlugin(false),
|
||||||
mIsFlashPlugin(false),
|
mIsFlashPlugin(false),
|
||||||
mFileName(aFileName),
|
|
||||||
mFullPath(aFullPath),
|
mFullPath(aFullPath),
|
||||||
mVersion(aVersion),
|
|
||||||
mLastModifiedTime(aLastModifiedTime),
|
mLastModifiedTime(aLastModifiedTime),
|
||||||
mCachedBlocklistState(nsIBlocklistService::STATE_NOT_BLOCKED),
|
mCachedBlocklistState(nsIBlocklistService::STATE_NOT_BLOCKED),
|
||||||
mCachedBlocklistStateValid(false),
|
mCachedBlocklistStateValid(false),
|
||||||
@@ -217,18 +245,13 @@ nsPluginTag::nsPluginTag(uint32_t aId,
|
|||||||
bool aIsFlashPlugin,
|
bool aIsFlashPlugin,
|
||||||
int64_t aLastModifiedTime,
|
int64_t aLastModifiedTime,
|
||||||
bool aFromExtension)
|
bool aFromExtension)
|
||||||
: mId(aId),
|
: nsIInternalPluginTag(aName, aDescription, aFileName, aVersion, aMimeTypes,
|
||||||
|
aMimeDescriptions, aExtensions),
|
||||||
|
mId(aId),
|
||||||
mContentProcessRunningCount(0),
|
mContentProcessRunningCount(0),
|
||||||
mName(aName),
|
|
||||||
mDescription(aDescription),
|
|
||||||
mMimeTypes(aMimeTypes),
|
|
||||||
mMimeDescriptions(aMimeDescriptions),
|
|
||||||
mExtensions(aExtensions),
|
|
||||||
mLibrary(nullptr),
|
mLibrary(nullptr),
|
||||||
mIsJavaPlugin(aIsJavaPlugin),
|
mIsJavaPlugin(aIsJavaPlugin),
|
||||||
mIsFlashPlugin(aIsFlashPlugin),
|
mIsFlashPlugin(aIsFlashPlugin),
|
||||||
mFileName(aFileName),
|
|
||||||
mVersion(aVersion),
|
|
||||||
mLastModifiedTime(aLastModifiedTime),
|
mLastModifiedTime(aLastModifiedTime),
|
||||||
mNiceFileName(),
|
mNiceFileName(),
|
||||||
mCachedBlocklistState(nsIBlocklistService::STATE_NOT_BLOCKED),
|
mCachedBlocklistState(nsIBlocklistService::STATE_NOT_BLOCKED),
|
||||||
@@ -242,7 +265,7 @@ nsPluginTag::~nsPluginTag()
|
|||||||
NS_ASSERTION(!mNext, "Risk of exhausting the stack space, bug 486349");
|
NS_ASSERTION(!mNext, "Risk of exhausting the stack space, bug 486349");
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(nsPluginTag, nsIPluginTag)
|
NS_IMPL_ISUPPORTS(nsPluginTag, nsIPluginTag, nsIInternalPluginTag)
|
||||||
|
|
||||||
void nsPluginTag::InitMime(const char* const* aMimeTypes,
|
void nsPluginTag::InitMime(const char* const* aMimeTypes,
|
||||||
const char* const* aMimeDescriptions,
|
const char* const* aMimeDescriptions,
|
||||||
|
|||||||
@@ -19,9 +19,57 @@ struct PRLibrary;
|
|||||||
struct nsPluginInfo;
|
struct nsPluginInfo;
|
||||||
class nsNPAPIPlugin;
|
class nsNPAPIPlugin;
|
||||||
|
|
||||||
|
// An interface representing plugin tags internally.
|
||||||
|
#define NS_IINTERNALPLUGINTAG_IID \
|
||||||
|
{ 0xe8fdd227, 0x27da, 0x46ee, \
|
||||||
|
{ 0xbe, 0xf3, 0x1a, 0xef, 0x5a, 0x8f, 0xc5, 0xb4 } }
|
||||||
|
|
||||||
|
class nsIInternalPluginTag : public nsIPluginTag
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IINTERNALPLUGINTAG_IID)
|
||||||
|
|
||||||
|
nsIInternalPluginTag(const char* aName, const char* aDescription,
|
||||||
|
const char* aFileName, const char* aVersion);
|
||||||
|
nsIInternalPluginTag(const char* aName, const char* aDescription,
|
||||||
|
const char* aFileName, const char* aVersion,
|
||||||
|
const nsTArray<nsCString>& aMimeTypes,
|
||||||
|
const nsTArray<nsCString>& aMimeDescriptions,
|
||||||
|
const nsTArray<nsCString>& aExtensions);
|
||||||
|
|
||||||
|
virtual bool IsEnabled() = 0;
|
||||||
|
|
||||||
|
const nsCString& Name() const { return mName; }
|
||||||
|
const nsCString& Description() const { return mDescription; }
|
||||||
|
|
||||||
|
const nsTArray<nsCString>& MimeTypes() const { return mMimeTypes; }
|
||||||
|
|
||||||
|
const nsTArray<nsCString>& MimeDescriptions() const {
|
||||||
|
return mMimeDescriptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
const nsTArray<nsCString>& Extensions() const { return mExtensions; }
|
||||||
|
|
||||||
|
const nsCString& FileName() const { return mFileName; }
|
||||||
|
|
||||||
|
const nsCString& Version() const { return mVersion; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
~nsIInternalPluginTag();
|
||||||
|
|
||||||
|
nsCString mName; // UTF-8
|
||||||
|
nsCString mDescription; // UTF-8
|
||||||
|
nsCString mFileName; // UTF-8
|
||||||
|
nsCString mVersion; // UTF-8
|
||||||
|
nsTArray<nsCString> mMimeTypes; // UTF-8
|
||||||
|
nsTArray<nsCString> mMimeDescriptions; // UTF-8
|
||||||
|
nsTArray<nsCString> mExtensions; // UTF-8
|
||||||
|
};
|
||||||
|
NS_DEFINE_STATIC_IID_ACCESSOR(nsIInternalPluginTag, NS_IINTERNALPLUGINTAG_IID)
|
||||||
|
|
||||||
// A linked-list of plugin information that is used for instantiating plugins
|
// A linked-list of plugin information that is used for instantiating plugins
|
||||||
// and reflecting plugin information into JavaScript.
|
// and reflecting plugin information into JavaScript.
|
||||||
class nsPluginTag final : public nsIPluginTag
|
class nsPluginTag final : public nsIInternalPluginTag
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
@@ -69,7 +117,7 @@ public:
|
|||||||
// plugin is enabled and not blocklisted
|
// plugin is enabled and not blocklisted
|
||||||
bool IsActive();
|
bool IsActive();
|
||||||
|
|
||||||
bool IsEnabled();
|
bool IsEnabled() override;
|
||||||
void SetEnabled(bool enabled);
|
void SetEnabled(bool enabled);
|
||||||
bool IsClicktoplay();
|
bool IsClicktoplay();
|
||||||
bool IsBlocklisted();
|
bool IsBlocklisted();
|
||||||
@@ -94,18 +142,11 @@ public:
|
|||||||
// True if we've ever created an instance of this plugin in the current process.
|
// True if we've ever created an instance of this plugin in the current process.
|
||||||
bool mHadLocalInstance;
|
bool mHadLocalInstance;
|
||||||
|
|
||||||
nsCString mName; // UTF-8
|
|
||||||
nsCString mDescription; // UTF-8
|
|
||||||
nsTArray<nsCString> mMimeTypes; // UTF-8
|
|
||||||
nsTArray<nsCString> mMimeDescriptions; // UTF-8
|
|
||||||
nsTArray<nsCString> mExtensions; // UTF-8
|
|
||||||
PRLibrary *mLibrary;
|
PRLibrary *mLibrary;
|
||||||
nsRefPtr<nsNPAPIPlugin> mPlugin;
|
nsRefPtr<nsNPAPIPlugin> mPlugin;
|
||||||
bool mIsJavaPlugin;
|
bool mIsJavaPlugin;
|
||||||
bool mIsFlashPlugin;
|
bool mIsFlashPlugin;
|
||||||
nsCString mFileName; // UTF-8
|
|
||||||
nsCString mFullPath; // UTF-8
|
nsCString mFullPath; // UTF-8
|
||||||
nsCString mVersion; // UTF-8
|
|
||||||
int64_t mLastModifiedTime;
|
int64_t mLastModifiedTime;
|
||||||
nsCOMPtr<nsITimer> mUnloadTimer;
|
nsCOMPtr<nsITimer> mUnloadTimer;
|
||||||
|
|
||||||
|
|||||||
@@ -1341,8 +1341,8 @@ PluginModuleParent::GetPluginDetails()
|
|||||||
if (!pluginTag) {
|
if (!pluginTag) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
mPluginName = pluginTag->mName;
|
mPluginName = pluginTag->Name();
|
||||||
mPluginVersion = pluginTag->mVersion;
|
mPluginVersion = pluginTag->Version();
|
||||||
mIsFlashPlugin = pluginTag->mIsFlashPlugin;
|
mIsFlashPlugin = pluginTag->mIsFlashPlugin;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user