10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Copyright (C) 2009 Jakub Wieczorek <faw217@gmail.com> 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is free software; you can redistribute it and/or 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modify it under the terms of the GNU Library General Public 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch License as published by the Free Software Foundation; either 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch version 2 of the License, or (at your option) any later version. 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is distributed in the hope that it will be useful, 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch but WITHOUT ANY WARRANTY; without even the implied warranty of 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Library General Public License for more details. 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch You should have received a copy of the GNU Library General Public License 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch along with this library; see the file COPYING.LIB. If not, write to 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Boston, MA 02110-1301, USA. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <QtTest/QtTest> 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qdir.h> 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebframe.h> 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebpage.h> 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebplugindatabase.h> 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebsettings.h> 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qvariant.h> 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass tst_QWebPluginDatabase : public QObject 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Q_OBJECT 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate slots: 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void installedPlugins(); 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void searchPaths(); 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void null_data(); 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void null(); 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void pluginForMimeType(); 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void enabled(); 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void operatorequal_data(); 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void operatorequal(); 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void preferredPlugin(); 43231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void operatorassign_data(); 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void operatorassign(); 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochtypedef QWebPluginInfo::MimeType MimeType; 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::installedPlugins() 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPage page; 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch page.settings()->setAttribute(QWebSettings::PluginsEnabled, true); 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebFrame* frame = page.mainFrame(); 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVariantMap jsPluginsMap = frame->evaluateJavaScript("window.navigator.plugins").toMap(); 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = QWebSettings::pluginDatabase()->plugins(); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(plugins, QWebSettings::pluginDatabase()->plugins()); 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int length = jsPluginsMap["length"].toInt(); 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(length, plugins.count()); 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < length; ++i) { 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = plugins.at(i); 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVariantMap jsPlugin = frame->evaluateJavaScript(QString("window.navigator.plugins[%1]").arg(i)).toMap(); 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString name = jsPlugin["name"].toString(); 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString description = jsPlugin["description"].toString(); 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString fileName = jsPlugin["filename"].toString(); 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(plugin.name(), name); 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(plugin.description(), description); 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(QFileInfo(plugin.path()).fileName(), fileName); 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<MimeType> mimeTypes; 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int mimeTypesCount = jsPlugin["length"].toInt(); 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int j = 0; j < mimeTypesCount; ++j) { 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVariantMap jsMimeType = frame->evaluateJavaScript(QString("window.navigator.plugins[%1][%2]").arg(i).arg(j)).toMap(); 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch MimeType mimeType; 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mimeType.name = jsMimeType["type"].toString(); 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mimeType.description = jsMimeType["description"].toString(); 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mimeType.fileExtensions = jsMimeType["suffixes"].toString().split(',', QString::SkipEmptyParts); 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mimeTypes.append(mimeType); 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.supportsMimeType(mimeType.name)); 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(plugin.mimeTypes(), mimeTypes); 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin.isNull()); 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.isEnabled()); 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::searchPaths() 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginDatabase* database = QWebSettings::pluginDatabase(); 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = database->plugins(); 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QStringList directories = database->searchPaths(); 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories); 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(directories); 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories); 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->searchPaths(), directories); 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins(), plugins); 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->refresh(); 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins(), plugins); 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(QStringList()); 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories); 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->searchPaths(), QStringList()); 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins().count(), 0); 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(directories); 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->searchPaths(), directories); 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->addSearchPath(QDir::tempPath()); 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->searchPaths().count(), directories.count() + 1); 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(database->searchPaths().contains(QDir::tempPath())); 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch directories.append(QDir::tempPath()); 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->searchPaths(), directories); 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // As an empty set of search paths has been set, the database has been rebuilt 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // from scratch after bringing the old path set back. 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Because the QWebPlugins no longer point to the same PluginPackages, 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // the list is also no longer equal to the older one, even though it contains 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // the same information. 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins().count(), plugins.count()); 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugins = database->plugins(); 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins(), plugins); 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = (directories.count() - 1); i >= 0; --i) { 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QDir directory(directories.at(i)); 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!directory.exists() || !directory.count()) 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch directories.removeAt(i); 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(directories); 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins(), plugins); 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->refresh(); 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins(), plugins); 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(QWebPluginDatabase::defaultSearchPaths()); 1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch directories = QWebPluginDatabase::defaultSearchPaths(); 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(QWebPluginDatabase::defaultSearchPaths(), directories); 1460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->searchPaths(), directories); 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->plugins(), plugins); 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQ_DECLARE_METATYPE(QWebPluginInfo) 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::null_data() 1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::addColumn<QWebPluginInfo>("plugin"); 1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::addColumn<bool>("null"); 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow("null") << QWebPluginInfo() << true; 1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow("foo") << QWebSettings::pluginDatabase()->pluginForMimeType("foobarbaz") << true; 1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = QWebSettings::pluginDatabase()->plugins(); 1600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < plugins.count(); ++i) 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow(QString::number(i).toUtf8().constData()) << plugins.at(i) << false; 1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::null() 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QFETCH(QWebPluginInfo, plugin); 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QFETCH(bool, null); 1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(plugin.isNull(), null); 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::pluginForMimeType() 1730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QWebPluginInfo> pluginsMap; 1750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginDatabase* database = QWebSettings::pluginDatabase(); 1760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = database->plugins(); 1770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < plugins.count(); ++i) { 1790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = plugins.at(i); 1800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<MimeType> mimeTypes = plugin.mimeTypes(); 1820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int j = 0; j < mimeTypes.count(); ++j) { 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType = mimeTypes.at(j).name; 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pluginsMap.insert(mimeType, plugin); 1850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.supportsMimeType(mimeType)); 1860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < plugins.count(); ++i) { 1900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = plugins.at(i); 1910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<MimeType> mimeTypes = plugin.mimeTypes(); 1930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int j = 0; j < mimeTypes.count(); ++j) { 1940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType = mimeTypes.at(j).name; 1950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginsMap.count(mimeType) > 0); 1970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (pluginsMap.count(mimeType) > 1) 1980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch continue; 1990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo pluginForMimeType = database->pluginForMimeType(mimeType); 2010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(pluginForMimeType, plugin); 2020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(database->searchPaths()); 2030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(pluginForMimeType, plugin); 2040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(pluginForMimeType, database->pluginForMimeType(mimeType.toUpper())); 2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(pluginForMimeType, database->pluginForMimeType(mimeType.toLower())); 2060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.supportsMimeType(mimeType)); 2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!pluginForMimeType.isNull()); 2080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin.isNull()); 2090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::enabled() 2140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QWebPluginInfo> pluginsMap; 2160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginDatabase* database = QWebSettings::pluginDatabase(); 2170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = database->plugins(); 2180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < plugins.count(); ++i) { 2200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = plugins.at(i); 2210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<MimeType> mimeTypes = plugin.mimeTypes(); 2230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int j = 0; j < mimeTypes.count(); ++j) { 2240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType = mimeTypes.at(j).name; 2250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pluginsMap.insert(mimeType, plugin); 2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.supportsMimeType(mimeType)); 2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QWebPluginInfo>::iterator it = pluginsMap.begin(); 2310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while (it != pluginsMap.end()) { 2320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType = it.key(); 2330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = it.value(); 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo pluginForMimeType = database->pluginForMimeType(mimeType); 2350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginsMap.count(mimeType) > 0); 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (pluginsMap.count(mimeType) == 1) { 2390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(plugin, pluginForMimeType); 2400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.isEnabled()); 2420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginForMimeType.isEnabled()); 2430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin.setEnabled(false); 2440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin.isEnabled()); 2450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!pluginForMimeType.isEnabled()); 2460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 2470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.isEnabled()); 2480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginForMimeType.isEnabled()); 2490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin.setEnabled(false); 2500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin.isEnabled()); 2510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin.isNull()); 2540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!pluginForMimeType.isNull()); 2550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo pluginForMimeType2 = database->pluginForMimeType(mimeType); 2570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (pluginsMap.count(mimeType) == 1) { 2580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginForMimeType2 != plugin); 2590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginForMimeType2.isNull()); 2600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 2610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(pluginForMimeType2 != plugin); 2620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!pluginForMimeType2.isNull()); 2630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin.setEnabled(true); 2660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ++it; 2680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::operatorequal_data() 2720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::addColumn<QWebPluginInfo>("first"); 2740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::addColumn<QWebPluginInfo>("second"); 2750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::addColumn<bool>("equal"); 2760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginDatabase* database = QWebSettings::pluginDatabase(); 2780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow("null") << QWebPluginInfo() << QWebPluginInfo() << true; 2790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow("application/x-shockwave-flash") << database->pluginForMimeType("application/x-shockwave-flash") 2800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch << database->pluginForMimeType("application/x-shockwave-flash") << true; 2810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow("foo/bar-baz") << database->pluginForMimeType("foo/bar-baz") 2820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch << database->pluginForMimeType("foo/bar-baz") << true; 2830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = database->plugins(); 2850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < (plugins.count() - 1); ++i) { 2860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo first = plugins.at(i); 2870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo second = plugins.at(i + 1); 2880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QTest::newRow(QString("%1==%2").arg(first.name(), second.name()).toUtf8().constData()) 2900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch << first << second << false; 2910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::operatorequal() 2950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QFETCH(QWebPluginInfo, first); 2970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QFETCH(QWebPluginInfo, second); 2980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QFETCH(bool, equal); 2990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(first == second, equal); 3010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebPluginDatabase::preferredPlugin() 3040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QWebPluginInfo> pluginsMap; 3060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginDatabase* database = QWebSettings::pluginDatabase(); 3070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> plugins = database->plugins(); 3080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < plugins.count(); ++i) { 3100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = plugins.at(i); 3110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<MimeType> mimeTypes = plugin.mimeTypes(); 3130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int j = 0; j < mimeTypes.count(); ++j) { 3140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType = mimeTypes.at(j).name; 3150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pluginsMap.insert(mimeType, plugin); 3160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QMultiMap<QString, QWebPluginInfo>::iterator it = pluginsMap.begin(); 3200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while (it != pluginsMap.end()) { 3210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType = it.key(); 3220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (pluginsMap.count(mimeType) > 1) { 3240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QList<QWebPluginInfo> pluginsForMimeType = pluginsMap.values(mimeType); 3250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = database->pluginForMimeType(mimeType); 3260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.supportsMimeType(mimeType)); 3270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pluginsForMimeType.removeAll(plugin); 3290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (int i = 0; i < pluginsForMimeType.count(); ++i) { 3300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo anotherPlugin = pluginsForMimeType.at(i); 3310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin.supportsMimeType(mimeType)); 3320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin != anotherPlugin); 3330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), plugin); 3350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setPreferredPluginForMimeType(mimeType, anotherPlugin); 3360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), anotherPlugin); 3370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch anotherPlugin.setEnabled(false); 3390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), plugin); 3400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch anotherPlugin.setEnabled(true); 3420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), anotherPlugin); 3430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setSearchPaths(database->searchPaths()); 3440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), anotherPlugin); 3450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setPreferredPluginForMimeType(mimeType, QWebPluginInfo()); 3470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), plugin); 3480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 3500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin = database->pluginForMimeType(mimeType); 3510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(pluginsMap.value(mimeType), plugin); 3520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setPreferredPluginForMimeType(mimeType, plugin); 3540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), plugin); 3550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin.setEnabled(false); 3570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), QWebPluginInfo()); 3580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin.setEnabled(true); 3590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setPreferredPluginForMimeType(mimeType, QWebPluginInfo()); 3610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType), plugin); 3620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ++it; 3650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (pluginsMap.keys().count() >= 2) { 3680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QStringList mimeTypes = pluginsMap.uniqueKeys(); 3690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType1 = mimeTypes.at(0); 3710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString mimeType2 = mimeTypes.at(1); 3720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin1 = database->pluginForMimeType(mimeType1); 3730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPluginInfo plugin2 = database->pluginForMimeType(mimeType2); 3740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int i = 2; 3760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while (plugin2.supportsMimeType(mimeType1) 3770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch && !mimeType2.isEmpty() 3780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch && i < mimeTypes.count()) { 3790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mimeType2 = mimeTypes.at(i); 3800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin2 = database->pluginForMimeType(mimeType2); 3810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ++i; 3820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin1 = database->pluginForMimeType(mimeType1); 3850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin1.supportsMimeType(mimeType1)); 3860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin1.isNull()); 3870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch plugin2 = database->pluginForMimeType(mimeType2); 3880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(plugin2.supportsMimeType(mimeType2)); 3890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin2.isNull()); 3900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setPreferredPluginForMimeType(mimeType2, plugin1); 3920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin1.supportsMimeType(mimeType2)); 3930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType2), plugin2); 3940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch database->setPreferredPluginForMimeType(mimeType1, plugin1); 3960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!plugin2.supportsMimeType(mimeType1)); 3970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(database->pluginForMimeType(mimeType2), plugin2); 3980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 401231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid tst_QWebPluginDatabase::operatorassign_data() 402231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 403231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QTest::addColumn<QWebPluginInfo>("first"); 404231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QTest::addColumn<QWebPluginInfo>("second"); 405231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 406231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QWebPluginDatabase* database = QWebSettings::pluginDatabase(); 407231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QTest::newRow("null") << QWebPluginInfo() << QWebPluginInfo(); 408231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 409231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QList<QWebPluginInfo> plugins = database->plugins(); 410231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (int i = 0; i < (plugins.count() - 1); ++i) { 411231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QWebPluginInfo first = plugins.at(i); 412231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QWebPluginInfo second = plugins.at(i + 1); 413231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 414231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QTest::newRow(QString("%1=%2").arg(first.name(), second.name()).toUtf8().constData()) << first << second; 415231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 416231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 417231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 418231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid tst_QWebPluginDatabase::operatorassign() 419231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 420231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QFETCH(QWebPluginInfo, first); 421231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QFETCH(QWebPluginInfo, second); 422231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 423231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QWebPluginInfo info; 424231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info.mimeTypes(), QList<MimeType>()); 425231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info = first, first); 426231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info, first); 427231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info.mimeTypes(), first.mimeTypes()); 428231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info = second, second); 429231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info, second); 430231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info.mimeTypes(), second.mimeTypes()); 431231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info = QWebPluginInfo(), QWebPluginInfo()); 432231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(info.mimeTypes(), QList<MimeType>()); 433231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 434231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 4350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQTEST_MAIN(tst_QWebPluginDatabase) 4360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "tst_qwebplugindatabase.moc" 438