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 "DOMMimeType.h"
21
22 #include "DOMPlugin.h"
23 #include "Frame.h"
24 #include "FrameLoaderClient.h"
25 #include "Page.h"
26 #include "PluginData.h"
27 #include "Settings.h"
28 #include <wtf/text/StringBuilder.h>
29
30 namespace WebCore {
31
DOMMimeType(PassRefPtr<PluginData> pluginData,Frame * frame,unsigned index)32 DOMMimeType::DOMMimeType(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index)
33 : m_pluginData(pluginData)
34 , m_frame(frame)
35 , m_index(index)
36 {
37 if (m_frame)
38 m_frame->addDestructionObserver(this);
39 }
40
~DOMMimeType()41 DOMMimeType::~DOMMimeType()
42 {
43 if (m_frame)
44 m_frame->removeDestructionObserver(this);
45 }
46
type() const47 const String &DOMMimeType::type() const
48 {
49 return mimeClassInfo().type;
50 }
51
suffixes() const52 String DOMMimeType::suffixes() const
53 {
54 const Vector<String>& extensions = mimeClassInfo().extensions;
55
56 StringBuilder builder;
57 for (size_t i = 0; i < extensions.size(); ++i) {
58 if (i)
59 builder.append(',');
60 builder.append(extensions[i]);
61 }
62 return builder.toString();
63 }
64
description() const65 const String &DOMMimeType::description() const
66 {
67 return mimeClassInfo().desc;
68 }
69
enabledPlugin() const70 PassRefPtr<DOMPlugin> DOMMimeType::enabledPlugin() const
71 {
72 if (!m_frame || !m_frame->page() || !m_frame->page()->mainFrame()->loader()->subframeLoader()->allowPlugins(NotAboutToInstantiatePlugin))
73 return 0;
74
75 return DOMPlugin::create(m_pluginData.get(), m_frame, m_pluginData->mimePluginIndices()[m_index]);
76 }
77
78 } // namespace WebCore
79