Use "= default" to denote default constructor or destructor
[WebKit-https.git] / Source / WebCore / plugins / DOMPlugin.cpp
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 Lesser 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  *  Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public
15  *  License along with this library; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18
19 #include "config.h"
20 #include "DOMPlugin.h"
21
22 #include "PluginData.h"
23 #include "Frame.h"
24 #include <wtf/text/AtomicString.h>
25
26 namespace WebCore {
27
28 DOMPlugin::DOMPlugin(PluginData* pluginData, Frame* frame, PluginInfo pluginInfo)
29     : FrameDestructionObserver(frame)
30     , m_pluginData(pluginData)
31     , m_pluginInfo(WTFMove(pluginInfo))
32 {
33 }
34
35 DOMPlugin::~DOMPlugin() = default;
36
37 String DOMPlugin::name() const
38 {
39     return m_pluginInfo.name;
40 }
41
42 String DOMPlugin::filename() const
43 {
44     return m_pluginInfo.file;
45 }
46
47 String DOMPlugin::description() const
48 {
49     return m_pluginInfo.desc;
50 }
51
52 unsigned DOMPlugin::length() const
53 {
54     return m_pluginInfo.mimes.size();
55 }
56
57 RefPtr<DOMMimeType> DOMPlugin::item(unsigned index)
58 {
59     if (index >= m_pluginInfo.mimes.size() || !m_frame || !m_frame->page())
60         return nullptr;
61
62     MimeClassInfo mime = m_pluginInfo.mimes[index];
63
64     Vector<MimeClassInfo> mimes;
65     Vector<size_t> mimePluginIndices;
66     Vector<PluginInfo> plugins = m_pluginData->webVisiblePlugins();
67     m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
68     for (unsigned i = 0; i < mimes.size(); ++i) {
69         if (mimes[i] == mime && plugins[mimePluginIndices[i]] == m_pluginInfo)
70             return DOMMimeType::create(m_pluginData.get(), m_frame, i);
71     }
72     return nullptr;
73 }
74
75 RefPtr<DOMMimeType> DOMPlugin::namedItem(const AtomicString& propertyName)
76 {
77     if (!m_frame || !m_frame->page())
78         return nullptr;
79
80     Vector<MimeClassInfo> mimes;
81     Vector<size_t> mimePluginIndices;
82     m_pluginData->getWebVisibleMimesAndPluginIndices(mimes, mimePluginIndices);
83     for (unsigned i = 0; i < mimes.size(); ++i)
84         if (mimes[i].type == propertyName)
85             return DOMMimeType::create(m_pluginData.get(), m_frame, i);
86     return nullptr;
87 }
88
89 Vector<AtomicString> DOMPlugin::supportedPropertyNames()
90 {
91     // FIXME: Should be implemented.
92     return Vector<AtomicString>();
93 }
94
95 } // namespace WebCore