#pragma once
#include "PluginData.h"
#include "ScriptWrappable.h"
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
#include <wtf/WeakPtr.h>
namespace WebCore {
class DOMMimeType;
class Navigator;
class DOMPlugin final : public ScriptWrappable, public RefCounted<DOMPlugin>, public CanMakeWeakPtr<DOMPlugin> {
WTF_MAKE_ISO_ALLOCATED(DOMPlugin);
public:
static Ref<DOMPlugin> create(Navigator&, const PluginInfo&);
~DOMPlugin();
const PluginInfo& info() const { return m_info; }
String name() const;
String filename() const;
String description() const;
unsigned length() const;
RefPtr<DOMMimeType> item(unsigned index);
RefPtr<DOMMimeType> namedItem(const AtomString& propertyName);
Vector<AtomString> supportedPropertyNames();
const Vector<Ref<DOMMimeType>>& mimeTypes() const { return m_mimeTypes; }
Navigator* navigator() { return m_navigator.get(); }
private:
DOMPlugin(Navigator&, const PluginInfo&);
WeakPtr<Navigator> m_navigator;
PluginInfo m_info;
Vector<Ref<DOMMimeType>> m_mimeTypes;
};
}