38e116aa1c73f2765a55d8cd64699d9f5388eb89
[WebKit-https.git] / Source / WebCore / plugins / DOMPlugin.h
1 /*
2     Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
3
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19
20 #ifndef DOMPlugin_h
21 #define DOMPlugin_h
22
23 #include "FrameDestructionObserver.h"
24 #include "DOMMimeType.h"
25 #include "ScriptWrappable.h"
26 #include <wtf/RefCounted.h>
27 #include <wtf/RefPtr.h>
28
29 namespace WebCore {
30
31 class Plugin;
32 class PluginData;
33
34 class DOMPlugin : public ScriptWrappable, public RefCounted<DOMPlugin>, public FrameDestructionObserver {
35 public:
36     static Ref<DOMPlugin> create(PluginData* pluginData, Frame* frame, PluginInfo pluginInfo) { return adoptRef(*new DOMPlugin(pluginData, frame, WTFMove(pluginInfo))); }
37     ~DOMPlugin();
38
39     String name() const;
40     String filename() const;
41     String description() const;
42
43     unsigned length() const;
44
45     RefPtr<DOMMimeType> item(unsigned index);
46     RefPtr<DOMMimeType> namedItem(const AtomicString& propertyName);
47     Vector<AtomicString> supportedPropertyNames();
48
49 private:
50     DOMPlugin(PluginData*, Frame*, PluginInfo);
51     RefPtr<PluginData> m_pluginData;
52     PluginInfo m_pluginInfo;
53 };
54
55 } // namespace WebCore
56
57 #endif // DOMPlugin_h