18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2000 Harri Porten (porten@kde.org) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2000 Daniel Molkentin (molkentin@kde.org) 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2000 Stefan Schimanski (schimmi@kde.org) 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All Rights Reserved. 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is free software; you can redistribute it and/or 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project modify it under the terms of the GNU Library General Public 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project License as published by the Free Software Foundation; either 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version 2 of the License, or (at your option) any later version. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is distributed in the hope that it will be useful, 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Library General Public License for more details. 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project You should have received a copy of the GNU Library General Public License 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project along with this library; see the file COPYING.LIB. If not, write to 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Boston, MA 02110-1301, USA. 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginData.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if USE(PLATFORM_STRATEGIES) 2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "PlatformStrategies.h" 2906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "PluginStrategy.h" 3006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif 3106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPluginData::PluginData(const Page* page) 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 36cad810f21b803229eb11403f9209855525a25d57Steve Block initPlugins(page); 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (unsigned i = 0; i < m_plugins.size(); ++i) { 395af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const PluginInfo& plugin = m_plugins[i]; 4006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen for (unsigned j = 0; j < plugin.mimes.size(); ++j) { 415af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke m_mimes.append(plugin.mimes[j]); 4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen m_mimePluginIndices.append(i); 4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool PluginData::supportsMimeType(const String& mimeType) const 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (unsigned i = 0; i < m_mimes.size(); ++i) 505af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke if (m_mimes[i].type == mimeType) 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString PluginData::pluginNameForMimeType(const String& mimeType) const 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 575af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke for (unsigned i = 0; i < m_mimes.size(); ++i) { 585af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const MimeClassInfo& info = m_mimes[i]; 595af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 605af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke if (info.type == mimeType) 6106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_plugins[m_mimePluginIndices[i]].name; 625af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke } 635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return String(); 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if USE(PLATFORM_STRATEGIES) 6806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid PluginData::refresh() 6906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 7006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen platformStrategies()->pluginStrategy()->refreshPlugins(); 7106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 7206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 73cad810f21b803229eb11403f9209855525a25d57Steve Blockvoid PluginData::initPlugins(const Page* page) 7406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 7506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ASSERT(m_plugins.isEmpty()); 7606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 77cad810f21b803229eb11403f9209855525a25d57Steve Block platformStrategies()->pluginStrategy()->getPluginInfo(page, m_plugins); 7806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 7906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif 8006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 82