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 "core/plugins/DOMMimeTypeArray.h"
     22 
     23 #include "core/frame/LocalFrame.h"
     24 #include "core/page/Page.h"
     25 #include "platform/plugins/PluginData.h"
     26 #include "wtf/text/AtomicString.h"
     27 
     28 namespace WebCore {
     29 
     30 DOMMimeTypeArray::DOMMimeTypeArray(LocalFrame* frame)
     31     : DOMWindowProperty(frame)
     32 {
     33     ScriptWrappable::init(this);
     34 }
     35 
     36 DOMMimeTypeArray::~DOMMimeTypeArray()
     37 {
     38 }
     39 
     40 unsigned DOMMimeTypeArray::length() const
     41 {
     42     PluginData* data = getPluginData();
     43     if (!data)
     44         return 0;
     45     return data->mimes().size();
     46 }
     47 
     48 PassRefPtrWillBeRawPtr<DOMMimeType> DOMMimeTypeArray::item(unsigned index)
     49 {
     50     PluginData* data = getPluginData();
     51     if (!data)
     52         return nullptr;
     53     const Vector<MimeClassInfo>& mimes = data->mimes();
     54     if (index >= mimes.size())
     55         return nullptr;
     56     return DOMMimeType::create(data, m_frame, index).get();
     57 }
     58 
     59 bool DOMMimeTypeArray::canGetItemsForName(const AtomicString& propertyName)
     60 {
     61     PluginData *data = getPluginData();
     62     if (!data)
     63         return 0;
     64     const Vector<MimeClassInfo>& mimes = data->mimes();
     65     for (unsigned i = 0; i < mimes.size(); ++i) {
     66         if (mimes[i].type == propertyName)
     67             return true;
     68     }
     69     return false;
     70 }
     71 
     72 PassRefPtrWillBeRawPtr<DOMMimeType> DOMMimeTypeArray::namedItem(const AtomicString& propertyName)
     73 {
     74     PluginData *data = getPluginData();
     75     if (!data)
     76         return nullptr;
     77     const Vector<MimeClassInfo>& mimes = data->mimes();
     78     for (unsigned i = 0; i < mimes.size(); ++i) {
     79         if (mimes[i].type == propertyName)
     80             return DOMMimeType::create(data, m_frame, i).get();
     81     }
     82     return nullptr;
     83 }
     84 
     85 PluginData* DOMMimeTypeArray::getPluginData() const
     86 {
     87     if (!m_frame)
     88         return 0;
     89     Page* p = m_frame->page();
     90     if (!p)
     91         return 0;
     92     return p->pluginData();
     93 }
     94 
     95 } // namespace WebCore
     96