Home | History | Annotate | Download | only in plugins
      1 /*
      2  *  Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
      3  *  Copyright (C) 2008 Apple Inc. All rights reserved.
      4  *
      5  *  This library is free software; you can redistribute it and/or
      6  *  modify it under the terms of the GNU Lesser General Public
      7  *  License as published by the Free Software Foundation; either
      8  *  version 2 of the License, or (at your option) any later version.
      9  *
     10  *  This library is distributed in the hope that it will be useful,
     11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  *  Lesser General Public License for more details.
     14  *
     15  *  You should have received a copy of the GNU Lesser General Public
     16  *  License along with this library; if not, write to the Free Software
     17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     18  */
     19 
     20 #include "config.h"
     21 #include "PluginArray.h"
     22 
     23 #include "AtomicString.h"
     24 #include "Frame.h"
     25 #include "Page.h"
     26 #include "Plugin.h"
     27 #include "PluginData.h"
     28 
     29 namespace WebCore {
     30 
     31 PluginArray::PluginArray(Frame* frame)
     32     : m_frame(frame)
     33 {
     34 }
     35 
     36 PluginArray::~PluginArray()
     37 {
     38 }
     39 
     40 unsigned PluginArray::length() const
     41 {
     42     PluginData* data = getPluginData();
     43     if (!data)
     44         return 0;
     45     return data->plugins().size();
     46 }
     47 
     48 PassRefPtr<Plugin> PluginArray::item(unsigned index)
     49 {
     50     PluginData* data = getPluginData();
     51     if (!data)
     52         return 0;
     53     const Vector<PluginInfo*>& plugins = data->plugins();
     54     if (index >= plugins.size())
     55         return 0;
     56     return Plugin::create(data, index).get();
     57 }
     58 
     59 bool PluginArray::canGetItemsForName(const AtomicString& propertyName)
     60 {
     61     PluginData* data = getPluginData();
     62     if (!data)
     63         return 0;
     64     const Vector<PluginInfo*>& plugins = data->plugins();
     65     for (unsigned i = 0; i < plugins.size(); ++i) {
     66         if (plugins[i]->name == propertyName)
     67             return true;
     68     }
     69     return false;
     70 }
     71 
     72 PassRefPtr<Plugin> PluginArray::namedItem(const AtomicString& propertyName)
     73 {
     74     PluginData* data = getPluginData();
     75     if (!data)
     76         return 0;
     77     const Vector<PluginInfo*>& plugins = data->plugins();
     78     for (unsigned i = 0; i < plugins.size(); ++i) {
     79         if (plugins[i]->name == propertyName)
     80             return Plugin::create(data, i).get();
     81     }
     82     return 0;
     83 }
     84 
     85 void PluginArray::refresh(bool reload)
     86 {
     87     Page::refreshPlugins(reload);
     88 }
     89 
     90 PluginData* PluginArray::getPluginData() const
     91 {
     92     if (!m_frame)
     93         return 0;
     94     Page* p = m_frame->page();
     95     if (!p)
     96         return 0;
     97     return p->pluginData();
     98 }
     99 
    100 } // namespace WebCore
    101