|
1 /* |
|
2 Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
|
3 Copyright (C) 2008 Collabora Ltd. 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 Library 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 Library General Public License for more details. |
|
14 |
|
15 You should have received a copy of the GNU Library General Public License |
|
16 along with this library; see the file COPYING.LIB. If not, write to |
|
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
|
18 Boston, MA 02110-1301, USA. |
|
19 */ |
|
20 |
|
21 #include "config.h" |
|
22 #include "PluginData.h" |
|
23 |
|
24 #include "PluginDatabase.h" |
|
25 #include "PluginPackage.h" |
|
26 |
|
27 #include "Chrome.h" |
|
28 #include "ChromeClientQt.h" |
|
29 #include "Page.h" |
|
30 #include <qwebpage.h> |
|
31 #include <qwebpluginfactory.h> |
|
32 |
|
33 namespace WebCore { |
|
34 |
|
35 void PluginData::initPlugins() |
|
36 { |
|
37 QWebPage* webPage = static_cast<ChromeClientQt*>(m_page->chrome()->client())->m_webPage; |
|
38 QWebPluginFactory* factory = webPage->pluginFactory(); |
|
39 if (factory) { |
|
40 |
|
41 QList<QWebPluginFactory::Plugin> qplugins = factory->plugins(); |
|
42 for (int i = 0; i < qplugins.count(); ++i) { |
|
43 const QWebPluginFactory::Plugin& qplugin = qplugins.at(i); |
|
44 |
|
45 PluginInfo info; |
|
46 info.name = qplugin.name; |
|
47 info.desc = qplugin.description; |
|
48 |
|
49 for (int j = 0; j < qplugin.mimeTypes.count(); ++j) { |
|
50 const QWebPluginFactory::MimeType& mimeType = qplugin.mimeTypes.at(j); |
|
51 |
|
52 MimeClassInfo mimeInfo; |
|
53 mimeInfo.type = mimeType.name; |
|
54 mimeInfo.desc = mimeType.description; |
|
55 for (int k = 0; k < mimeType.fileExtensions.count(); ++k) |
|
56 mimeInfo.extensions.append(mimeType.fileExtensions.at(k)); |
|
57 |
|
58 info.mimes.append(mimeInfo); |
|
59 } |
|
60 |
|
61 m_plugins.append(info); |
|
62 } |
|
63 } |
|
64 |
|
65 PluginDatabase *db = PluginDatabase::installedPlugins(); |
|
66 const Vector<PluginPackage*> &plugins = db->plugins(); |
|
67 |
|
68 for (unsigned int i = 0; i < plugins.size(); ++i) { |
|
69 PluginInfo info; |
|
70 PluginPackage* package = plugins[i]; |
|
71 |
|
72 info.name = package->name(); |
|
73 info.file = package->fileName(); |
|
74 info.desc = package->description(); |
|
75 |
|
76 const MIMEToDescriptionsMap& mimeToDescriptions = package->mimeToDescriptions(); |
|
77 MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end(); |
|
78 for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) { |
|
79 MimeClassInfo mime; |
|
80 |
|
81 mime.type = it->first; |
|
82 mime.desc = it->second; |
|
83 mime.extensions = package->mimeToExtensions().get(mime.type); |
|
84 |
|
85 info.mimes.append(mime); |
|
86 } |
|
87 |
|
88 m_plugins.append(info); |
|
89 } |
|
90 } |
|
91 |
|
92 void PluginData::refresh() |
|
93 { |
|
94 PluginDatabase *db = PluginDatabase::installedPlugins(); |
|
95 db->refresh(); |
|
96 } |
|
97 |
|
98 }; |