1/*
2 *  Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
3 *  Copyright (C) 2008 Apple Inc. All rights reserved.
4 *
5 *  This library is free software; you can redistribute it and/or
6 *  modify it under the terms of the GNU Lesser General Public
7 *  License as published by the Free Software Foundation; either
8 *  version 2 of the License, or (at your option) any later version.
9 *
10 *  This library is distributed in the hope that it will be useful,
11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 *  Lesser General Public License for more details.
14 *
15 *  You should have received a copy of the GNU Lesser General Public
16 *  License along with this library; if not, write to the Free Software
17 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18 */
19
20#include "config.h"
21#include "DOMMimeTypeArray.h"
22
23#include "DOMPlugin.h"
24#include "Frame.h"
25#include "Page.h"
26#include "PluginData.h"
27#include <wtf/text/AtomicString.h>
28
29namespace WebCore {
30
31DOMMimeTypeArray::DOMMimeTypeArray(Frame* frame)
32    : m_frame(frame)
33{
34}
35
36DOMMimeTypeArray::~DOMMimeTypeArray()
37{
38}
39
40unsigned DOMMimeTypeArray::length() const
41{
42    PluginData* data = getPluginData();
43    if (!data)
44        return 0;
45    return data->mimes().size();
46}
47
48PassRefPtr<DOMMimeType> DOMMimeTypeArray::item(unsigned index)
49{
50    PluginData* data = getPluginData();
51    if (!data)
52        return 0;
53    const Vector<MimeClassInfo>& mimes = data->mimes();
54    if (index >= mimes.size())
55        return 0;
56    return DOMMimeType::create(data, m_frame, index).get();
57}
58
59bool DOMMimeTypeArray::canGetItemsForName(const AtomicString& propertyName)
60{
61    PluginData *data = getPluginData();
62    if (!data)
63        return 0;
64    const Vector<MimeClassInfo>& mimes = data->mimes();
65    for (unsigned i = 0; i < mimes.size(); ++i) {
66        if (mimes[i].type == propertyName)
67            return true;
68    }
69    return false;
70}
71
72PassRefPtr<DOMMimeType> DOMMimeTypeArray::namedItem(const AtomicString& propertyName)
73{
74    PluginData *data = getPluginData();
75    if (!data)
76        return 0;
77    const Vector<MimeClassInfo>& mimes = data->mimes();
78    for (unsigned i = 0; i < mimes.size(); ++i) {
79        if (mimes[i].type == propertyName)
80            return DOMMimeType::create(data, m_frame, i).get();
81    }
82    return 0;
83}
84
85PluginData* DOMMimeTypeArray::getPluginData() const
86{
87    if (!m_frame)
88        return 0;
89    Page* p = m_frame->page();
90    if (!p)
91        return 0;
92    return p->pluginData();
93}
94
95} // namespace WebCore
96