Changeset 107043 in webkit


Ignore:
Timestamp:
Feb 7, 2012 11:21:31 PM (12 years ago)
Author:
Martin Robinson
Message:

[GTK] [WK2] Add WebKitResponsePolicyDecision
https://bugs.webkit.org/show_bug.cgi?id=76789

Reviewed by Philippe Normand.

Add a WebKitResponsePolicyDecision GObject, use it for response
policy decisions and add a test.

  • GNUmakefile.am: Added new source files to the list.
  • UIProcess/API/gtk/WebKitPolicyClient.cpp:

(decidePolicyForResponseCallback): Added this callback which creates the request
and fires the signal.
(attachPolicyClientToPage): Added new callback to the C API policy client.

  • UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp: Added.
  • UIProcess/API/gtk/WebKitResponsePolicyDecision.h: Added.
  • UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Added new docs.
  • UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Ditto.
  • UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp:

(testResponsePolicy): Added this test for response policy decisions.
(serverCallback): Added a SoupServer to test policy response policy decisions.
(beforeAll): Ditto.
(afterAll): Ditto.

Location:
trunk/Source/WebKit2
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r107028 r107043  
     12012-02-07  Martin Robinson  <mrobinson@igalia.com>
     2
     3        [GTK] [WK2] Add WebKitResponsePolicyDecision
     4        https://bugs.webkit.org/show_bug.cgi?id=76789
     5
     6        Reviewed by Philippe Normand.
     7
     8        Add a WebKitResponsePolicyDecision GObject, use it for response
     9        policy decisions and add a test.
     10
     11        * GNUmakefile.am: Added new source files to the list.
     12        * UIProcess/API/gtk/WebKitPolicyClient.cpp:
     13        (decidePolicyForResponseCallback): Added this callback which creates the request
     14        and fires the signal.
     15        (attachPolicyClientToPage): Added new callback to the C API policy client.
     16        * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp: Added.
     17        * UIProcess/API/gtk/WebKitResponsePolicyDecision.h: Added.
     18        * UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h: Added.
     19        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Added new docs.
     20        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Ditto.
     21        * UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp:
     22        (testResponsePolicy): Added this test for response policy decisions.
     23        (serverCallback): Added a SoupServer to test policy response policy decisions.
     24        (beforeAll): Ditto.
     25        (afterAll): Ditto.
     26
    1272012-02-07  Timothy Hatcher  <timothy@apple.com>
    228
  • trunk/Source/WebKit2/GNUmakefile.am

    r106961 r107043  
    9191        $(WebKit2)/UIProcess/API/gtk/WebKitNavigationPolicyDecision.h \
    9292        $(WebKit2)/UIProcess/API/gtk/WebKitPolicyDecision.h \
     93        $(WebKit2)/UIProcess/API/gtk/WebKitResponsePolicyDecision.h \
    9394        $(WebKit2)/UIProcess/API/gtk/WebKitSettings.h \
    9495        $(WebKit2)/UIProcess/API/gtk/WebKitURIRequest.h \
     
    550551        Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.h \
    551552        Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h \
     553        Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp \
     554        Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.h \
     555        Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h \
    552556        Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp \
    553557        Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h \
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp

    r106142 r107043  
    2424#include "WebKitPolicyDecision.h"
    2525#include "WebKitPrivate.h"
     26#include "WebKitResponsePolicyDecisionPrivate.h"
    2627#include "WebKitWebViewBasePrivate.h"
    2728#include "WebKitWebViewPrivate.h"
     
    5859}
    5960
     61static void decidePolicyForResponseCallback(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
     62{
     63    GRefPtr<WebKitResponsePolicyDecision> decision =
     64        adoptGRef(webkitResponsePolicyDecisionCreate(request, response, listener));
     65    webkitWebViewMakePolicyDecision(WEBKIT_WEB_VIEW(clientInfo),
     66                                    WEBKIT_POLICY_DECISION_TYPE_RESPONSE,
     67                                    WEBKIT_POLICY_DECISION(decision.get()));
     68}
     69
    6070void attachPolicyClientToPage(WebKitWebView* webView)
    6171{
     
    6575        decidePolicyForNavigationActionCallback,
    6676        decidePolicyForNewWindowActionCallback,
    67         0, // decidePolicyForResponseCallback,
     77        decidePolicyForResponseCallback,
    6878        0, // unableToImplementPolicy
    6979    };
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml

    r106142 r107043  
    2424    <xi:include href="xml/WebKitPolicyDecision.xml"/>
    2525    <xi:include href="xml/WebKitNavigationPolicyDecision.xml"/>
     26    <xi:include href="xml/WebKitResponsePolicyDecision.xml"/>
    2627    <xi:include href="xml/WebKitError.xml"/>
    2728  </chapter>
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt

    r106961 r107043  
    369369
    370370<SECTION>
     371<FILE>WebKitResponsePolicyDecision</FILE>
     372WebKitResponsePolicyDecision
     373webkit_response_policy_decision_get_request
     374webkit_response_policy_decision_get_response
     375
     376<SUBSECTION Standard>
     377WebKitResponsePolicyDecisionClass
     378WEBKIT_TYPE_RESPONSE_POLICY_DECISION
     379WEBKIT_RESPONSE_POLICY_DECISION
     380WEBKIT_IS_RESPONSE_POLICY_DECISION
     381WEBKIT_RESPONSE_POLICY_DECISION_CLASS
     382WEBKIT_IS_RESPONSE_POLICY_DECISION_CLASS
     383WEBKIT_RESPONSE_POLICY_DECISION_GET_CLASS
     384
     385<SUBSECTION Private>
     386WebKitResponsePolicyDecisionPrivate
     387webkit_response_policy_decision_get_type
     388</SECTION>
     389
     390<SECTION>
    371391<FILE>WebKitError</FILE>
    372392WEBKIT_NETWORK_ERROR
  • trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp

    r106142 r107043  
    2121
    2222#include "LoadTrackingTest.h"
     23#include "WebKitTestServer.h"
    2324#include <wtf/gobject/GRefPtr.h>
    2425#include <wtf/text/CString.h>
     26
     27static WebKitTestServer* kServer;
    2528
    2629class PolicyClientTest: public LoadTrackingTest {
     
    141144    test->waitUntilLoadFinished();
    142145    g_assert_cmpint(test->m_loadEvents.size(), ==, 0);
     146}
     147
     148static void testResponsePolicy(PolicyClientTest* test, gconstpointer)
     149{
     150    test->m_policyDecisionTypeFilter = WEBKIT_POLICY_DECISION_TYPE_RESPONSE;
     151
     152    test->m_policyDecisionResponse = PolicyClientTest::Use;
     153    test->loadURI(kServer->getURIForPath("/").data());
     154    test->waitUntilLoadFinished();
     155    g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
     156    g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
     157    g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
     158    g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
     159
     160    test->m_respondToPolicyDecisionAsynchronously = true;
     161    test->loadURI(kServer->getURIForPath("/").data());
     162    test->waitUntilLoadFinished();
     163    g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
     164    g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
     165    g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
     166    g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
     167
     168    test->m_respondToPolicyDecisionAsynchronously = false;
     169    test->m_policyDecisionResponse = PolicyClientTest::Ignore;
     170    test->loadURI(kServer->getURIForPath("/").data());
     171    test->waitUntilLoadFinished();
     172
     173    g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
     174    g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
     175    g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::ProvisionalLoadFailed);
     176    g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
    143177}
    144178
     
    192226}
    193227
     228static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
     229{
     230    if (message->method != SOUP_METHOD_GET) {
     231        soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
     232        return;
     233    }
     234
     235    soup_message_set_status(message, SOUP_STATUS_OK);
     236
     237    static const char* responseString = "<html><body>Testing!</body></html>";
     238    soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString));
     239    soup_message_body_complete(message->response_body);
     240}
     241
    194242void beforeAll()
    195243{
     244    kServer = new WebKitTestServer();
     245    kServer->run(serverCallback);
     246
    196247    PolicyClientTest::add("WebKitPolicyClient", "navigation-policy", testNavigationPolicy);
     248    PolicyClientTest::add("WebKitPolicyClient", "response-policy", testResponsePolicy);
    197249    PolicyClientTest::add("WebKitPolicyClient", "new-window-policy", testNewWindowPolicy);
    198250}
     
    200252void afterAll()
    201253{
    202 }
     254    delete kServer;
     255}
Note: See TracChangeset for help on using the changeset viewer.