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