18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2008 Apple Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Lesser General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Lesser General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Lesser General Public 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License along with this library; if not, write to the Free Software 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 21e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include "DOMMimeTypeArray.h" 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 23e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include "DOMPlugin.h" 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h" 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Page.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginData.h" 27f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/AtomicString.h> 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 31e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeDOMMimeTypeArray::DOMMimeTypeArray(Frame* frame) 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_frame(frame) 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 36e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeDOMMimeTypeArray::~DOMMimeTypeArray() 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 40e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeunsigned DOMMimeTypeArray::length() const 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginData* data = getPluginData(); 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!data) 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return data->mimes().size(); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 48e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkePassRefPtr<DOMMimeType> DOMMimeTypeArray::item(unsigned index) 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginData* data = getPluginData(); 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!data) 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 535af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const Vector<MimeClassInfo>& mimes = data->mimes(); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (index >= mimes.size()) 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 56cad810f21b803229eb11403f9209855525a25d57Steve Block return DOMMimeType::create(data, m_frame, index).get(); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 59e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkebool DOMMimeTypeArray::canGetItemsForName(const AtomicString& propertyName) 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginData *data = getPluginData(); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!data) 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const Vector<MimeClassInfo>& mimes = data->mimes(); 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (unsigned i = 0; i < mimes.size(); ++i) { 665af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke if (mimes[i].type == propertyName) 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 72e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkePassRefPtr<DOMMimeType> DOMMimeTypeArray::namedItem(const AtomicString& propertyName) 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginData *data = getPluginData(); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!data) 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 775af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke const Vector<MimeClassInfo>& mimes = data->mimes(); 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (unsigned i = 0; i < mimes.size(); ++i) { 795af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke if (mimes[i].type == propertyName) 80cad810f21b803229eb11403f9209855525a25d57Steve Block return DOMMimeType::create(data, m_frame, i).get(); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 85e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkePluginData* DOMMimeTypeArray::getPluginData() const 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_frame) 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* p = m_frame->page(); 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!p) 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return p->pluginData(); 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 96