18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is free software; you can redistribute it and/or 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project modify it under the terms of the GNU Library General Public 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project License as published by the Free Software Foundation; either 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version 2 of the License, or (at your option) any later version. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is distributed in the hope that it will be useful, 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Library General Public License for more details. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project You should have received a copy of the GNU Library General Public License 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project along with this library; see the file COPYING.LIB. If not, write to 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Boston, MA 02110-1301, USA. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PluginData_h 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PluginData_h 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefCounted.h> 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h> 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PlatformString.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 295af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeclass Page; 305af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkestruct PluginInfo; 315af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 325af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkestruct MimeClassInfo { 335af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke String type; 345af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke String desc; 3506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen Vector<String> extensions; 365af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke}; 375af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 385af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeinline bool operator==(const MimeClassInfo& a, const MimeClassInfo& b) 395af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{ 4006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return a.type == b.type && a.desc == b.desc && a.extensions == b.extensions; 415af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke} 425af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 435af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkestruct PluginInfo { 445af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke String name; 455af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke String file; 465af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke String desc; 475af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke Vector<MimeClassInfo> mimes; 485af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke}; 495af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 505af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke// FIXME: merge with PluginDatabase in the future 515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeclass PluginData : public RefCounted<PluginData> { 525af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkepublic: 535af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke static PassRefPtr<PluginData> create(const Page* page) { return adoptRef(new PluginData(page)); } 545af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const Vector<PluginInfo>& plugins() const { return m_plugins; } 565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const Vector<MimeClassInfo>& mimes() const { return m_mimes; } 5706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen const Vector<size_t>& mimePluginIndices() const { return m_mimePluginIndices; } 5806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 595af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke bool supportsMimeType(const String& mimeType) const; 605af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke String pluginNameForMimeType(const String& mimeType) const; 615af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 625af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke static void refresh(); 635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeprivate: 655af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke PluginData(const Page*); 66cad810f21b803229eb11403f9209855525a25d57Steve Block void initPlugins(const Page*); 675af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 685af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke Vector<PluginInfo> m_plugins; 695af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke Vector<MimeClassInfo> m_mimes; 7006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen Vector<size_t> m_mimePluginIndices; 715af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke}; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 76