diff options
Diffstat (limited to 'tests/auto/core')
-rw-r--r-- | tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp | 63 | ||||
-rw-r--r-- | tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp | 28 |
2 files changed, 59 insertions, 32 deletions
diff --git a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp index 4ff33dbac..2c41aa9b1 100644 --- a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp +++ b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp @@ -45,17 +45,21 @@ public Q_SLOTS: void init(); void cleanup(); -private Q_SLOTS: void initTestCase(); void cleanupTestCase(); - void cookieSignals(); + +private Q_SLOTS: + // MEMO should be the first test of a testcase + // as it checks storage manipulation without navigation void setAndDeleteCookie(); + + void cookieSignals(); void batchCookieTasks(); void basicFilter(); void html5featureFilter(); private: - QWebEngineProfile m_profile; + QWebEngineProfile *m_profile; }; tst_QWebEngineCookieStore::tst_QWebEngineCookieStore() @@ -72,22 +76,24 @@ void tst_QWebEngineCookieStore::init() void tst_QWebEngineCookieStore::cleanup() { - m_profile.cookieStore()->deleteAllCookies(); + m_profile->cookieStore()->deleteAllCookies(); } void tst_QWebEngineCookieStore::initTestCase() { + m_profile = new QWebEngineProfile; } void tst_QWebEngineCookieStore::cleanupTestCase() { + delete m_profile; } void tst_QWebEngineCookieStore::cookieSignals() { - QWebEnginePage page(&m_profile); + QWebEnginePage page(m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEngineCookieStore *client = m_profile->cookieStore(); QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); @@ -95,7 +101,7 @@ void tst_QWebEngineCookieStore::cookieSignals() page.load(QUrl("qrc:///resources/index.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); QVariant success = loadSpy.takeFirst().takeFirst(); QVERIFY(success.toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 2); @@ -115,8 +121,8 @@ void tst_QWebEngineCookieStore::cookieSignals() void tst_QWebEngineCookieStore::setAndDeleteCookie() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); @@ -127,16 +133,23 @@ void tst_QWebEngineCookieStore::setAndDeleteCookie() QNetworkCookie cookie3(QNetworkCookie::parseCookies(QByteArrayLiteral("SessionCookie=QtWebEngineCookieTest; Path=///resources")).first()); QNetworkCookie expiredCookie3(QNetworkCookie::parseCookies(QByteArrayLiteral("SessionCookie=delete; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=///resources")).first()); + // force to init storage as it's done lazily upon first navigation + client->loadAllCookies(); + // /* FIXME remove 'blank' navigation once loadAllCookies api is fixed + page.load(QUrl("about:blank")); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); + // */ + // check if pending cookies are set and removed client->setCookie(cookie1); - QTRY_COMPARE(cookieAddedSpy.count(),1); client->setCookie(cookie2); - QTRY_COMPARE(cookieAddedSpy.count(),2); + QTRY_COMPARE(cookieAddedSpy.count(), 2); client->deleteCookie(cookie1); + QTRY_COMPARE(cookieRemovedSpy.count(), 1); page.load(QUrl("qrc:///resources/content.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 2, 30000); QVariant success = loadSpy.takeFirst().takeFirst(); QVERIFY(success.toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 2); @@ -155,8 +168,8 @@ void tst_QWebEngineCookieStore::setAndDeleteCookie() void tst_QWebEngineCookieStore::batchCookieTasks() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); @@ -165,14 +178,20 @@ void tst_QWebEngineCookieStore::batchCookieTasks() QNetworkCookie cookie1(QNetworkCookie::parseCookies(QByteArrayLiteral("khaos=I9GX8CWI; Domain=.example.com; Path=/docs")).first()); QNetworkCookie cookie2(QNetworkCookie::parseCookies(QByteArrayLiteral("Test%20Cookie=foobar; domain=example.com; Path=/")).first()); + // force to init storage as it's done lazily upon first navigation + client->loadAllCookies(); + // /* FIXME remove 'blank' navigation once loadAllCookies api is fixed + page.load(QUrl("about:blank")); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); + // */ + client->setCookie(cookie1); - QTRY_COMPARE(cookieAddedSpy.count(), 1); client->setCookie(cookie2); QTRY_COMPARE(cookieAddedSpy.count(), 2); page.load(QUrl("qrc:///resources/index.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 2, 30000); QVariant success = loadSpy.takeFirst().takeFirst(); QVERIFY(success.toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 4); @@ -190,8 +209,8 @@ void tst_QWebEngineCookieStore::batchCookieTasks() void tst_QWebEngineCookieStore::basicFilter() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QAtomicInt accessTested = 0; client->setCookieFilter([&](const QWebEngineCookieStore::FilterRequest &){ ++accessTested; return true;}); @@ -202,7 +221,7 @@ void tst_QWebEngineCookieStore::basicFilter() page.load(QUrl("qrc:///resources/index.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); QVERIFY(loadSpy.takeFirst().takeFirst().toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 2); QTRY_COMPARE(accessTested.loadAcquire(), 2); // FIXME? @@ -222,8 +241,8 @@ void tst_QWebEngineCookieStore::basicFilter() void tst_QWebEngineCookieStore::html5featureFilter() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QAtomicInt accessTested = 0; client->setCookieFilter([&](const QWebEngineCookieStore::FilterRequest &){ ++accessTested; return false;}); @@ -232,7 +251,7 @@ void tst_QWebEngineCookieStore::html5featureFilter() page.load(QUrl("qrc:///resources/content.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); QVERIFY(loadSpy.takeFirst().takeFirst().toBool()); QCOMPARE(accessTested.loadAcquire(), 0); // FIXME? QTest::ignoreMessage(QtCriticalMsg, QRegularExpression(".*Uncaught SecurityError.*sessionStorage.*")); diff --git a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp index c0762aa14..5effb2abf 100644 --- a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp +++ b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp @@ -114,7 +114,7 @@ class TestRequestInterceptor : public QWebEngineUrlRequestInterceptor public: QList<RequestInfo> requestInfos; bool shouldIntercept; - QMap<QUrl, QUrl> requestInitiatorUrls; + QMap<QUrl, QSet<QUrl>> requestInitiatorUrls; void interceptRequest(QWebEngineUrlRequestInfo &info) override { @@ -129,7 +129,7 @@ public: // Set referrer header info.setHttpHeader(kHttpHeaderRefererName, kHttpHeaderReferrerValue); - requestInitiatorUrls.insert(info.requestUrl(), info.initiator()); + requestInitiatorUrls[info.requestUrl()].insert(info.initiator()); requestInfos.append(info); } @@ -290,18 +290,21 @@ void tst_QWebEngineUrlRequestInterceptor::requestedUrl() page.setUrl(QUrl("qrc:///resources/__placeholder__")); QVERIFY(spy.wait()); QTRY_COMPARE(spy.count(), 1); + QVERIFY(interceptor.requestInfos.count() >= 1); QCOMPARE(interceptor.requestInfos.at(0).requestUrl, QUrl("qrc:///resources/content.html")); QCOMPARE(page.requestedUrl(), QUrl("qrc:///resources/__placeholder__")); QCOMPARE(page.url(), QUrl("qrc:///resources/content.html")); page.setUrl(QUrl("qrc:/non-existent.html")); QTRY_COMPARE(spy.count(), 2); + QVERIFY(interceptor.requestInfos.count() >= 3); QCOMPARE(interceptor.requestInfos.at(2).requestUrl, QUrl("qrc:/non-existent.html")); QCOMPARE(page.requestedUrl(), QUrl("qrc:///resources/__placeholder__")); QCOMPARE(page.url(), QUrl("qrc:///resources/content.html")); page.setUrl(QUrl("http://abcdef.abcdef")); QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 3, 15000); + QVERIFY(interceptor.requestInfos.count() >= 4); QCOMPARE(interceptor.requestInfos.at(3).requestUrl, QUrl("http://abcdef.abcdef/")); QCOMPARE(page.requestedUrl(), QUrl("qrc:///resources/__placeholder__")); QCOMPARE(page.url(), QUrl("qrc:///resources/content.html")); @@ -359,6 +362,7 @@ void tst_QWebEngineUrlRequestInterceptor::firstPartyUrl() page.setUrl(QUrl("qrc:///resources/firstparty.html")); QVERIFY(spy.wait()); + QVERIFY(interceptor.requestInfos.count() >= 2); QCOMPARE(interceptor.requestInfos.at(0).requestUrl, QUrl("qrc:///resources/firstparty.html")); QCOMPARE(interceptor.requestInfos.at(1).requestUrl, QUrl("qrc:///resources/content.html")); QCOMPARE(interceptor.requestInfos.at(0).firstPartyUrl, QUrl("qrc:///resources/firstparty.html")); @@ -393,16 +397,19 @@ void tst_QWebEngineUrlRequestInterceptor::firstPartyUrlNestedIframes() page.setUrl(requestUrl); QTRY_COMPARE(loadSpy.count(), 1); + QVERIFY(interceptor.requestInfos.count() >= 1); RequestInfo info = interceptor.requestInfos.at(0); QCOMPARE(info.requestUrl, requestUrl); QCOMPARE(info.firstPartyUrl, requestUrl); QCOMPARE(info.resourceType, QWebEngineUrlRequestInfo::ResourceTypeMainFrame); + QVERIFY(interceptor.requestInfos.count() >= 2); info = interceptor.requestInfos.at(1); QCOMPARE(info.requestUrl, QUrl(adjustedUrl + "iframe2.html")); QCOMPARE(info.firstPartyUrl, requestUrl); QCOMPARE(info.resourceType, QWebEngineUrlRequestInfo::ResourceTypeSubFrame); + QVERIFY(interceptor.requestInfos.count() >= 3); info = interceptor.requestInfos.at(2); QCOMPARE(info.requestUrl, QUrl(adjustedUrl + "iframe3.html")); QCOMPARE(info.firstPartyUrl, requestUrl); @@ -456,6 +463,7 @@ void tst_QWebEngineUrlRequestInterceptor::requestInterceptorByResourceType() QTRY_COMPARE(interceptor.getUrlRequestForType(static_cast<QWebEngineUrlRequestInfo::ResourceType>(resourceType)).count(), 1); QList<RequestInfo> infos = interceptor.getUrlRequestForType(static_cast<QWebEngineUrlRequestInfo::ResourceType>(resourceType)); + QVERIFY(infos.count() >= 1); QCOMPARE(infos.at(0).requestUrl, requestUrl); QCOMPARE(infos.at(0).firstPartyUrl, firstPartyUrl); QCOMPARE(infos.at(0).resourceType, resourceType); @@ -577,49 +585,49 @@ void tst_QWebEngineUrlRequestInterceptor::initiator() QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeSubFrame)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeSubFrame); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // Stylesheet QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeStylesheet)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeStylesheet); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // Script QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeScript)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeScript); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // Image QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeImage)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeImage); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // FontResource QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeFontResource)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeFontResource); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // Media QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeMedia)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeMedia); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // Favicon QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeFavicon)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeFavicon); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); // XMLHttpRequest QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeXhr)); infos = interceptor.getUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeXhr); foreach (auto info, infos) - QCOMPARE(info.initiator, interceptor.requestInitiatorUrls[info.requestUrl]); + QVERIFY(interceptor.requestInitiatorUrls[info.requestUrl].contains(info.initiator)); } QTEST_MAIN(tst_QWebEngineUrlRequestInterceptor) |