Changeset 207389 in webkit


Ignore:
Timestamp:
Oct 16, 2016 2:11:18 AM (8 years ago)
Author:
Carlos Garcia Campos
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):

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r207379 r207389  
     12016-10-16  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] WebKitWebPage URI not updated after URI is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
     4        https://bugs.webkit.org/show_bug.cgi?id=163389
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Update the page URI also when the load is committed.
     9
     10        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
     11        (getDocumentLoaderURL):
     12        (didStartProvisionalLoadForFrame):
     13        (didReceiveServerRedirectForProvisionalLoadForFrame):
     14        (didCommitLoadForFrame):
     15        (webkitWebPageCreate):
     16        (getProvisionalURLForFrame): Deleted.
     17
    1182016-10-15  Simon Fraser  <simon.fraser@apple.com>
    219
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp

    r197563 r207389  
    130130}
    131131
    132 static CString getProvisionalURLForFrame(WebFrame* webFrame)
    133 {
    134     DocumentLoader* documentLoader = webFrame->coreFrame()->loader().provisionalDocumentLoader();
     132static CString getDocumentLoaderURL(DocumentLoader* documentLoader)
     133{
     134    ASSERT(documentLoader);
    135135    if (!documentLoader->unreachableURL().isEmpty())
    136136        return documentLoader->unreachableURL().string().utf8();
     
    159159        return;
    160160
    161     webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getProvisionalURLForFrame(toImpl(frame)));
     161    webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getDocumentLoaderURL(toImpl(frame)->coreFrame()->loader().provisionalDocumentLoader()));
    162162}
    163163
     
    167167        return;
    168168
    169     webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getProvisionalURLForFrame(toImpl(frame)));
     169    webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getDocumentLoaderURL(toImpl(frame)->coreFrame()->loader().provisionalDocumentLoader()));
    170170}
    171171
     
    176176
    177177    webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), toImpl(frame)->coreFrame()->document()->url().string().utf8());
     178}
     179
     180static void didCommitLoadForFrame(WKBundlePageRef, WKBundleFrameRef frame, WKTypeRef* /* userData */, const void* clientInfo)
     181{
     182    if (!WKBundleFrameIsMainFrame(frame))
     183        return;
     184
     185    webkitWebPageSetURI(WEBKIT_WEB_PAGE(clientInfo), getDocumentLoaderURL(toImpl(frame)->coreFrame()->loader().documentLoader()));
    178186}
    179187
     
    486494        didReceiveServerRedirectForProvisionalLoadForFrame,
    487495        0, // didFailProvisionalLoadWithErrorForFrame
    488         0, // didCommitLoadForFrame
     496        didCommitLoadForFrame,
    489497        didFinishDocumentLoadForFrame,
    490498        0, // didFinishLoadForFrame
  • trunk/Tools/ChangeLog

    r207388 r207389  
     12016-10-16  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] WebKitWebPage URI not updated after URI is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
     4        https://bugs.webkit.org/show_bug.cgi?id=163389
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Update /webkit2/WebKitWebPage/get-uri test to check that web view and page uri always match even when request is
     9        modified by WebKitWebPage::send-request signal.
     10
     11        * TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:
     12        (testWebPageURI):
     13
    1142016-10-16  Carlos Garcia Campos  <cgarcia@igalia.com>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp

    r207388 r207389  
    406406    }
    407407
     408    void loadURI(const char* uri)
     409    {
     410        m_webPageURIs.clear();
     411        m_webViewURIs.clear();
     412        WebViewTest::loadURI(uri);
     413    }
     414
     415    void checkViewAndPageURIsMatch() const
     416    {
     417        g_assert_cmpint(m_webPageURIs.size(), ==, m_webViewURIs.size());
     418        for (size_t i = 0; i < m_webPageURIs.size(); ++i)
     419            ASSERT_CMP_CSTRING(m_webPageURIs[i], ==, m_webViewURIs[i]);
     420    }
     421
    408422    unsigned m_uriChangedSignalID;
    409423    Vector<CString> m_webPageURIs;
     
    413427static void testWebPageURI(WebPageURITest* test, gconstpointer)
    414428{
     429    // Normal load.
     430    test->loadURI(kServer->getURIForPath("/normal1").data());
     431    test->waitUntilLoadFinished();
     432    test->checkViewAndPageURIsMatch();
     433    g_assert_cmpint(test->m_webPageURIs.size(), ==, 1);
     434    ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/normal1"));
     435
     436    // Redirect
    415437    test->loadURI(kServer->getURIForPath("/redirect").data());
    416438    test->waitUntilLoadFinished();
    417 
    418     g_assert_cmpint(test->m_webPageURIs.size(), ==, test->m_webViewURIs.size());
    419     for (size_t i = 0; i < test->m_webPageURIs.size(); ++i)
    420         ASSERT_CMP_CSTRING(test->m_webPageURIs[i], ==, test->m_webViewURIs[i]);
    421 
     439    test->checkViewAndPageURIsMatch();
    422440    g_assert_cmpint(test->m_webPageURIs.size(), ==, 2);
    423441    ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/redirect"));
    424442    ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/normal"));
    425443
     444    // Normal load, URL changed by WebKitPage::send-request.
     445    test->loadURI(kServer->getURIForPath("/normal-change-request").data());
     446    test->waitUntilLoadFinished();
     447    test->checkViewAndPageURIsMatch();
     448    g_assert_cmpint(test->m_webPageURIs.size(), ==, 2);
     449    ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/normal-change-request"));
     450    ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/request-changed"));
     451
     452    // Redirect, URL changed by WebKitPage::send-request.
     453    test->loadURI(kServer->getURIForPath("/redirect-to-change-request").data());
     454    test->waitUntilLoadFinished();
     455    test->checkViewAndPageURIsMatch();
     456    g_assert_cmpint(test->m_webPageURIs.size(), ==, 3);
     457    ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/redirect-to-change-request"));
     458    ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/normal-change-request"));
     459    ASSERT_CMP_CSTRING(test->m_webPageURIs[2], ==, kServer->getURIForPath("/request-changed-on-redirect"));
    426460}
    427461
Note: See TracChangeset for help on using the changeset viewer.