From f5f5a86c7e9bb2196d345d9cb4684b6529d81184 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 3 Feb 2014 16:27:01 +0100 Subject: Implement QWebEnginePage::requestedUrl Change-Id: I6accd8fd40ad72041770439aa6a7aa59ba904418 Reviewed-by: Pierre Rossi --- src/core/web_contents_adapter.cpp | 11 +++++++++ src/core/web_contents_adapter.h | 1 + src/webenginewidgets/api/qwebenginepage.cpp | 6 +++++ .../qwebengineframe/tst_qwebengineframe.cpp | 28 ++-------------------- 4 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index d67edbe7a..af141b5dd 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -301,6 +301,17 @@ QUrl WebContentsAdapter::activeUrl() const return toQt(d->webContents->GetVisibleURL()); } +QUrl WebContentsAdapter::requestedUrl() const +{ + Q_D(const WebContentsAdapter); + if (content::NavigationEntry* entry = d->webContents->GetController().GetVisibleEntry()) { + if (!entry->GetOriginalRequestURL().is_empty()) + return toQt(entry->GetOriginalRequestURL()); + return toQt(entry->GetURL()); + } + return QUrl(); +} + QString WebContentsAdapter::pageTitle() const { Q_D(const WebContentsAdapter); diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 2079c89b1..93027c19c 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -69,6 +69,7 @@ public: void load(const QUrl&); void setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl, const QUrl &unreachableUrl); QUrl activeUrl() const; + QUrl requestedUrl() const; QString pageTitle() const; void navigateToIndex(int); diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 11cb7dbc5..0f414f313 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -548,6 +548,12 @@ QUrl QWebEnginePage::url() const return d->adapter->activeUrl(); } +QUrl QWebEnginePage::requestedUrl() const +{ + Q_D(const QWebEnginePage); + return d->adapter->requestedUrl(); +} + void QWebEnginePage::render(QPainter *p, const QRegion &clip) { Q_D(const QWebEnginePage); diff --git a/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp b/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp index 6702d5d9f..92b91967e 100644 --- a/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp +++ b/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp @@ -295,8 +295,8 @@ protected: void tst_QWebEngineFrame::requestedUrl() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); +#if !defined(QWEBENGINEPAGE_SETNETWORKACCESSMANAGER) + QSKIP("QWEBENGINEPAGE_SETNETWORKACCESSMANAGER"); #else QWebEnginePage page; @@ -339,9 +339,6 @@ void tst_QWebEngineFrame::requestedUrl() void tst_QWebEngineFrame::requestedUrlAfterSetAndLoadFailures() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); -#else QWebEnginePage page; QSignalSpy spy(&page, SIGNAL(loadFinished(bool))); @@ -361,7 +358,6 @@ void tst_QWebEngineFrame::requestedUrlAfterSetAndLoadFailures() QCOMPARE(page.url(), first); QCOMPARE(page.requestedUrl(), second); QVERIFY(!spy.at(1).first().toBool()); -#endif } void tst_QWebEngineFrame::javaScriptWindowObjectCleared_data() @@ -1240,9 +1236,6 @@ void tst_QWebEngineFrame::setUrlWithFragment_data() // Based on bug report https://bugs.webengine.org/show_bug.cgi?id=32723 void tst_QWebEngineFrame::setUrlWithFragment() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); -#else QFETCH(QUrl, previousUrl); QWebEnginePage page; @@ -1264,14 +1257,10 @@ void tst_QWebEngineFrame::setUrlWithFragment() QVERIFY(!page.toPlainText().isEmpty()); QCOMPARE(page.requestedUrl(), url); QCOMPARE(page.url(), url); -#endif } void tst_QWebEngineFrame::setUrlToEmpty() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); -#else int expectedLoadFinishedCount = 0; const QUrl aboutBlank("about:blank"); const QUrl url("qrc:/test2.html"); @@ -1320,14 +1309,10 @@ void tst_QWebEngineFrame::setUrlToEmpty() QCOMPARE(page.url(), aboutBlank); QCOMPARE(page.requestedUrl(), QUrl()); QCOMPARE(baseUrlSync(&page), aboutBlank); -#endif } void tst_QWebEngineFrame::setUrlToInvalid() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); -#else QWebEnginePage page; const QUrl invalidUrl("http:/example.com"); @@ -1352,14 +1337,10 @@ void tst_QWebEngineFrame::setUrlToInvalid() QCOMPARE(page.url(), aboutBlank); QCOMPARE(page.requestedUrl().toEncoded(), anotherInvalidUrl.toEncoded()); QCOMPARE(baseUrlSync(&page), aboutBlank); -#endif } void tst_QWebEngineFrame::setUrlHistory() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); -#else const QUrl aboutBlank("about:blank"); QUrl url; int expectedLoadFinishedCount = 0; @@ -1417,7 +1398,6 @@ void tst_QWebEngineFrame::setUrlHistory() QCOMPARE(m_page->url(), url); QCOMPARE(m_page->requestedUrl(), url); QCOMPARE(m_page->history()->count(), 2); -#endif } void tst_QWebEngineFrame::setUrlUsingStateObject() @@ -1523,9 +1503,6 @@ void tst_QWebEngineFrame::setUrlThenLoads_data() void tst_QWebEngineFrame::setUrlThenLoads() { -#if !defined(QWEBENGINEPAGE_REQUESTEDURL) - QSKIP("QWEBENGINEPAGE_REQUESTEDURL"); -#else QFETCH(QUrl, url); QFETCH(QUrl, baseUrl); QSignalSpy urlChangedSpy(m_page, SIGNAL(urlChanged(QUrl))); @@ -1574,7 +1551,6 @@ void tst_QWebEngineFrame::setUrlThenLoads() QCOMPARE(m_page->url(), urlToLoad2); QCOMPARE(m_page->requestedUrl(), urlToLoad2); QCOMPARE(baseUrlSync(m_page), extractBaseUrl(urlToLoad2)); -#endif } void tst_QWebEngineFrame::loadFinishedAfterNotFoundError() -- cgit v1.2.3