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