• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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