da70ff2230d9b21d8fa1548b534f0454c6bf0541
[WebKit-https.git] / WebKitQt / Api / qwebobjectplugin_p.h
1 #ifndef QWEBOBJECTPLUGIN_P_H
2 #define QWEBOBJECTPLUGIN_P_H
3
4 #include <qglobal.h>
5 #include <qwebobjectplugin.h>
6
7 /*
8   FIXME: This is copied from qfactoryloader_p.h.
9   Remove this once we made qfactoryloader public in Qt
10 */
11 class QFactoryLoaderPrivate;
12
13 class Q_CORE_EXPORT QFactoryLoader : public QObject
14 {
15     Q_OBJECT
16     Q_DECLARE_PRIVATE(QFactoryLoader)
17
18 public:
19     QFactoryLoader(const char *iid,
20                    const QStringList &paths = QStringList(),
21                    const QString &suffix = QString(),
22                    Qt::CaseSensitivity = Qt::CaseSensitive);
23     ~QFactoryLoader();
24
25     QStringList keys() const;
26     QObject *instance(const QString &key) const;
27
28 };
29
30 class QWebFrame;
31
32 class QWebFactoryLoader : public QFactoryLoader
33 {
34     Q_OBJECT
35 public:
36     QWebFactoryLoader(const char *iid,
37                       const QStringList &paths = QStringList(),
38                       const QString &suffix = QString(),
39                       Qt::CaseSensitivity = Qt::CaseSensitive);
40
41     static QWebFactoryLoader *self();
42
43     QStringList names() const { return keys(); }
44     QStringList extensions() const;
45     QString descriptionForName(const QString &key) const;
46     QStringList mimetypesForName(const QString &key) const;
47     QString nameForMimetype(const QString &mimeType) const;
48     inline bool supportsMimeType(const QString &mimeType) const {
49         return !nameForMimetype(mimeType).isEmpty();
50     }
51
52     QString mimeTypeForExtension(const QString &extension);
53
54     QObject *create(QWebFrame *frame,
55                     const QUrl &url,
56                     const QString &mimeType,
57                     const QStringList &argumentNames,
58                     const QStringList &argumentValues);
59
60     struct MimeInfo {
61         QString type;
62         QStringList extensions;
63     };
64     struct Info {
65         QString name;
66         QString description;
67         QList<MimeInfo> mimes;
68     };
69     QList<Info> m_pluginInfo;
70 };
71
72 #endif