10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 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 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <QtTest/QtTest> 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebpage.h> 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwidget.h> 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebview.h> 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebframe.h> 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebelement.h> 278a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#include <util.h> 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch//TESTED_CLASS= 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch//TESTED_FILES= 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass tst_QWebElement : public QObject 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Q_OBJECT 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic: 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tst_QWebElement(); 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual ~tst_QWebElement(); 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic slots: 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void init(); 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void cleanup(); 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate slots: 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void textHtml(); 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void simpleCollection(); 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void attributes(); 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void attributesNS(); 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void listAttributes(); 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void classes(); 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void namespaceURI(); 51cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void iteration(); 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void nonConstIterator(); 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void constIterator(); 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void foreachManipulation(); 55cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void emptyCollection(); 56cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void appendCollection(); 57231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void evaluateJavaScript(); 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void documentElement(); 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void frame(); 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void style(); 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void computedStyle(); 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void appendAndPrepend(); 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void insertBeforeAndAfter(); 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void remove(); 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void clear(); 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void replaceWith(); 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void encloseWith(); 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void encloseContentsWith(); 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void nullSelect(); 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void firstChildNextSibling(); 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void lastChildPreviousSibling(); 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void hasSetFocus(); 73cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void render(); 744576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang void addElementToHead(); 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate: 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebView* m_view; 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebPage* m_page; 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebFrame* m_mainFrame; 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochtst_QWebElement::tst_QWebElement() 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochtst_QWebElement::~tst_QWebElement() 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::init() 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_view = new QWebView(); 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_page = m_view->page(); 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame = m_page->mainFrame(); 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::cleanup() 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete m_view; 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::textHtml() 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<head></head><body><p>test</p></body>"; 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement(); 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.isNull()); 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.toPlainText(), QString("test")); 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.toPlainText(), m_mainFrame->toPlainText()); 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.toInnerXml(), html); 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::simpleCollection() 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body><p>first para</p><p>second para</p></body>"; 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement(); 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 121cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection list = body.findAll("p"); 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(list.count(), 2); 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(list.at(0).toPlainText(), QString("first para")); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(list.at(1).toPlainText(), QString("second para")); 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::attributes() 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml("<body><p>Test"); 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement(); 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.hasAttribute("title")); 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.hasAttributes()); 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.setAttribute("title", "test title"); 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(body.hasAttributes()); 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(body.hasAttribute("title")); 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.attribute("title"), QString("test title")); 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.removeAttribute("title"); 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.hasAttribute("title")); 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.hasAttributes()); 1460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.attribute("does-not-exist", "testvalue"), QString("testvalue")); 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::attributesNS() 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString content = "<html xmlns=\"http://www.w3.org/1999/xhtml\" " 1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "xmlns:svg=\"http://www.w3.org/2000/svg\">" 1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body><svg:svg id=\"foobar\" width=\"400px\" height=\"300px\">" 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</svg:svg></body></html>"; 1560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setContent(content.toUtf8(), "application/xhtml+xml"); 1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement svg = m_mainFrame->findFirstElement("svg"); 1600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!svg.isNull()); 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!svg.hasAttributeNS("http://www.w3.org/2000/svg", "foobar")); 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(svg.attributeNS("http://www.w3.org/2000/svg", "foobar", "defaultblah"), QString("defaultblah")); 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foobar", "true"); 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(svg.hasAttributeNS("http://www.w3.org/2000/svg", "foobar")); 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(svg.attributeNS("http://www.w3.org/2000/svg", "foobar", "defaultblah"), QString("true")); 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid tst_QWebElement::listAttributes() 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QString content = "<html xmlns=\"http://www.w3.org/1999/xhtml\" " 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block "xmlns:svg=\"http://www.w3.org/2000/svg\">" 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block "<body><svg:svg foo=\"\" svg:bar=\"\">" 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block "</svg:svg></body></html>"; 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_mainFrame->setContent(content.toUtf8(), "application/xhtml+xml"); 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QWebElement svg = m_mainFrame->findFirstElement("svg"); 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVERIFY(!svg.isNull()); 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVERIFY(svg.attributeNames().contains("foo")); 182643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVERIFY(svg.attributeNames("http://www.w3.org/2000/svg").contains("bar")); 183643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foobar", "true"); 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVERIFY(svg.attributeNames().contains("foo")); 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QStringList attributes = svg.attributeNames("http://www.w3.org/2000/svg"); 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(attributes.size(), 2); 188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVERIFY(attributes.contains("bar")); 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QVERIFY(attributes.contains("foobar")); 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::classes() 1930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml("<body><p class=\"a b c d a c\">Test"); 1950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement(); 1970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.classes().count(), 0); 1980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement p = m_mainFrame->documentElement().findAll("p").at(0); 2000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QStringList classes = p.classes(); 2010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(classes.count(), 4); 2020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(classes[0], QLatin1String("a")); 2030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(classes[1], QLatin1String("b")); 2040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(classes[2], QLatin1String("c")); 2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(classes[3], QLatin1String("d")); 2060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("a")); 2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("b")); 2080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("c")); 2090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("d")); 2100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("e")); 2110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.addClass("f"); 2130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("f")); 2140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.addClass("a"); 2150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 5); 2160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("a")); 2170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("b")); 2180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("c")); 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("d")); 2200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.toggleClass("a"); 2220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("a")); 2230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("b")); 2240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("c")); 2250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("d")); 2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("f")); 2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 4); 2280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.toggleClass("f"); 2290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("f")); 2300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 3); 2310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.toggleClass("a"); 2320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.toggleClass("f"); 2330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("a")); 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.hasClass("f")); 2350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 5); 2360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("f"); 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("f")); 2390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 4); 2400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("d"); 2410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("d")); 2420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 3); 2430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("not-exist"); 2440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 3); 2450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("c"); 2460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("c")); 2470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 2); 2480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("b"); 2490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("b")); 2500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 1); 2510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("a"); 2520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.hasClass("a")); 2530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 0); 2540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.removeClass("foobar"); 2550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.classes().count(), 0); 2560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::namespaceURI() 2590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString content = "<html xmlns=\"http://www.w3.org/1999/xhtml\" " 2610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "xmlns:svg=\"http://www.w3.org/2000/svg\">" 2620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body><svg:svg id=\"foobar\" width=\"400px\" height=\"300px\">" 2630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</svg:svg></body></html>"; 2640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setContent(content.toUtf8(), "application/xhtml+xml"); 2660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement(); 2670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.namespaceUri(), QLatin1String("http://www.w3.org/1999/xhtml")); 2680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement svg = body.findAll("*#foobar").at(0); 2700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(svg.prefix(), QLatin1String("svg")); 2710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(svg.localName(), QLatin1String("svg")); 2720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(svg.tagName(), QLatin1String("svg:svg")); 2730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(svg.namespaceUri(), QLatin1String("http://www.w3.org/2000/svg")); 2740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 277cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid tst_QWebElement::iteration() 278cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 279cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QString html = "<body><p>first para</p><p>second para</p></body>"; 280cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block m_mainFrame->setHtml(html); 281cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElement body = m_mainFrame->documentElement(); 282cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 283cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection paras = body.findAll("p"); 284cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QList<QWebElement> referenceList = paras.toList(); 285cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 286cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QList<QWebElement> foreachList; 287cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block foreach(QWebElement p, paras) { 288cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block foreachList.append(p); 289cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block } 290cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QVERIFY(foreachList.count() == 2); 291cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(foreachList.count(), referenceList.count()); 292cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(foreachList.at(0), referenceList.at(0)); 293cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(foreachList.at(1), referenceList.at(1)); 294cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 295cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QList<QWebElement> forLoopList; 296cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block for (int i = 0; i < paras.count(); ++i) { 297cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block forLoopList.append(paras.at(i)); 298cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block } 299cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QVERIFY(foreachList.count() == 2); 300cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(foreachList.count(), referenceList.count()); 301cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(foreachList.at(0), referenceList.at(0)); 302cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(foreachList.at(1), referenceList.at(1)); 303cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 304cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block for (int i = 0; i < paras.count(); ++i) { 305cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(paras.at(i), paras[i]); 306cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block } 307cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 308cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(paras.at(0), paras.first()); 309cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(paras.at(1), paras.last()); 310cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 311cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 312643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid tst_QWebElement::nonConstIterator() 313643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QString html = "<body><p>first para</p><p>second para</p></body>"; 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_mainFrame->setHtml(html); 316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QWebElement body = m_mainFrame->documentElement(); 317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QWebElementCollection paras = body.findAll("p"); 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 319643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QWebElementCollection::iterator it = paras.begin(); 320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(*it, paras.at(0)); 321643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ++it; 322643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (*it).encloseWith("<div>"); 323643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(*it, paras.at(1)); 324643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ++it; 325643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(it, paras.end()); 326643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 327643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 328643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid tst_QWebElement::constIterator() 329643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 330643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QString html = "<body><p>first para</p><p>second para</p></body>"; 331643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_mainFrame->setHtml(html); 332643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QWebElement body = m_mainFrame->documentElement(); 333643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const QWebElementCollection paras = body.findAll("p"); 334643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 335643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QWebElementCollection::const_iterator it = paras.begin(); 336643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(*it, paras.at(0)); 337643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ++it; 338643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(*it, paras.at(1)); 339643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ++it; 340643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QCOMPARE(it, paras.end()); 341643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 342643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 3430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::foreachManipulation() 3440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body><p>first para</p><p>second para</p></body>"; 3460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 3470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement(); 3480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch foreach(QWebElement p, body.findAll("p")) { 3500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setInnerXml("<div>foo</div><div>bar</div>"); 3510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 4); 3540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 356cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid tst_QWebElement::emptyCollection() 357cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 358cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection emptyCollection; 359cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(emptyCollection.count(), 0); 360cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 361cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 362cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid tst_QWebElement::appendCollection() 363cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 364cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QString html = "<body><span class='a'>aaa</span><p>first para</p><div>foo</div>" 365cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "<span class='b'>bbb</span><p>second para</p><div>bar</div></body>"; 366cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block m_mainFrame->setHtml(html); 367cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElement body = m_mainFrame->documentElement(); 368cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 369cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection collection = body.findAll("p"); 370cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(collection.count(), 2); 371cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 372cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block collection.append(body.findAll("div")); 373cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(collection.count(), 4); 374cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 375cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block collection += body.findAll("span.a"); 376cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(collection.count(), 5); 377cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 378cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection all = collection + body.findAll("span.b"); 379cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(all.count(), 6); 380cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(collection.count(), 5); 381cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 382cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block all += collection; 383cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(all.count(), 11); 384cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 385cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(collection.count(), 5); 386cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection test; 387cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block test.append(collection); 388cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(test.count(), 5); 389cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block test.append(QWebElementCollection()); 390cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(test.count(), 5); 391cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 392cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 393231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid tst_QWebElement::evaluateJavaScript() 3940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVariant result; 3960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml("<body><p>test"); 3970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement para = m_mainFrame->findFirstElement("p"); 3980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 399231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block result = para.evaluateJavaScript("this.tagName"); 4000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.isValid()); 4010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.type() == QVariant::String); 4020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(result.toString(), QLatin1String("P")); 4030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 404231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block result = para.evaluateJavaScript("this.hasAttributes()"); 4050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.isValid()); 4060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.type() == QVariant::Bool); 4070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!result.toBool()); 4080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 409231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block para.evaluateJavaScript("this.setAttribute('align', 'left');"); 4100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(para.attribute("align"), QLatin1String("left")); 4110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 412231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block result = para.evaluateJavaScript("this.hasAttributes()"); 4130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.isValid()); 4140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.type() == QVariant::Bool); 4150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(result.toBool()); 4160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::documentElement() 4190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml("<body><p>Test"); 4210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement para = m_mainFrame->documentElement().findAll("p").at(0); 4230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(para.parent().parent() == m_mainFrame->documentElement()); 4240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(para.document() == m_mainFrame->documentElement()); 4250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::frame() 4280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml("<body><p>test"); 4300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement doc = m_mainFrame->documentElement(); 4320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(doc.webFrame() == m_mainFrame); 4330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 434e14391e94c850b8bd03680c23b38978db68687a8John Reck m_mainFrame->load(QUrl("data:text/html,<frameset cols=\"25%,75%\"><frame src=\"data:text/html," 435e14391e94c850b8bd03680c23b38978db68687a8John Reck "<p>frame1\">" 436e14391e94c850b8bd03680c23b38978db68687a8John Reck "<frame src=\"data:text/html,<p>frame2\"></frameset>")); 4370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch waitForSignal(m_page, SIGNAL(loadFinished(bool))); 4390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(m_mainFrame->childFrames().count(), 2); 4410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebFrame* firstFrame = m_mainFrame->childFrames().at(0); 4430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebFrame* secondFrame = m_mainFrame->childFrames().at(1); 4440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(firstFrame->toPlainText(), QString("frame1")); 4460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(secondFrame->toPlainText(), QString("frame2")); 4470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement firstPara = firstFrame->documentElement().findAll("p").at(0); 4490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement secondPara = secondFrame->documentElement().findAll("p").at(0); 4500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(firstPara.webFrame() == firstFrame); 4520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(secondPara.webFrame() == secondFrame); 4530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::style() 4560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<head>" 4580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<style type='text/css'>" 4590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "p { color: green !important }" 4600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "#idP { color: red }" 4610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ".classP { color : yellow ! important }" 4620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</style>" 4630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</head>" 4640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body>" 4650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p id='idP' class='classP' style='color: blue;'>some text</p>" 4660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 4670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 4690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement p = m_mainFrame->documentElement().findAll("p").at(0); 471231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); 472231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QVERIFY(p.styleProperty("cursor", QWebElement::InlineStyle).isEmpty()); 4730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setStyleProperty("color", "red"); 4750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setStyleProperty("cursor", "auto"); 4760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 477231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("red")); 478231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("yellow")); 479231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("cursor", QWebElement::InlineStyle), QLatin1String("auto")); 4800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setStyleProperty("color", "green !important"); 482231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("green")); 483231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("green")); 4840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setStyleProperty("color", "blue"); 4862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); 487231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("green")); 4880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 489231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block p.setStyleProperty("color", "blue !important"); 490231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); 491231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("blue")); 4920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html2 = "<head>" 4940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<style type='text/css'>" 4950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "p { color: green }" 4960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "#idP { color: red }" 4970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ".classP { color: yellow }" 4980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</style>" 4990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</head>" 5000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body>" 5010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p id='idP' class='classP' style='color: blue;'>some text</p>" 5020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 5030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html2); 5050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p = m_mainFrame->documentElement().findAll("p").at(0); 5060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 507231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); 508231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("blue")); 5090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html3 = "<head>" 5110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<style type='text/css'>" 5120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "p { color: green !important }" 5130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "#idP { color: red !important}" 5140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ".classP { color: yellow !important}" 5150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</style>" 5160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</head>" 5170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body>" 5180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p id='idP' class='classP' style='color: blue !important;'>some text</p>" 5190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 5200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html3); 5220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p = m_mainFrame->documentElement().findAll("p").at(0); 5230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 524231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); 525231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("blue")); 5260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html5 = "<head>" 5280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<style type='text/css'>" 5290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "p { color: green }" 5300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "#idP { color: red }" 5310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ".classP { color: yellow }" 5320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</style>" 5330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</head>" 5340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body>" 5350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p id='idP' class='classP'>some text</p>" 5360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 5370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html5); 5390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p = m_mainFrame->documentElement().findAll("p").at(0); 5400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 541231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("")); 542231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("red")); 5430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html6 = "<head>" 5450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<link rel='stylesheet' href='qrc:/style.css' type='text/css' />" 5460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<style type='text/css'>" 5470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "p { color: green }" 5480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "#idP { color: red }" 5490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ".classP { color: yellow ! important}" 5500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</style>" 5510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</head>" 5520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body>" 5530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p id='idP' class='classP' style='color: blue;'>some text</p>" 5540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 5550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // in few seconds, the CSS should be completey loaded 5570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html6); 558d0825bca7fe65beaee391d30da42e937db621564Steve Block waitForSignal(m_page, SIGNAL(loadFinished(bool)), 200); 5590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p = m_mainFrame->documentElement().findAll("p").at(0); 561231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue")); 562231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("black")); 5630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html7 = "<head>" 5650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<style type='text/css'>" 5660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "@import url(qrc:/style2.css);" 5670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</style>" 5680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<link rel='stylesheet' href='qrc:/style.css' type='text/css' />" 5690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</head>" 5700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<body>" 5710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p id='idP' style='color: blue;'>some text</p>" 5720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 5730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // in few seconds, the style should be completey loaded 5750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html7); 576d0825bca7fe65beaee391d30da42e937db621564Steve Block waitForSignal(m_page, SIGNAL(loadFinished(bool)), 200); 5770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p = m_mainFrame->documentElement().findAll("p").at(0); 579231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("black")); 5800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html8 = "<body><p>some text</p></body>"; 5820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html8); 5840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p = m_mainFrame->documentElement().findAll("p").at(0); 5850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 586231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("")); 587231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("")); 5880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 5890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::computedStyle() 5910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 5920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body><p>some text</p></body>"; 5930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 5940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement p = m_mainFrame->documentElement().findAll("p").at(0); 596231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("cursor", QWebElement::ComputedStyle), QLatin1String("auto")); 597231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QVERIFY(!p.styleProperty("cursor", QWebElement::ComputedStyle).isEmpty()); 598231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QVERIFY(p.styleProperty("cursor", QWebElement::InlineStyle).isEmpty()); 5990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setStyleProperty("cursor", "text"); 6010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch p.setStyleProperty("color", "red"); 6020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 603231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("cursor", QWebElement::ComputedStyle), QLatin1String("text")); 604231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::ComputedStyle), QLatin1String("rgb(255, 0, 0)")); 605231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("red")); 6060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::appendAndPrepend() 6090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 6110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 6120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "foo" 6130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 6140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 6150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "bar" 6160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 6170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 6180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 6200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 6210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 6230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.appendInside(body.findFirst("p")); 6240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 6250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p").toPlainText(), QString("bar")); 6260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").last().toPlainText(), QString("foo")); 6270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.appendInside(body.findFirst("p").clone()); 6290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 3); 6300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p").toPlainText(), QString("bar")); 6310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").last().toPlainText(), QString("bar")); 6320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.prependInside(body.findAll("p").at(1).clone()); 6340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 4); 6350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p").toPlainText(), QString("foo")); 6360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("p").appendInside("<div>booyakasha</div>"); 6380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p div").count(), 1); 6390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p div").toPlainText(), QString("booyakasha")); 6400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("div").prependInside("<code>yepp</code>"); 6420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p div code").count(), 1); 6430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p div code").toPlainText(), QString("yepp")); 6440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::insertBeforeAndAfter() 6470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 6490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 6500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "foo" 6510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 6520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<div>" 6530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "yeah" 6540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</div>" 6550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 6560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "bar" 6570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 6580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 6590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 6610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 6620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement div = body.findFirst("div"); 6630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 6650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 6660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.prependOutside(body.findAll("p").last().clone()); 6680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 3); 6690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(0).toPlainText(), QString("foo")); 6700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(1).toPlainText(), QString("bar")); 6710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(2).toPlainText(), QString("bar")); 6720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.appendOutside(body.findFirst("p").clone()); 6740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 4); 6750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(0).toPlainText(), QString("foo")); 6760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(1).toPlainText(), QString("bar")); 6770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(2).toPlainText(), QString("foo")); 6780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").at(3).toPlainText(), QString("bar")); 6790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.prependOutside("<span>hey</span>"); 6810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").count(), 1); 6820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.appendOutside("<span>there</span>"); 6840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").count(), 2); 6850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").at(0).toPlainText(), QString("hey")); 6860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").at(1).toPlainText(), QString("there")); 6870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::remove() 6900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 6920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 6930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "foo" 6940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 6950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<div>" 6960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>yeah</p>" 6970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</div>" 6980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 6990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "bar" 7000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 7010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 7020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 7040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 7050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 7070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 3); 7080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement div = body.findFirst("div"); 7100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.takeFromDocument(); 7110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(div.isNull(), false); 7130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 0); 7140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 7150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.appendInside(div); 7170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 7190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 3); 7200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 7210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::clear() 7230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 7240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 7250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 7260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "foo" 7270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 7280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<div>" 7290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>yeah</p>" 7300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</div>" 7310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 7320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "bar" 7330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 7340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 7350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 7370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 7380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 7400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 3); 741cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block body.findFirst("div").removeAllChildren(); 7420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 7430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 7440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 7450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::replaceWith() 7480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 7490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 7500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 7510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "foo" 7520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 7530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<div>" 7540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "yeah" 7550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</div>" 7560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 7570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<span>haba</span>" 7580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 7590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 7600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 7620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 7630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 7650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").count(), 1); 7660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("div").replace(body.findFirst("span").clone()); 7670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 0); 7680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").count(), 2); 7690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 7700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("span").replace("<p><code>wow</code></p>"); 7720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 3); 7730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p code").count(), 1); 7740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p code").toPlainText(), QString("wow")); 7750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 7760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::encloseContentsWith() 7780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 7790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 7800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<div>" 7810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<i>" 7820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "yeah" 7830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</i>" 7840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<i>" 7850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "hello" 7860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</i>" 7870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</div>" 7880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 7890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<span>foo</span>" 7900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<span>bar</span>" 7910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 7920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<u></u>" 7930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<b></b>" 7940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<em>hey</em>" 7950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 7960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 7980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 7990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("p").encloseContentsWith(body.findFirst("b")); 8010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p b span").count(), 2); 8020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("p b span").toPlainText(), QString("foo")); 8030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("u").encloseContentsWith("<i></i>"); 8050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("u i").count(), 1); 8060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("u i").toPlainText(), QString()); 8070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("div").encloseContentsWith("<span></span>"); 8090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div span i").count(), 2); 8100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("div span i").toPlainText(), QString("yeah")); 8110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString snippet = "" 8130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<table>" 8140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tbody>" 8150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tr>" 8160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</tr>" 8190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tr>" 8200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tr>" 8230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</tbody>" 8240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</table>"; 8250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("em").encloseContentsWith(snippet); 8270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("em table tbody tr td").toPlainText(), QString("hey")); 8280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 8290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::encloseWith() 8310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 8320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString html = "<body>" 8330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 8340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "foo" 8350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 8360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<div>" 8370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "yeah" 8380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</div>" 8390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<p>" 8400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<span>bar</span>" 8410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</p>" 8420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<em>hey</em>" 8430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<h1>hello</h1>" 8440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</body>"; 8450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml(html); 8470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->documentElement().findFirst("body"); 8480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("p").encloseWith("<br>"); 8500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("br").count(), 0); 8510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 8530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("div").encloseWith(body.findFirst("span").clone()); 8540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("div").count(), 1); 8550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("span").count(), 2); 8560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("p").count(), 2); 8570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("div").encloseWith("<code></code>"); 8590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("code").count(), 1); 8600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findAll("code div").count(), 1); 8610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("code div").toPlainText(), QString("yeah")); 8620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QString snippet = "" 8640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<table>" 8650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tbody>" 8660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tr>" 8670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</tr>" 8700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tr>" 8710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<td></td>" 8730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<tr>" 8740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</tbody>" 8750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "</table>"; 8760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.findFirst("em").encloseWith(snippet); 8780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(body.findFirst("table tbody tr td em").toPlainText(), QString("hey")); 8790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 8800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::nullSelect() 8820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 8830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_mainFrame->setHtml("<body><p>Test"); 8840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 885cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection collection = m_mainFrame->findAllElements("invalid{syn(tax;;%#$f223e>>"); 8860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(collection.count() == 0); 8870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 8880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::firstChildNextSibling() 8900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 891967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch m_mainFrame->setHtml("<body><!--comment--><p>Test</p><!--another comment--><table>"); 8920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->findFirstElement("body"); 8940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.isNull()); 8950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement p = body.firstChild(); 8960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.isNull()); 8970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.tagName(), QString("P")); 8980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement table = p.nextSibling(); 8990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!table.isNull()); 9000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(table.tagName(), QString("TABLE")); 9010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(table.nextSibling().isNull()); 9020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 9030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid tst_QWebElement::lastChildPreviousSibling() 9050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 906967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch m_mainFrame->setHtml("<body><!--comment--><p>Test</p><!--another comment--><table>"); 9070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = m_mainFrame->findFirstElement("body"); 9090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!body.isNull()); 9100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement table = body.lastChild(); 9110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!table.isNull()); 9120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(table.tagName(), QString("TABLE")); 9130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement p = table.previousSibling(); 9140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(!p.isNull()); 9150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QCOMPARE(p.tagName(), QString("P")); 9160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVERIFY(p.previousSibling().isNull()); 9170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 9180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 919231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid tst_QWebElement::hasSetFocus() 920231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 921231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_mainFrame->setHtml("<html><body>" \ 922231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block "<input type='text' id='input1'/>" \ 923231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block "<br>"\ 924231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block "<input type='text' id='input2'/>" \ 925231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block "</body></html>"); 926231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 927cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection inputs = m_mainFrame->documentElement().findAll("input"); 928231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QWebElement input1 = inputs.at(0); 929231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block input1.setFocus(); 930231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QVERIFY(input1.hasFocus()); 931231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 932231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QWebElement input2 = inputs.at(1); 933231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block input2.setFocus(); 934231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QVERIFY(!input1.hasFocus()); 935231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block QVERIFY(input2.hasFocus()); 936231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 937231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 938cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid tst_QWebElement::render() 939cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 940cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QString html( "<html>" 941cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "<head><style>" 94281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch "body, iframe { margin: 0px; border: none; background: white; }" 943cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</style></head>" 944cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "<body><table width='300px' height='300px' border='1'>" 945cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "<tr>" 946cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "<td>test" 947cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</td>" 948cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "<td><img src='qrc:///image.png'>" 949cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</td>" 950cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</tr>" 951cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</table>" 952cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</body>" 953cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block "</html>" 954cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ); 955cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 956cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebPage page; 957cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); 958cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block page.mainFrame()->setHtml(html); 959cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 960cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block waitForSignal(&page, SIGNAL(loadFinished(bool))); 961cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(loadSpy.count(), 1); 962cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 963cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QSize size = page.mainFrame()->contentsSize(); 964cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block page.setViewportSize(size); 965cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 966cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection imgs = page.mainFrame()->findAllElements("img"); 967cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(imgs.count(), 1); 968cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 969cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QImage resource(":/image.png"); 970cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QRect imageRect(0, 0, resource.width(), resource.height()); 971cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 972cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QImage testImage(resource.width(), resource.height(), QImage::Format_ARGB32); 973cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QPainter painter0(&testImage); 974cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter0.fillRect(imageRect, Qt::white); 975643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // render() uses pixmaps internally, and pixmaps might have bit depths 976643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // other than 32, giving different pixel values due to rounding. 977643ca7872b450ea4efacab6188849e5aac2ba161Steve Block QPixmap pix = QPixmap::fromImage(resource); 978643ca7872b450ea4efacab6188849e5aac2ba161Steve Block painter0.drawPixmap(0, 0, pix); 979cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter0.end(); 980cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 981cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QImage image1(resource.width(), resource.height(), QImage::Format_ARGB32); 982cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QPainter painter1(&image1); 983cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter1.fillRect(imageRect, Qt::white); 984cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block imgs[0].render(&painter1); 985cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter1.end(); 986cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 987cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QVERIFY(image1 == testImage); 988cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 989cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // render image 2nd time to make sure that cached rendering works fine 990cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QImage image2(resource.width(), resource.height(), QImage::Format_ARGB32); 991cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QPainter painter2(&image2); 992cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter2.fillRect(imageRect, Qt::white); 993cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block imgs[0].render(&painter2); 994cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter2.end(); 995cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 996cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QVERIFY(image2 == testImage); 997cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 998cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // compare table rendered through QWebElement::render to whole page table rendering 999cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QRect tableRect(0, 0, 300, 300); 1000cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebElementCollection tables = page.mainFrame()->findAllElements("table"); 1001cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QCOMPARE(tables.count(), 1); 1002cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 1003cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QImage image3(300, 300, QImage::Format_ARGB32); 1004cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QPainter painter3(&image3); 1005cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter3.fillRect(tableRect, Qt::white); 1006cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block tables[0].render(&painter3); 1007cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter3.end(); 1008cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 1009cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QImage image4(300, 300, QImage::Format_ARGB32); 1010cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QPainter painter4(&image4); 1011cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block page.mainFrame()->render(&painter4, tableRect); 1012cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block painter4.end(); 1013cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 1014cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QVERIFY(image3 == image4); 101581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 101681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Chunked render test reuses page rendered in image4 in previous test 101781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch const int chunkHeight = tableRect.height(); 101881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch const int chunkWidth = tableRect.width() / 3; 101981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QImage chunk(chunkWidth, chunkHeight, QImage::Format_ARGB32); 102081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QRect chunkRect(0, 0, chunkWidth, chunkHeight); 102181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch for (int x = 0; x < tableRect.width(); x += chunkWidth) { 102281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QPainter painter(&chunk); 102381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch painter.fillRect(chunkRect, Qt::white); 102481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QRect chunkPaintRect(x, 0, chunkWidth, chunkHeight); 102581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch tables[0].render(&painter, chunkPaintRect); 102681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch painter.end(); 102781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 102881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QVERIFY(chunk == image4.copy(chunkPaintRect)); 102981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 1030cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 1031cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 10324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid tst_QWebElement::addElementToHead() 10334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 10344576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang m_mainFrame->setHtml("<html><head></head><body></body></html>"); 10354576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang QWebElement head = m_mainFrame->findFirstElement("head"); 10364576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang QVERIFY(!head.isNull()); 10374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang QString append = "<script type=\"text/javascript\">var t = 0;</script>"; 10384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang head.appendInside(append); 10394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang QCOMPARE(head.toInnerXml(), append); 10404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 10414576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 10420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochQTEST_MAIN(tst_QWebElement) 10430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "tst_qwebelement.moc" 1044