void WebHitTestResultTest::shouldCopyWebHitTestResult()
{
    QPoint pos(5, 5);
    QUrl pageUrl(QStringLiteral("http://www.kde.org"));

    QVariantMap map;
    QString alternateText = QStringLiteral("FOO");
    map.insert(QStringLiteral("alternateText"), alternateText);
    bool contentEditable = true;
    map.insert(QStringLiteral("contentEditable"), contentEditable);
    bool contentSelected = true;
    map.insert(QStringLiteral("contentSelected"), contentSelected);
    QString linkTitle = QStringLiteral("GGGG");
    map.insert(QStringLiteral("linkTitle"), linkTitle);
    QUrl imageUrl(QStringLiteral("https://www.foo.net"));
    map.insert(QStringLiteral("imageUrl"), imageUrl);
    QUrl linkUrl(QStringLiteral("https://www.linux.org"));
    map.insert(QStringLiteral("linkUrl"), linkUrl);
    QUrl mediaUrl(QStringLiteral("https://www.media.org"));
    map.insert(QStringLiteral("mediaUrl"), mediaUrl);
    bool mediaPaused = true;
    map.insert(QStringLiteral("mediaPaused"), mediaPaused);
    bool mediaMuted = true;
    map.insert(QStringLiteral("mediaMuted"), mediaMuted);
    QString tagName = QStringLiteral("HHHHHH");
    map.insert(QStringLiteral("tagName"), tagName);
    QRect boundingRect(5, 7, 9, 11);
    QVariantList lstRect;
    lstRect << boundingRect.left() << boundingRect.top() << boundingRect.width() << boundingRect.height();
    map.insert(QStringLiteral("boundingRect"), lstRect);

    const WebEngineViewer::WebHitTestResult result1(pos, pageUrl, map);
    WebEngineViewer::WebHitTestResult result = result1;

    QCOMPARE(result.alternateText(), alternateText);
    QCOMPARE(result.boundingRect(), boundingRect);
    QCOMPARE(result.imageUrl(), imageUrl);
    QCOMPARE(result.isContentEditable(), contentEditable);
    QCOMPARE(result.isContentSelected(), contentSelected);
    QCOMPARE(result.isNull(), false);
    QCOMPARE(result.linkTitle(), linkTitle);
    QCOMPARE(result.linkUrl(), linkUrl);
    QCOMPARE(result.mediaUrl(), mediaUrl);
    QCOMPARE(result.mediaPaused(), mediaPaused);
    QCOMPARE(result.mediaMuted(), mediaMuted);
    QCOMPARE(result.pos(), pos);
    QCOMPARE(result.tagName(), tagName);
    QCOMPARE(result.pageUrl(), pageUrl);

}
Exemplo n.º 2
0
QList<ZealSearchResult> ZealDocsetsRegistry::getRelatedLinks(QString name, QString path)
{
    QList<ZealSearchResult> results;
    // Get the url without the #anchor.
    QUrl mainUrl(path);
    mainUrl.setFragment(NULL);
    QString pageUrl(mainUrl.toString());
    docsetEntry entry = docs[name];

    // Prepare the query to look up all pages with the same url.
    QString query;
    if (entry.type == DASH) {
        query = QString("SELECT name, type, path FROM searchIndex WHERE path LIKE \"%1%%\"").arg(pageUrl);
    } else if (entry.type == ZDASH) {
        query = QString("SELECT ztoken.ztokenname, ztokentype.ztypename, zfilepath.zpath, ztokenmetainformation.zanchor "
                        "FROM ztoken "
                        "JOIN ztokenmetainformation ON ztoken.zmetainformation = ztokenmetainformation.z_pk "
                        "JOIN zfilepath ON ztokenmetainformation.zfile = zfilepath.z_pk "
                        "JOIN ztokentype ON ztoken.ztokentype = ztokentype.z_pk "
                        "WHERE zfilepath.zpath = \"%1\"").arg(pageUrl);
    } else if (entry.type == ZEAL) {
        query = QString("SELECT name type, path FROM things WHERE path LIKE \"%1%%\"").arg(pageUrl);
    }

    QSqlQuery result = entry.db.exec(query);
    while (result.next()) {
        QString sectionName = result.value(0).toString();
        QString sectionPath = result.value(2).toString();
        QString parentName;
        if (entry.type == ZDASH) {
            sectionPath.append("#");
            sectionPath.append(result.value(3).toString());
        }

        normalizeName(sectionName, parentName, "");

        results.append(ZealSearchResult(sectionName, "", sectionPath, name, QString()));
    }

    return results;
}
Exemplo n.º 3
0
QList<HtmlForm> HtmlForm::listFromHtml(QString html, QString url)
{
	QRegExp formRgx("<form ([^>]*)>(.*)</form>");
	QRegExp inputRgx("<input ([^>]*)>|<textarea([^>]*)>([^<]*)</textarea>");
	inputRgx.setMinimal(true);
	inputRgx.setCaseSensitivity(Qt::CaseInsensitive);
	QRegExp parameterRgx("([a-z]+)=(\\w+)|([a-z]+)=\"(.*)\"|([a-z]+)='(.*)'");
	parameterRgx.setMinimal(true);
	parameterRgx.setCaseSensitivity(Qt::CaseInsensitive);
	formRgx.setMinimal(true);
	formRgx.setCaseSensitivity(Qt::CaseInsensitive);
	int pos = 0;
	QList<HtmlForm> formList;
	while ((pos = formRgx.indexIn(html, pos)) != -1)
	{
		// Capture each form
		HtmlForm form;
		int pos0 = 0;
		while((pos0 = parameterRgx.indexIn(formRgx.cap(1), pos0)) != -1)
		{
			QPair<QString, QString> pair = pairFromList(parameterRgx.capturedTexts());
			if(!pair.first.compare("method", Qt::CaseInsensitive)) form.method = pair.second;
			if(!pair.first.compare("action", Qt::CaseInsensitive))
			{
				QUrl pageUrl(url);
				QUrl tgtUrl(pair.second);
				if(tgtUrl.isRelative())
				{
					if(!pair.second.startsWith('/'))
						tgtUrl.setPath(pageUrl.path().replace(QRegExp("[^/]+$"), "") + tgtUrl.path()); // For href="mycrappyfile.php"
					tgtUrl.setScheme(pageUrl.scheme());
					tgtUrl.setHost(pageUrl.host());
				}
				form.targetUrl=tgtUrl.toString();
			}
			pos0 +=parameterRgx.matchedLength();
		}
		pos0 = 0;
		while((pos0 = inputRgx.indexIn(formRgx.cap(2), pos0)) != -1)
		{
			int pos1 = 0;
			QString f00d = inputRgx.cap(1).isEmpty() ? inputRgx.cap(2) : inputRgx.cap(1);
			QHash<QString, QString> inpHash;
			while((pos1 = parameterRgx.indexIn(f00d, pos1)) != -1)
			{
				QPair<QString, QString> pair = pairFromList(parameterRgx.capturedTexts());
				inpHash[pair.first.toLower()] = pair.second;
				pos1 += parameterRgx.matchedLength();
			}
			form.fields[inpHash["name"]] = formRgx.cap(1).isEmpty() ? inputRgx.cap(3) : inpHash["value"];
			pos0 +=inputRgx.matchedLength();
		}
	/*	qDebug("FORM BEGIN");
		qDebug() << form.method;
		qDebug() << form.targetUrl;
		qDebug() << form.fields;
		qDebug("FORM END"); */
		formList << form;
		pos += formRgx.matchedLength();
	}
	return formList;
}