Home | History | Annotate | Download | only in plugins
      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 : Noncopyable {
     33         String type;
     34         String desc;
     35         String suffixes;
     36         PluginInfo* plugin;
     37     };
     38 
     39     struct PluginInfo : Noncopyable {
     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:
     49         static PassRefPtr<PluginData> create(const Page* page) { return adoptRef(new PluginData(page)); }
     50         ~PluginData();
     51 
     52         void disconnectPage() { m_page = 0; }
     53         const Page* page() const { return m_page; }
     54 
     55         const Vector<PluginInfo*>& plugins() const { return m_plugins; }
     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