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
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "qwebpluginfactory.h"
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \class QWebPluginFactory
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \since 4.4
266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \brief The QWebPluginFactory class is used to embed custom data types in web pages.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
28231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    \inmodule QtWebKit
29231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    The HTML \c{<object>} tag is used to embed arbitrary content into a web page,
316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    for example:
326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
336c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \code
346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    <object type="application/x-pdf" data="http://qt.nokia.com/document.pdf" width="500" height="400"></object>
356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \endcode
366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    QtWebkit will natively handle the most basic data types like \c{text/html} and
386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \c{image/jpeg}, but for any advanced or custom data types you will need to
396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    provide a handler yourself.
406c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    QWebPluginFactory is a factory for creating plugins for QWebPage, where each
426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    plugin provides support for one or more data types. A plugin factory can be
436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    installed on a QWebPage using QWebPage::setPluginFactory().
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \note The plugin factory is only used if plugins are enabled through QWebSettings.
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    You provide a QWebPluginFactory by implementing the plugins() and the
486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    create() methods. For plugins() it is necessary to describe the plugins the
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    factory can create, including a description and the supported MIME types.
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The MIME types each plugin can handle should match the ones specified in
516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    in the HTML \c{<object>} tag of your content.
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The create() method is called if the requested MIME type is supported. The
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    implementation has to return a new instance of the plugin requested for the
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    given MIME type and the specified URL.
566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    The plugins themselves are subclasses of QObject, but currently only plugins
586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    based on either QWidget or QGraphicsWidget are supported.
596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \class QWebPluginFactory::Plugin
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \since 4.4
66545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    \brief The QWebPluginFactory::Plugin structure describes the properties of a plugin a QWebPluginFactory can create.
67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    \inmodule QtWebKit
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \variable QWebPluginFactory::Plugin::name
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The name of the plugin.
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \variable QWebPluginFactory::Plugin::description
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The description of the plugin.
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \variable QWebPluginFactory::Plugin::mimeTypes
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The list of mime types supported by the plugin.
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \class QWebPluginFactory::MimeType
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \since 4.4
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \brief The QWebPluginFactory::MimeType structure describes a mime type supported by a plugin.
90231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
91231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    \inmodule QtWebKit
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
94231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/*!
95231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    Returns true if this mimetype is the same as the \a other mime type.
96231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block*/
970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool QWebPluginFactory::MimeType::operator==(const MimeType& other) const
980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return name == other.name
1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch           && description == other.description
1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch           && fileExtensions == other.fileExtensions;
1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
105231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    \fn bool QWebPluginFactory::MimeType::operator!=(const MimeType& other) const
106231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    Returns true if this mimetype is different from the \a other mime type.
108231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block*/
109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
110231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/*!
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \variable QWebPluginFactory::MimeType::name
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The full name of the MIME type; e.g., \c{text/plain} or \c{image/png}.
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \variable QWebPluginFactory::MimeType::description
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The description of the mime type.
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \variable QWebPluginFactory::MimeType::fileExtensions
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The list of file extensions that are used by this mime type.
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    For example, a mime type for PDF documents would return "pdf" as its file extension.
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Constructs a QWebPluginFactory with parent \a parent.
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebPluginFactory::QWebPluginFactory(QObject *parent)
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    : QObject(parent)
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Destructor.
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebPluginFactory::~QWebPluginFactory()
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \fn QList<Plugin> QWebPluginFactory::plugins() const = 0
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This function is reimplemented in subclasses to return a list of
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    supported plugins the factory can create.
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \note Currently, this function is only called when JavaScript programs
150545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    access the global \c plugins or \c mimetypes objects.
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This function is called to refresh the list of supported plugins. It may be called after a new plugin
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    has been installed in the system.
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebPluginFactory::refreshPlugins()
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \fn QObject *QWebPluginFactory::create(const QString &mimeType, const QUrl &url,
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const QStringList &argumentNames, const QStringList &argumentValues) const = 0
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Implemented in subclasses to create a new plugin that can display content of
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    the MIME type given by \a mimeType. The URL of the content is provided in \a url.
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The returned object should be a QWidget.
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The HTML object element can provide parameters through the \c{<param>} tag.
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The name and the value attributes of these tags are specified by the
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \a argumentNames and \a argumentValues string lists.
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    For example:
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \code
176231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    <object type="application/x-pdf" data="http://qt.nokia.com/document.pdf" width="500" height="400">
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        <param name="showTableOfContents" value="true" />
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        <param name="hideThumbnails" value="false" />
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    </object>
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \endcode
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The above object element will result in a call to create() with the following arguments:
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \table
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \header \o Parameter
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            \o Value
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \row    \o mimeType
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            \o "application/x-pdf"
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \row    \o url
189231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            \o "http://qt.nokia.com/document.pdf"
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \row    \o argumentNames
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            \o "showTableOfContents" "hideThumbnails"
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \row    \o argumentVaues
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            \o "true" "false"
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \endtable
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \note Ownership of the returned object will be transferred to the caller.
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \enum QWebPluginFactory::Extension
2016c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \internal
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This enum describes the types of extensions that the plugin factory can support. Before using these extensions, you
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    should verify that the extension is supported by calling supportsExtension().
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Currently there are no extensions.
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \class QWebPluginFactory::ExtensionOption
2116c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \internal
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \since 4.4
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \brief The ExtensionOption class provides an extended input argument to QWebPluginFactory's extension support.
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
215231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    \inmodule QtWebKit
216231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \sa QWebPluginFactory::extension()
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \class QWebPluginFactory::ExtensionReturn
2226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \internal
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \since 4.4
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \brief The ExtensionOption class provides an extended output argument to QWebPluginFactory's extension support.
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
226231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    \inmodule QtWebKit
227231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \sa QWebPluginFactory::extension()
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This virtual function can be reimplemented in a QWebPluginFactory subclass to provide support for extensions. The \a option
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    argument is provided as input to the extension; the output results can be stored in \a output.
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \internal
2366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The behaviour of this function is determined by \a extension.
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    You can call supportsExtension() to check if an extension is supported by the factory.
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    By default, no extensions are supported, and this function returns false.
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \sa supportsExtension(), Extension
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebPluginFactory::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output)
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Q_UNUSED(extension)
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Q_UNUSED(option)
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Q_UNUSED(output)
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return false;
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This virtual function returns true if the plugin factory supports \a extension; otherwise false is returned.
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    \internal
2576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    \sa extension()
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebPluginFactory::supportsExtension(Extension extension) const
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Q_UNUSED(extension)
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return false;
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
265