WebKit/qt/tests/qwebplugindatabase/tst_qwebplugindatabase.cpp
changeset 2 303757a437d3
parent 0 4f2f89ce4247
--- a/WebKit/qt/tests/qwebplugindatabase/tst_qwebplugindatabase.cpp	Fri Sep 17 09:02:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,437 +0,0 @@
-/*
-    Copyright (C) 2009 Jakub Wieczorek <faw217@gmail.com>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public
-    License as published by the Free Software Foundation; either
-    version 2 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Library General Public License for more details.
-
-    You should have received a copy of the GNU Library General Public License
-    along with this library; see the file COPYING.LIB.  If not, write to
-    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-    Boston, MA 02110-1301, USA.
-*/
-
-#include <QtTest/QtTest>
-
-#include <qdir.h>
-#include <qwebframe.h>
-#include <qwebpage.h>
-#include <qwebplugindatabase.h>
-#include <qwebsettings.h>
-#include <qvariant.h>
-
-class tst_QWebPluginDatabase : public QObject
-{
-    Q_OBJECT
-
-private slots:
-    void installedPlugins();
-    void searchPaths();
-    void null_data();
-    void null();
-    void pluginForMimeType();
-    void enabled();
-    void operatorequal_data();
-    void operatorequal();
-    void preferredPlugin();
-    void operatorassign_data();
-    void operatorassign();
-};
-
-typedef QWebPluginInfo::MimeType MimeType;
-
-void tst_QWebPluginDatabase::installedPlugins()
-{
-    QWebPage page;
-    page.settings()->setAttribute(QWebSettings::PluginsEnabled, true);
-    QWebFrame* frame = page.mainFrame();
-
-    QVariantMap jsPluginsMap = frame->evaluateJavaScript("window.navigator.plugins").toMap();
-    QList<QWebPluginInfo> plugins = QWebSettings::pluginDatabase()->plugins();
-    QCOMPARE(plugins, QWebSettings::pluginDatabase()->plugins());
-
-    int length = jsPluginsMap["length"].toInt();
-    QCOMPARE(length, plugins.count());
-
-    for (int i = 0; i < length; ++i) {
-        QWebPluginInfo plugin = plugins.at(i);
-
-        QVariantMap jsPlugin = frame->evaluateJavaScript(QString("window.navigator.plugins[%1]").arg(i)).toMap();
-        QString name = jsPlugin["name"].toString();
-        QString description = jsPlugin["description"].toString();
-        QString fileName = jsPlugin["filename"].toString();
-
-        QCOMPARE(plugin.name(), name);
-        QCOMPARE(plugin.description(), description);
-        QCOMPARE(QFileInfo(plugin.path()).fileName(), fileName);
-
-        QList<MimeType> mimeTypes;
-        int mimeTypesCount = jsPlugin["length"].toInt();
-
-        for (int j = 0; j < mimeTypesCount; ++j) {
-            QVariantMap jsMimeType = frame->evaluateJavaScript(QString("window.navigator.plugins[%1][%2]").arg(i).arg(j)).toMap();
-
-            MimeType mimeType;
-            mimeType.name = jsMimeType["type"].toString();
-            mimeType.description = jsMimeType["description"].toString();
-            mimeType.fileExtensions = jsMimeType["suffixes"].toString().split(',', QString::SkipEmptyParts);
-
-            mimeTypes.append(mimeType);
-            QVERIFY(plugin.supportsMimeType(mimeType.name));
-        }
-
-        QCOMPARE(plugin.mimeTypes(), mimeTypes);
-
-        QVERIFY(!plugin.isNull());
-        QVERIFY(plugin.isEnabled());
-    }
-}
-
-void tst_QWebPluginDatabase::searchPaths()
-{
-    QWebPluginDatabase* database = QWebSettings::pluginDatabase();
-    QList<QWebPluginInfo> plugins = database->plugins();
-    QStringList directories = database->searchPaths();
-    QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories);
-
-    database->setSearchPaths(directories);
-    QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories);
-    QCOMPARE(database->searchPaths(), directories);
-    QCOMPARE(database->plugins(), plugins);
-    database->refresh();
-    QCOMPARE(database->plugins(), plugins);
-
-    database->setSearchPaths(QStringList());
-    QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories);
-    QCOMPARE(database->searchPaths(), QStringList());
-    QCOMPARE(database->plugins().count(), 0);
-
-    database->setSearchPaths(directories);
-    QCOMPARE(database->searchPaths(), directories);
-    database->addSearchPath(QDir::tempPath());
-    QCOMPARE(database->searchPaths().count(), directories.count() + 1);
-    QVERIFY(database->searchPaths().contains(QDir::tempPath()));
-    directories.append(QDir::tempPath());
-    QCOMPARE(database->searchPaths(), directories);
-
-    // As an empty set of search paths has been set, the database has been rebuilt
-    // from scratch after bringing the old path set back.
-    // Because the QWebPlugins no longer point to the same PluginPackages,
-    // the list is also no longer equal to the older one, even though it contains
-    // the same information.
-    QCOMPARE(database->plugins().count(), plugins.count());
-    plugins = database->plugins();
-    QCOMPARE(database->plugins(), plugins);
-
-    for (int i = (directories.count() - 1); i >= 0; --i) {
-        QDir directory(directories.at(i));
-        if (!directory.exists() || !directory.count())
-            directories.removeAt(i);
-    }
-
-    database->setSearchPaths(directories);
-    QCOMPARE(database->plugins(), plugins);
-    database->refresh();
-    QCOMPARE(database->plugins(), plugins);
-
-    database->setSearchPaths(QWebPluginDatabase::defaultSearchPaths());
-    directories = QWebPluginDatabase::defaultSearchPaths();
-    QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories);
-    QCOMPARE(database->searchPaths(), directories);
-    QCOMPARE(database->plugins(), plugins);
-}
-
-Q_DECLARE_METATYPE(QWebPluginInfo)
-void tst_QWebPluginDatabase::null_data()
-{
-    QTest::addColumn<QWebPluginInfo>("plugin");
-    QTest::addColumn<bool>("null");
-
-    QTest::newRow("null") << QWebPluginInfo() << true;
-    QTest::newRow("foo") << QWebSettings::pluginDatabase()->pluginForMimeType("foobarbaz") << true;
-
-    QList<QWebPluginInfo> plugins = QWebSettings::pluginDatabase()->plugins();
-    for (int i = 0; i < plugins.count(); ++i)
-        QTest::newRow(QString::number(i).toUtf8().constData()) << plugins.at(i) << false;
-}
-
-void tst_QWebPluginDatabase::null()
-{
-    QFETCH(QWebPluginInfo, plugin);
-    QFETCH(bool, null);
-
-    QCOMPARE(plugin.isNull(), null);
-}
-
-void tst_QWebPluginDatabase::pluginForMimeType()
-{
-    QMultiMap<QString, QWebPluginInfo> pluginsMap;
-    QWebPluginDatabase* database = QWebSettings::pluginDatabase();
-    QList<QWebPluginInfo> plugins = database->plugins();
-
-    for (int i = 0; i < plugins.count(); ++i) {
-        QWebPluginInfo plugin = plugins.at(i);
-
-        QList<MimeType> mimeTypes = plugin.mimeTypes();
-        for (int j = 0; j < mimeTypes.count(); ++j) {
-            QString mimeType = mimeTypes.at(j).name;
-            pluginsMap.insert(mimeType, plugin);
-            QVERIFY(plugin.supportsMimeType(mimeType));
-        }
-    }
-
-    for (int i = 0; i < plugins.count(); ++i) {
-        QWebPluginInfo plugin = plugins.at(i);
-
-        QList<MimeType> mimeTypes = plugin.mimeTypes();
-        for (int j = 0; j < mimeTypes.count(); ++j) {
-            QString mimeType = mimeTypes.at(j).name;
-
-            QVERIFY(pluginsMap.count(mimeType) > 0);
-            if (pluginsMap.count(mimeType) > 1)
-                continue;
-
-            QWebPluginInfo pluginForMimeType = database->pluginForMimeType(mimeType);
-            QCOMPARE(pluginForMimeType, plugin);
-            database->setSearchPaths(database->searchPaths());
-            QCOMPARE(pluginForMimeType, plugin);
-            QCOMPARE(pluginForMimeType, database->pluginForMimeType(mimeType.toUpper()));
-            QCOMPARE(pluginForMimeType, database->pluginForMimeType(mimeType.toLower()));
-            QVERIFY(plugin.supportsMimeType(mimeType));
-            QVERIFY(!pluginForMimeType.isNull());
-            QVERIFY(!plugin.isNull());
-        }
-    }
-}
-
-void tst_QWebPluginDatabase::enabled()
-{
-    QMultiMap<QString, QWebPluginInfo> pluginsMap;
-    QWebPluginDatabase* database = QWebSettings::pluginDatabase();
-    QList<QWebPluginInfo> plugins = database->plugins();
-
-    for (int i = 0; i < plugins.count(); ++i) {
-        QWebPluginInfo plugin = plugins.at(i);
-
-        QList<MimeType> mimeTypes = plugin.mimeTypes();
-        for (int j = 0; j < mimeTypes.count(); ++j) {
-            QString mimeType = mimeTypes.at(j).name;
-            pluginsMap.insert(mimeType, plugin);
-            QVERIFY(plugin.supportsMimeType(mimeType));
-        }
-    }
-
-    QMultiMap<QString, QWebPluginInfo>::iterator it = pluginsMap.begin();
-    while (it != pluginsMap.end()) {
-        QString mimeType = it.key();
-        QWebPluginInfo plugin = it.value();
-        QWebPluginInfo pluginForMimeType = database->pluginForMimeType(mimeType);
-
-        QVERIFY(pluginsMap.count(mimeType) > 0);
-
-        if (pluginsMap.count(mimeType) == 1) {
-            QCOMPARE(plugin, pluginForMimeType);
-
-            QVERIFY(plugin.isEnabled());
-            QVERIFY(pluginForMimeType.isEnabled());
-            plugin.setEnabled(false);
-            QVERIFY(!plugin.isEnabled());
-            QVERIFY(!pluginForMimeType.isEnabled());
-        } else {
-            QVERIFY(plugin.isEnabled());
-            QVERIFY(pluginForMimeType.isEnabled());
-            plugin.setEnabled(false);
-            QVERIFY(!plugin.isEnabled());
-        }
-
-        QVERIFY(!plugin.isNull());
-        QVERIFY(!pluginForMimeType.isNull());
-
-        QWebPluginInfo pluginForMimeType2 = database->pluginForMimeType(mimeType);
-        if (pluginsMap.count(mimeType) == 1) {
-            QVERIFY(pluginForMimeType2 != plugin);
-            QVERIFY(pluginForMimeType2.isNull());
-        } else {
-            QVERIFY(pluginForMimeType2 != plugin);
-            QVERIFY(!pluginForMimeType2.isNull());
-        }
-
-        plugin.setEnabled(true);
-
-        ++it;
-    }
-}
-
-void tst_QWebPluginDatabase::operatorequal_data()
-{
-    QTest::addColumn<QWebPluginInfo>("first");
-    QTest::addColumn<QWebPluginInfo>("second");
-    QTest::addColumn<bool>("equal");
-
-    QWebPluginDatabase* database = QWebSettings::pluginDatabase();
-    QTest::newRow("null") << QWebPluginInfo() << QWebPluginInfo() << true;
-    QTest::newRow("application/x-shockwave-flash") << database->pluginForMimeType("application/x-shockwave-flash")
-                                                   << database->pluginForMimeType("application/x-shockwave-flash") << true;
-    QTest::newRow("foo/bar-baz") << database->pluginForMimeType("foo/bar-baz")
-                                 << database->pluginForMimeType("foo/bar-baz") << true;
-
-    QList<QWebPluginInfo> plugins = database->plugins();
-    for (int i = 0; i < (plugins.count() - 1); ++i) {
-        QWebPluginInfo first = plugins.at(i);
-        QWebPluginInfo second = plugins.at(i + 1);
-
-        QTest::newRow(QString("%1==%2").arg(first.name(), second.name()).toUtf8().constData())
-                                    << first << second << false;
-    }
-}
-
-void tst_QWebPluginDatabase::operatorequal()
-{
-    QFETCH(QWebPluginInfo, first);
-    QFETCH(QWebPluginInfo, second);
-    QFETCH(bool, equal);
-
-    QCOMPARE(first == second, equal);
-}
-
-void tst_QWebPluginDatabase::preferredPlugin()
-{
-    QMultiMap<QString, QWebPluginInfo> pluginsMap;
-    QWebPluginDatabase* database = QWebSettings::pluginDatabase();
-    QList<QWebPluginInfo> plugins = database->plugins();
-
-    for (int i = 0; i < plugins.count(); ++i) {
-        QWebPluginInfo plugin = plugins.at(i);
-
-        QList<MimeType> mimeTypes = plugin.mimeTypes();
-        for (int j = 0; j < mimeTypes.count(); ++j) {
-            QString mimeType = mimeTypes.at(j).name;
-            pluginsMap.insert(mimeType, plugin);
-        }
-    }
-
-    QMultiMap<QString, QWebPluginInfo>::iterator it = pluginsMap.begin();
-    while (it != pluginsMap.end()) {
-        QString mimeType = it.key();
-
-        if (pluginsMap.count(mimeType) > 1) {
-            QList<QWebPluginInfo> pluginsForMimeType = pluginsMap.values(mimeType);
-            QWebPluginInfo plugin = database->pluginForMimeType(mimeType);
-            QVERIFY(plugin.supportsMimeType(mimeType));
-
-            pluginsForMimeType.removeAll(plugin);
-            for (int i = 0; i < pluginsForMimeType.count(); ++i) {
-                QWebPluginInfo anotherPlugin = pluginsForMimeType.at(i);
-                QVERIFY(plugin.supportsMimeType(mimeType));
-                QVERIFY(plugin != anotherPlugin);
-
-                QCOMPARE(database->pluginForMimeType(mimeType), plugin);
-                database->setPreferredPluginForMimeType(mimeType, anotherPlugin);
-                QCOMPARE(database->pluginForMimeType(mimeType), anotherPlugin);
-
-                anotherPlugin.setEnabled(false);
-                QCOMPARE(database->pluginForMimeType(mimeType), plugin);
-
-                anotherPlugin.setEnabled(true);
-                QCOMPARE(database->pluginForMimeType(mimeType), anotherPlugin);
-                database->setSearchPaths(database->searchPaths());
-                QCOMPARE(database->pluginForMimeType(mimeType), anotherPlugin);
-
-                database->setPreferredPluginForMimeType(mimeType, QWebPluginInfo());
-                QCOMPARE(database->pluginForMimeType(mimeType), plugin);
-            }
-        } else {
-            QWebPluginInfo plugin = database->pluginForMimeType(mimeType);
-            QCOMPARE(pluginsMap.value(mimeType), plugin);
-
-            database->setPreferredPluginForMimeType(mimeType, plugin);
-            QCOMPARE(database->pluginForMimeType(mimeType), plugin);
-
-            plugin.setEnabled(false);
-            QCOMPARE(database->pluginForMimeType(mimeType), QWebPluginInfo());
-            plugin.setEnabled(true);
-
-            database->setPreferredPluginForMimeType(mimeType, QWebPluginInfo());
-            QCOMPARE(database->pluginForMimeType(mimeType), plugin);
-        }
-
-        ++it;
-    }
-
-    if (pluginsMap.keys().count() >= 2) {
-        QStringList mimeTypes = pluginsMap.uniqueKeys();
-
-        QString mimeType1 = mimeTypes.at(0);
-        QString mimeType2 = mimeTypes.at(1);
-        QWebPluginInfo plugin1 = database->pluginForMimeType(mimeType1);
-        QWebPluginInfo plugin2 = database->pluginForMimeType(mimeType2);
-
-        int i = 2;
-        while (plugin2.supportsMimeType(mimeType1)
-               && !mimeType2.isEmpty()
-               && i < mimeTypes.count()) {
-            mimeType2 = mimeTypes.at(i);
-            plugin2 = database->pluginForMimeType(mimeType2);
-            ++i;
-        }
-
-        plugin1 = database->pluginForMimeType(mimeType1);
-        QVERIFY(plugin1.supportsMimeType(mimeType1));
-        QVERIFY(!plugin1.isNull());
-        plugin2 = database->pluginForMimeType(mimeType2);
-        QVERIFY(plugin2.supportsMimeType(mimeType2));
-        QVERIFY(!plugin2.isNull());
-
-        database->setPreferredPluginForMimeType(mimeType2, plugin1);
-        QVERIFY(!plugin1.supportsMimeType(mimeType2));
-        QCOMPARE(database->pluginForMimeType(mimeType2), plugin2);
-
-        database->setPreferredPluginForMimeType(mimeType1, plugin1);
-        QVERIFY(!plugin2.supportsMimeType(mimeType1));
-        QCOMPARE(database->pluginForMimeType(mimeType2), plugin2);
-    }
-}
-
-void tst_QWebPluginDatabase::operatorassign_data()
-{
-    QTest::addColumn<QWebPluginInfo>("first");
-    QTest::addColumn<QWebPluginInfo>("second");
-
-    QWebPluginDatabase* database = QWebSettings::pluginDatabase();
-    QTest::newRow("null") << QWebPluginInfo() << QWebPluginInfo();
-
-    QList<QWebPluginInfo> plugins = database->plugins();
-    for (int i = 0; i < (plugins.count() - 1); ++i) {
-        QWebPluginInfo first = plugins.at(i);
-        QWebPluginInfo second = plugins.at(i + 1);
-
-        QTest::newRow(QString("%1=%2").arg(first.name(), second.name()).toUtf8().constData()) << first << second;
-    }
-}
-
-void tst_QWebPluginDatabase::operatorassign()
-{
-    QFETCH(QWebPluginInfo, first);
-    QFETCH(QWebPluginInfo, second);
-
-    QWebPluginInfo info;
-    QCOMPARE(info.mimeTypes(), QList<MimeType>());
-    QCOMPARE(info = first, first);
-    QCOMPARE(info, first);
-    QCOMPARE(info.mimeTypes(), first.mimeTypes());
-    QCOMPARE(info = second, second);
-    QCOMPARE(info, second);
-    QCOMPARE(info.mimeTypes(), second.mimeTypes());
-    QCOMPARE(info = QWebPluginInfo(), QWebPluginInfo());
-    QCOMPARE(info.mimeTypes(), QList<MimeType>());
-}
-
-QTEST_MAIN(tst_QWebPluginDatabase)
-
-#include "tst_qwebplugindatabase.moc"