gecko-dev/dom/base/nsMimeTypeArray.h

99 строки
3.1 KiB
C
Исходник Обычный вид История

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
2012-05-21 15:12:37 +04:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
1999-04-20 23:18:51 +04:00
#ifndef nsMimeTypeArray_h___
#define nsMimeTypeArray_h___
#include "nsString.h"
#include "nsTArray.h"
#include "nsWrapperCache.h"
#include "nsPIDOMWindow.h"
#include "mozilla/dom/BindingDeclarations.h"
1999-04-20 23:18:51 +04:00
class nsMimeType;
class nsPluginElement;
1999-04-20 23:18:51 +04:00
class nsMimeTypeArray final : public nsISupports,
public nsWrapperCache
{
1999-04-20 23:18:51 +04:00
public:
explicit nsMimeTypeArray(nsPIDOMWindowInner* aWindow);
1999-04-20 23:18:51 +04:00
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsMimeTypeArray)
nsPIDOMWindowInner* GetParentObject() const;
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
1999-04-20 23:18:51 +04:00
void Refresh();
1999-04-20 23:18:51 +04:00
// MimeTypeArray WebIDL methods
nsMimeType* Item(uint32_t index, mozilla::dom::CallerType aCallerType);
nsMimeType* NamedItem(const nsAString& name,
mozilla::dom::CallerType aCallerType);
nsMimeType* IndexedGetter(uint32_t index, bool &found,
mozilla::dom::CallerType aCallerType);
nsMimeType* NamedGetter(const nsAString& name, bool &found,
mozilla::dom::CallerType aCallerType);
uint32_t Length(mozilla::dom::CallerType aCallerType);
void GetSupportedNames(nsTArray<nsString>& retval,
mozilla::dom::CallerType aCallerType);
protected:
virtual ~nsMimeTypeArray();
void EnsurePluginMimeTypes();
void Clear();
nsCOMPtr<nsPIDOMWindowInner> mWindow;
2010-08-13 08:05:05 +04:00
// mMimeTypes contains MIME types handled by plugins or by an OS
// PreferredApplicationHandler.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
nsTArray<RefPtr<nsMimeType> > mMimeTypes;
nsTArray<RefPtr<nsMimeType> > mCTPMimeTypes;
1999-04-20 23:18:51 +04:00
};
class nsMimeType final : public nsWrapperCache
{
1999-04-20 23:18:51 +04:00
public:
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(nsMimeType)
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(nsMimeType)
1999-04-20 23:18:51 +04:00
nsMimeType(nsPIDOMWindowInner* aWindow,
nsPluginElement* aPluginElement,
const nsAString& aType,
const nsAString& aDescription,
const nsAString& aExtension);
nsPIDOMWindowInner* GetParentObject() const;
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
const nsString& Type() const
{
return mType;
}
// MimeType WebIDL methods
void GetDescription(nsString& retval) const;
nsPluginElement *GetEnabledPlugin() const;
void GetSuffixes(nsString& retval) const;
void GetType(nsString& retval) const;
protected:
virtual ~nsMimeType();
nsCOMPtr<nsPIDOMWindowInner> mWindow;
// Strong reference to the active plugin. Note that this creates an explicit
// reference cycle through the plugin element's mimetype array. We rely on the
// cycle collector to break this cycle.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<nsPluginElement> mPluginElement;
nsString mType;
nsString mDescription;
nsString mExtension;
1999-04-20 23:18:51 +04:00
};
#endif /* nsMimeTypeArray_h___ */