Title: [207389] trunk
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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to