WebCore/plugins/qt/PluginDataQt.cpp
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     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 };