18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2009, The Android Open Source Project
3e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * Copyright (C) 2008 Trolltech ASA
4e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
5e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *
6e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * Redistribution and use in source and binary forms, with or without
7e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * modification, are permitted provided that the following conditions
8e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * are met:
9e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *  * Redistributions of source code must retain the above copyright
10e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *    notice, this list of conditions and the following disclaimer.
11e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *  * Redistributions in binary form must reproduce the above copyright
12e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *    notice, this list of conditions and the following disclaimer in the
13e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *    documentation and/or other materials provided with the distribution.
14e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block *
15e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
16e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
19e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26e03118fd5d9b776df29de3f96232ed6b5395c845Steve Block */
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginData.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginDatabase.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginPackage.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3648ec507a560e614dff3de2e4b6148e7b7a6f495fSteve Blockvoid PluginData::initPlugins(const Page*)
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PluginDatabase *db = PluginDatabase::installedPlugins();
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const Vector<PluginPackage*> &plugins = db->plugins();
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    for (unsigned int i = 0; i < plugins.size(); ++i) {
42a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke        PluginInfo info;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        PluginPackage* package = plugins[i];
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
45a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke        info.name = package->name();
46a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke        info.file = package->fileName();
47a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke        info.desc = package->description();
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        const MIMEToDescriptionsMap& mimeToDescriptions = package->mimeToDescriptions();
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end();
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) {
52a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke            MimeClassInfo mime;
53a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke            mime.type = it->first;
54a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke            mime.desc = it->second;
55970d7cef781d3c9acbeb98f8c7038531a42e0ab8Kristian Monsen            mime.extensions = package->mimeToExtensions().get(mime.type);
56a58d6cc59a0274db6e53b192c835c680f14526c5Leon Clarke            info.mimes.append(mime);
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_plugins.append(info);
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid PluginData::refresh()
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    PluginDatabase *db = PluginDatabase::installedPlugins();
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    db->refresh();
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
70