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
26namespace WebCore {
27
28DOMPlugin::DOMPlugin(PluginData* pluginData, Frame* frame, unsigned index)
29    : FrameDestructionObserver(frame)
30    , m_pluginData(pluginData)
31    , m_index(index)
32{
33}
34
35DOMPlugin::~DOMPlugin()
36{
37}
38
39String DOMPlugin::name() const
40{
41    return pluginInfo().name;
42}
43
44String DOMPlugin::filename() const
45{
46    return pluginInfo().file;
47}
48
49String DOMPlugin::description() const
50{
51    return pluginInfo().desc;
52}
53
54unsigned DOMPlugin::length() const
55{
56    return pluginInfo().mimes.size();
57}
58
59PassRefPtr<DOMMimeType> DOMPlugin::item(unsigned index)
60{
61    if (index >= pluginInfo().mimes.size())
62        return 0;
63
64    const MimeClassInfo& mime = pluginInfo().mimes[index];
65
66    const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
67    for (unsigned i = 0; i < mimes.size(); ++i) {
68        if (mimes[i] == mime && m_pluginData->mimePluginIndices()[i] == m_index)
69            return DOMMimeType::create(m_pluginData.get(), m_frame, i).get();
70    }
71    return 0;
72}
73
74bool DOMPlugin::canGetItemsForName(const AtomicString& propertyName)
75{
76    const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
77    for (unsigned i = 0; i < mimes.size(); ++i)
78        if (mimes[i].type == propertyName)
79            return true;
80    return false;
81}
82
83PassRefPtr<DOMMimeType> DOMPlugin::namedItem(const AtomicString& propertyName)
84{
85    const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
86    for (unsigned i = 0; i < mimes.size(); ++i)
87        if (mimes[i].type == propertyName)
88            return DOMMimeType::create(m_pluginData.get(), m_frame, i).get();
89    return 0;
90}
91
92} // namespace WebCore
93