- Revision
- 207389
- Author
- carlo...@webkit.org
- Date
- 2016-10-16 02:11:18 -0700 (Sun, 16 Oct 2016)
Log Message
[GTK] WebKitWebPage URI not updated after URI is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
https://bugs.webkit.org/show_bug.cgi?id=163389
Reviewed by Michael Catanzaro.
Source/WebKit2:
Update the page URI also when the load is committed.
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(getDocumentLoaderURL):
(didStartProvisionalLoadForFrame):
(didReceiveServerRedirectForProvisionalLoadForFrame):
(didCommitLoadForFrame):
(webkitWebPageCreate):
(getProvisionalURLForFrame): Deleted.
Tools:
Update /webkit2/WebKitWebPage/get-uri test to check that web view and page uri always match even when request is
modified by WebKitWebPage::send-request signal.
* TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:
(testWebPageURI):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (207388 => 207389)
--- trunk/Source/WebKit2/ChangeLog 2016-10-16 08:35:18 UTC (rev 207388)
+++ trunk/Source/WebKit2/ChangeLog 2016-10-16 09:11:18 UTC (rev 207389)
@@ -1,3 +1,20 @@
+2016-10-16 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] WebKitWebPage URI not updated after URI is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
+ https://bugs.webkit.org/show_bug.cgi?id=163389
+
+ Reviewed by Michael Catanzaro.
+
+ Update the page URI also when the load is committed.
+
+ * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
+ (getDocumentLoaderURL):
+ (didStartProvisionalLoadForFrame):
+ (didReceiveServerRedirectForProvisionalLoadForFrame):
+ (didCommitLoadForFrame):
+ (webkitWebPageCreate):
+ (getProvisionalURLForFrame): Deleted.
+
2016-10-15 Simon Fraser <simon.fra...@apple.com>
Sort the project file.
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp (207388 => 207389)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp 2016-10-16 08:35:18 UTC (rev 207388)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp 2016-10-16 09:11:18 UTC (rev 207389)
@@ -129,9 +129,9 @@
webFrameMap().remove(webFrame);
}
-static CString getProvisionalURLForFrame(WebFrame* webFrame)
+static CString getDocumentLoaderURL(DocumentLoader* documentLoader)
{
- DocumentLoader* documentLoader = webFrame->coreFrame()->loader().provisionalDocumentLoader();
+ ASSERT(documentLoader);
if (!documentLoader->unreachableURL().isEmpty())
return documentLoader->unreachableURL().string().utf8();
@@ -158,7 +158,7 @@
if (!WKBundleFrameIsMainFrame(frame))
return;
- webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getProvisionalURLForFrame(toImpl(frame)));
+ webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getDocumentLoaderURL(toImpl(frame)->coreFrame()->loader().provisionalDocumentLoader()));
}
static void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef frame, WKTypeRef* /* userData */, const void *clientInfo)
@@ -166,7 +166,7 @@
if (!WKBundleFrameIsMainFrame(frame))
return;
- webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getProvisionalURLForFrame(toImpl(frame)));
+ webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getDocumentLoaderURL(toImpl(frame)->coreFrame()->loader().provisionalDocumentLoader()));
}
static void didSameDocumentNavigationForFrame(WKBundlePageRef, WKBundleFrameRef frame, WKSameDocumentNavigationType, WKTypeRef* /* userData */, const void *clientInfo)
@@ -177,6 +177,14 @@
webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), toImpl(frame)->coreFrame()->document()->url().string().utf8());
}
+static void didCommitLoadForFrame(WKBundlePageRef, WKBundleFrameRef frame, WKTypeRef* /* userData */, const void* clientInfo)
+{
+ if (!WKBundleFrameIsMainFrame(frame))
+ return;
+
+ webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getDocumentLoaderURL(toImpl(frame)->coreFrame()->loader().documentLoader()));
+}
+
static void didFinishDocumentLoadForFrame(WKBundlePageRef, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
{
if (!WKBundleFrameIsMainFrame(frame))
@@ -485,7 +493,7 @@
didStartProvisionalLoadForFrame,
didReceiveServerRedirectForProvisionalLoadForFrame,
0, // didFailProvisionalLoadWithErrorForFrame
- 0, // didCommitLoadForFrame
+ didCommitLoadForFrame,
didFinishDocumentLoadForFrame,
0, // didFinishLoadForFrame
0, // didFailLoadWithErrorForFrame
Modified: trunk/Tools/ChangeLog (207388 => 207389)
--- trunk/Tools/ChangeLog 2016-10-16 08:35:18 UTC (rev 207388)
+++ trunk/Tools/ChangeLog 2016-10-16 09:11:18 UTC (rev 207389)
@@ -1,5 +1,18 @@
2016-10-16 Carlos Garcia Campos <cgar...@igalia.com>
+ [GTK] WebKitWebPage URI not updated after URI is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
+ https://bugs.webkit.org/show_bug.cgi?id=163389
+
+ Reviewed by Michael Catanzaro.
+
+ Update /webkit2/WebKitWebPage/get-uri test to check that web view and page uri always match even when request is
+ modified by WebKitWebPage::send-request signal.
+
+ * TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:
+ (testWebPageURI):
+
+2016-10-16 Carlos Garcia Campos <cgar...@igalia.com>
+
Document request not updated after willSendRequest is called for a redirect
https://bugs.webkit.org/show_bug.cgi?id=163436
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp (207388 => 207389)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp 2016-10-16 08:35:18 UTC (rev 207388)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp 2016-10-16 09:11:18 UTC (rev 207389)
@@ -405,6 +405,20 @@
g_dbus_connection_signal_unsubscribe(bus->connection(), m_uriChangedSignalID);
}
+ void loadURI(const char* uri)
+ {
+ m_webPageURIs.clear();
+ m_webViewURIs.clear();
+ WebViewTest::loadURI(uri);
+ }
+
+ void checkViewAndPageURIsMatch() const
+ {
+ g_assert_cmpint(m_webPageURIs.size(), ==, m_webViewURIs.size());
+ for (size_t i = 0; i < m_webPageURIs.size(); ++i)
+ ASSERT_CMP_CSTRING(m_webPageURIs[i], ==, m_webViewURIs[i]);
+ }
+
unsigned m_uriChangedSignalID;
Vector<CString> m_webPageURIs;
Vector<CString> m_webViewURIs;
@@ -412,17 +426,37 @@
static void testWebPageURI(WebPageURITest* test, gconstpointer)
{
+ // Normal load.
+ test->loadURI(kServer->getURIForPath("/normal1").data());
+ test->waitUntilLoadFinished();
+ test->checkViewAndPageURIsMatch();
+ g_assert_cmpint(test->m_webPageURIs.size(), ==, 1);
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/normal1"));
+
+ // Redirect
test->loadURI(kServer->getURIForPath("/redirect").data());
test->waitUntilLoadFinished();
-
- g_assert_cmpint(test->m_webPageURIs.size(), ==, test->m_webViewURIs.size());
- for (size_t i = 0; i < test->m_webPageURIs.size(); ++i)
- ASSERT_CMP_CSTRING(test->m_webPageURIs[i], ==, test->m_webViewURIs[i]);
-
+ test->checkViewAndPageURIsMatch();
g_assert_cmpint(test->m_webPageURIs.size(), ==, 2);
ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/redirect"));
ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/normal"));
+ // Normal load, URL changed by WebKitPage::send-request.
+ test->loadURI(kServer->getURIForPath("/normal-change-request").data());
+ test->waitUntilLoadFinished();
+ test->checkViewAndPageURIsMatch();
+ g_assert_cmpint(test->m_webPageURIs.size(), ==, 2);
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/normal-change-request"));
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/request-changed"));
+
+ // Redirect, URL changed by WebKitPage::send-request.
+ test->loadURI(kServer->getURIForPath("/redirect-to-change-request").data());
+ test->waitUntilLoadFinished();
+ test->checkViewAndPageURIsMatch();
+ g_assert_cmpint(test->m_webPageURIs.size(), ==, 3);
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/redirect-to-change-request"));
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/normal-change-request"));
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[2], ==, kServer->getURIForPath("/request-changed-on-redirect"));
}
static void testURIRequestHTTPHeaders(WebViewTest* test, gconstpointer)