18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is free software; you can redistribute it and/or 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project modify it under the terms of the GNU Library General Public 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project License as published by the Free Software Foundation; either 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version 2 of the License, or (at your option) any later version. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is distributed in the hope that it will be useful, 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Library General Public License for more details. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project You should have received a copy of the GNU Library General Public License 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project along with this library; see the file COPYING.LIB. If not, write to 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Boston, MA 02110-1301, USA. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 20e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#ifndef DOMMimeType_h 21e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#define DOMMimeType_h 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 23cad810f21b803229eb11403f9209855525a25d57Steve Block#include "Frame.h" 24cad810f21b803229eb11403f9209855525a25d57Steve Block#include "PluginData.h" 25cad810f21b803229eb11403f9209855525a25d57Steve Block 26dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h> 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/PassRefPtr.h> 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefCounted.h> 29cad810f21b803229eb11403f9209855525a25d57Steve Block#include <wtf/RefPtr.h> 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeclass DOMPlugin; 34e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 35cad810f21b803229eb11403f9209855525a25d57Steve Blockclass DOMMimeType : public RefCounted<DOMMimeType>, private FrameDestructionObserver { 36e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkepublic: 37cad810f21b803229eb11403f9209855525a25d57Steve Block static PassRefPtr<DOMMimeType> create(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index) { return adoptRef(new DOMMimeType(pluginData, frame, index)); } 38e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ~DOMMimeType(); 39e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 40e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke const String &type() const; 41e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke String suffixes() const; 42e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke const String &description() const; 43e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke PassRefPtr<DOMPlugin> enabledPlugin() const; 44e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 45cad810f21b803229eb11403f9209855525a25d57Steve Block // FrameDestructionObserver 46cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void frameDestroyed() { m_frame = 0; } 47cad810f21b803229eb11403f9209855525a25d57Steve Block 48e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeprivate: 49e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke const MimeClassInfo& mimeClassInfo() const { return m_pluginData->mimes()[m_index]; } 50e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 51cad810f21b803229eb11403f9209855525a25d57Steve Block DOMMimeType(PassRefPtr<PluginData>, Frame*, unsigned index); 52e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke RefPtr<PluginData> m_pluginData; 53cad810f21b803229eb11403f9209855525a25d57Steve Block Frame* m_frame; 54e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke unsigned m_index; 55e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 60