• 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 Library 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     Library General Public License for more details.
13 
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19 
20 #ifndef PluginData_h
21 #define PluginData_h
22 
23 #include <wtf/RefCounted.h>
24 #include <wtf/Vector.h>
25 #include "PlatformString.h"
26 
27 namespace WebCore {
28 
29     class Page;
30     struct PluginInfo;
31 
32     struct MimeClassInfo {
33         String type;
34         String desc;
35         String suffixes;
36         PluginInfo* plugin;
37     };
38 
39     struct PluginInfo {
40         String name;
41         String file;
42         String desc;
43         Vector<MimeClassInfo*> mimes;
44     };
45 
46     // FIXME: merge with PluginDatabase in the future
47     class PluginData : public RefCounted<PluginData> {
48     public:
create(const Page * page)49         static PassRefPtr<PluginData> create(const Page* page) { return adoptRef(new PluginData(page)); }
50         ~PluginData();
51 
disconnectPage()52         void disconnectPage() { m_page = 0; }
page()53         const Page* page() const { return m_page; }
54 
plugins()55         const Vector<PluginInfo*>& plugins() const { return m_plugins; }
mimes()56         const Vector<MimeClassInfo*>& mimes() const { return m_mimes; }
57 
58         bool supportsMimeType(const String& mimeType) const;
59         String pluginNameForMimeType(const String& mimeType) const;
60 
61         static void refresh();
62 
63     private:
64         PluginData(const Page*);
65         void initPlugins();
66 
67         Vector<PluginInfo*> m_plugins;
68         Vector<MimeClassInfo*> m_mimes;
69         const Page* m_page;
70     };
71 
72 }
73 
74 #endif
75