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