⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 176563 in webkit


Ignore:
Timestamp:
Nov 28, 2014, 6:29:26 AM (12 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Use custom JavaScript instead of DBus to implement WebProcess tests
https://bugs.webkit.org/show_bug.cgi?id=138834

Reviewed by Sergio Villar Senin.

It makes everyting simpler and the tests run faster too, since we
don't need to spawn the private bus and wait until the DBus name
is registered. The web extension registers a new JavaSCript class
with a status method to run the tests, similar to the DBus
method. In the UI process side, tests use webkit_web_view_run_java_script()
instead of sending a DBus message.

  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp:

(WebKitDOMNodeFilterTest::create):
(WebKitDOMNodeFilterTest::testTreeWalker):
(WebKitDOMNodeFilterTest::testNodeIterator):
(WebKitDOMNodeFilterTest::webPageFromArgs): Deleted.
(WebKitDOMNodeFilterTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp:

(WebKitDOMNodeTest::create):
(WebKitDOMNodeTest::testHierarchyNavigation):
(WebKitDOMNodeTest::testInsertion):
(WebKitDOMNodeTest::testTagNames):
(WebKitDOMNodeTest::webPageFromArgs): Deleted.
(WebKitDOMNodeTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp:

(WebKitDOMXPathNSResolverTest::create):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverNative):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverCustom):
(WebKitDOMXPathNSResolverTest::webPageFromArgs): Deleted.
(WebKitDOMXPathNSResolverTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp:

(WebKitFrameTest::create):
(WebKitFrameTest::testMainFrame):
(WebKitFrameTest::testURI):
(WebKitFrameTest::testJavaScriptContext):
(WebKitFrameTest::webPageFromArgs): Deleted.
(WebKitFrameTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp:

(testWebKitDOMNodeHierarchyNavigation):
(testWebKitDOMNodeInsertion):
(testWebKitDOMNodeTagNames):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp:

(runTest):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp:

(testWebKitDOMXPathNSResolverNative):
(testWebKitDOMXPathNSResolverCustom):
(beforeAll):
(afterAll):
(runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp:

(webkitFrameTestRun):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:

(testsMap):
(WebProcessTest::add):
(WebProcessTest::create):
(runTest):
(windowObjectClearedCallback):
(webkit_web_extension_initialize):
(methodCallCallback): Deleted.
(webkit_web_extension_initialize_with_user_data): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h:
  • TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp: Removed.
  • TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.h: Removed.
  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:

(WebViewTest::runWebProcessTest):

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
Location:
trunk/Tools
Files:
2 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r176562 r176563  
     12014-11-28  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Use custom JavaScript instead of DBus to implement WebProcess tests
     4        https://bugs.webkit.org/show_bug.cgi?id=138834
     5
     6        Reviewed by Sergio Villar Senin.
     7
     8        It makes everyting simpler and the tests run faster too, since we
     9        don't need to spawn the private bus and wait until the DBus name
     10        is registered. The web extension registers a new JavaSCript class
     11        with a status method to run the tests, similar to the DBus
     12        method. In the UI process side, tests use webkit_web_view_run_java_script()
     13        instead of sending a DBus message.
     14
     15        * TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
     16        * TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp:
     17        (WebKitDOMNodeFilterTest::create):
     18        (WebKitDOMNodeFilterTest::testTreeWalker):
     19        (WebKitDOMNodeFilterTest::testNodeIterator):
     20        (WebKitDOMNodeFilterTest::webPageFromArgs): Deleted.
     21        (WebKitDOMNodeFilterTest::runTest): Deleted.
     22        * TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp:
     23        (WebKitDOMNodeTest::create):
     24        (WebKitDOMNodeTest::testHierarchyNavigation):
     25        (WebKitDOMNodeTest::testInsertion):
     26        (WebKitDOMNodeTest::testTagNames):
     27        (WebKitDOMNodeTest::webPageFromArgs): Deleted.
     28        (WebKitDOMNodeTest::runTest): Deleted.
     29        * TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp:
     30        (WebKitDOMXPathNSResolverTest::create):
     31        (WebKitDOMXPathNSResolverTest::testXPathNSResolverNative):
     32        (WebKitDOMXPathNSResolverTest::testXPathNSResolverCustom):
     33        (WebKitDOMXPathNSResolverTest::webPageFromArgs): Deleted.
     34        (WebKitDOMXPathNSResolverTest::runTest): Deleted.
     35        * TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp:
     36        (WebKitFrameTest::create):
     37        (WebKitFrameTest::testMainFrame):
     38        (WebKitFrameTest::testURI):
     39        (WebKitFrameTest::testJavaScriptContext):
     40        (WebKitFrameTest::webPageFromArgs): Deleted.
     41        (WebKitFrameTest::runTest): Deleted.
     42        * TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp:
     43        (testWebKitDOMNodeHierarchyNavigation):
     44        (testWebKitDOMNodeInsertion):
     45        (testWebKitDOMNodeTagNames):
     46        (beforeAll):
     47        (afterAll):
     48        * TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp:
     49        (runTest):
     50        (beforeAll):
     51        (afterAll):
     52        * TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp:
     53        (testWebKitDOMXPathNSResolverNative):
     54        (testWebKitDOMXPathNSResolverCustom):
     55        (beforeAll):
     56        (afterAll):
     57        (runTest): Deleted.
     58        * TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp:
     59        (webkitFrameTestRun):
     60        (beforeAll):
     61        (afterAll):
     62        * TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:
     63        (testsMap):
     64        (WebProcessTest::add):
     65        (WebProcessTest::create):
     66        (runTest):
     67        (windowObjectClearedCallback):
     68        (webkit_web_extension_initialize):
     69        (methodCallCallback): Deleted.
     70        (webkit_web_extension_initialize_with_user_data): Deleted.
     71        * TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h:
     72        * TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp: Removed.
     73        * TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.h: Removed.
     74        * TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:
     75        (WebViewTest::runWebProcessTest):
     76        * TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
     77
    1782014-11-28  Csaba Osztrogonác  <ossy@webkit.org>
    279
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt

    r174310 r176563  
    3333    ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebKitTestBus.cpp
    3434    ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebKitTestServer.cpp
    35     ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp
    3635    ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.cpp
    3736    ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp

    r170422 r176563  
    6060class WebKitDOMNodeFilterTest : public WebProcessTest {
    6161public:
    62     static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitDOMNodeFilterTest()); }
     62    static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitDOMNodeFilterTest()); }
    6363
    6464private:
    65     guint64 webPageFromArgs(GVariant* args)
     65    bool testTreeWalker(WebKitWebPage* page)
    6666    {
    67         GVariantIter iter;
    68         g_variant_iter_init(&iter, args);
    69 
    70         const char* key;
    71         GVariant* value;
    72         while (g_variant_iter_loop(&iter, "{&sv}", &key, &value)) {
    73             if (!strcmp(key, "pageID") && g_variant_classify(value) == G_VARIANT_CLASS_UINT64)
    74                 return g_variant_get_uint64(value);
    75         }
    76 
    77         g_assert_not_reached();
    78         return 0;
    79     }
    80 
    81     bool testTreeWalker(WebKitWebExtension* extension, GVariant* args)
    82     {
    83         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    84         g_assert(WEBKIT_IS_WEB_PAGE(page));
    8567        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    8668        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    132114    }
    133115
    134     bool testNodeIterator(WebKitWebExtension* extension, GVariant* args)
     116    bool testNodeIterator(WebKitWebPage* page)
    135117    {
    136         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    137         g_assert(WEBKIT_IS_WEB_PAGE(page));
    138118        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    139119        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    188168    }
    189169
    190     virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)
     170    bool runTest(const char* testName, WebKitWebPage* page) override
    191171    {
    192172        if (!strcmp(testName, "tree-walker"))
    193             return testTreeWalker(extension, args);
     173            return testTreeWalker(page);
    194174        if (!strcmp(testName, "node-iterator"))
    195             return testNodeIterator(extension, args);
     175            return testNodeIterator(page);
    196176
    197177        g_assert_not_reached();
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp

    r162599 r176563  
    2727class WebKitDOMNodeTest : public WebProcessTest {
    2828public:
    29     static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitDOMNodeTest()); }
     29    static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebKitDOMNodeTest>(new WebKitDOMNodeTest()); }
    3030
    3131private:
    32     guint64 webPageFromArgs(GVariant* args)
     32    bool testHierarchyNavigation(WebKitWebPage* page)
    3333    {
    34         GVariantIter iter;
    35         g_variant_iter_init(&iter, args);
    36 
    37         const char* key;
    38         GVariant* value;
    39         while (g_variant_iter_loop(&iter, "{&sv}", &key, &value)) {
    40             if (!strcmp(key, "pageID") && g_variant_classify(value) == G_VARIANT_CLASS_UINT64)
    41                 return g_variant_get_uint64(value);
    42         }
    43 
    44         g_assert_not_reached();
    45         return 0;
    46     }
    47 
    48     bool testHierarchyNavigation(WebKitWebExtension* extension, GVariant* args)
    49     {
    50         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    51         g_assert(WEBKIT_IS_WEB_PAGE(page));
    5234        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    5335        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    9678    }
    9779
    98     bool testInsertion(WebKitWebExtension* extension, GVariant* args)
     80    bool testInsertion(WebKitWebPage* page)
    9981    {
    100         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    101         g_assert(WEBKIT_IS_WEB_PAGE(page));
    10282        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    10383        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    171151    }
    172152
    173     bool testTagNames(WebKitWebExtension* extension, GVariant* args)
     153    bool testTagNames(WebKitWebPage* page)
    174154    {
    175155        static const char* expectedTagNames[] = { "HTML", "HEAD", "BODY", "VIDEO", "SOURCE", "VIDEO", "SOURCE", "INPUT" };
    176156
    177         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    178         g_assert(WEBKIT_IS_WEB_PAGE(page));
    179157        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    180158        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    193171    }
    194172
    195     virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)
     173    bool runTest(const char* testName, WebKitWebPage* page) override
    196174    {
    197175        if (!strcmp(testName, "hierarchy-navigation"))
    198             return testHierarchyNavigation(extension, args);
     176            return testHierarchyNavigation(page);
    199177        if (!strcmp(testName, "insertion"))
    200             return testInsertion(extension, args);
     178            return testInsertion(page);
    201179        if (!strcmp(testName, "tag-names"))
    202             return testTagNames(extension, args);
     180            return testTagNames(page);
    203181
    204182        g_assert_not_reached();
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp

    r170700 r176563  
    5858class WebKitDOMXPathNSResolverTest : public WebProcessTest {
    5959public:
    60     static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitDOMXPathNSResolverTest()); }
     60    static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitDOMXPathNSResolverTest()); }
    6161
    6262private:
    63     guint64 webPageFromArgs(GVariant* args)
    64     {
    65         GVariantIter iter;
    66         g_variant_iter_init(&iter, args);
    67 
    68         const char* key;
    69         GVariant* value;
    70         while (g_variant_iter_loop(&iter, "{&sv}", &key, &value)) {
    71             if (!strcmp(key, "pageID") && g_variant_classify(value) == G_VARIANT_CLASS_UINT64)
    72                 return g_variant_get_uint64(value);
    73         }
    74 
    75         g_assert_not_reached();
    76         return 0;
    77     }
    78 
    7963    void evaluateFooChildTextAndCheckResult(WebKitDOMDocument* document, WebKitDOMXPathNSResolver* resolver)
    8064    {
     
    9276    }
    9377
    94     bool testXPathNSResolverNative(WebKitWebExtension* extension, GVariant* args)
     78    bool testXPathNSResolverNative(WebKitWebPage* page)
    9579    {
    96         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    97         g_assert(WEBKIT_IS_WEB_PAGE(page));
    9880        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    9981        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    10688    }
    10789
    108     bool testXPathNSResolverCustom(WebKitWebExtension* extension, GVariant* args)
     90    bool testXPathNSResolverCustom(WebKitWebPage* page)
    10991    {
    110         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    111         g_assert(WEBKIT_IS_WEB_PAGE(page));
    11292        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
    11393        g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
     
    11999    }
    120100
    121     virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)
     101    bool runTest(const char* testName, WebKitWebPage* page) override
    122102    {
    123103        if (!strcmp(testName, "native"))
    124             return testXPathNSResolverNative(extension, args);
     104            return testXPathNSResolverNative(page);
    125105        if (!strcmp(testName, "custom"))
    126             return testXPathNSResolverCustom(extension, args);
     106            return testXPathNSResolverCustom(page);
    127107
    128108        g_assert_not_reached();
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp

    r161366 r176563  
    2626class WebKitFrameTest : public WebProcessTest {
    2727public:
    28     static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitFrameTest()); }
     28    static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitFrameTest()); }
    2929
    3030private:
    31     guint64 webPageFromArgs(GVariant* args)
     31    bool testMainFrame(WebKitWebPage* page)
    3232    {
    33         GVariantIter iter;
    34         g_variant_iter_init(&iter, args);
    35 
    36         const char* key;
    37         GVariant* value;
    38         while (g_variant_iter_loop(&iter, "{&sv}", &key, &value)) {
    39             if (!strcmp(key, "pageID") && g_variant_classify(value) == G_VARIANT_CLASS_UINT64)
    40                 return g_variant_get_uint64(value);
    41         }
    42 
    43         g_assert_not_reached();
    44         return 0;
    45     }
    46 
    47     bool testMainFrame(WebKitWebExtension* extension, GVariant* args)
    48     {
    49         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    50         g_assert(WEBKIT_IS_WEB_PAGE(page));
    51 
    5233        WebKitFrame* frame = webkit_web_page_get_main_frame(page);
    5334        g_assert(WEBKIT_IS_FRAME(frame));
     
    5738    }
    5839
    59     bool testURI(WebKitWebExtension* extension, GVariant* args)
     40    bool testURI(WebKitWebPage* page)
    6041    {
    61         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    62         g_assert(WEBKIT_IS_WEB_PAGE(page));
    63 
    6442        WebKitFrame* frame = webkit_web_page_get_main_frame(page);
    6543        g_assert(WEBKIT_IS_FRAME(frame));
     
    6947    }
    7048
    71     bool testJavaScriptContext(WebKitWebExtension* extension, GVariant* args)
     49    bool testJavaScriptContext(WebKitWebPage* page)
    7250    {
    73         WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
    74         g_assert(WEBKIT_IS_WEB_PAGE(page));
    75 
    7651        WebKitFrame* frame = webkit_web_page_get_main_frame(page);
    7752        g_assert(WEBKIT_IS_FRAME(frame));
     
    8156    }
    8257
    83     virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)
     58    bool runTest(const char* testName, WebKitWebPage* page) override
    8459    {
    8560        if (!strcmp(testName, "main-frame"))
    86             return testMainFrame(extension, args);
     61            return testMainFrame(page);
    8762        if (!strcmp(testName, "uri"))
    88             return testURI(extension, args);
     63            return testURI(page);
    8964        if (!strcmp(testName, "javascript-context"))
    90             return testJavaScriptContext(extension, args);
     65            return testJavaScriptContext(page);
    9166
    9267        g_assert_not_reached();
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp

    r176256 r176563  
    2020#include "config.h"
    2121
    22 #include "WebProcessTestRunner.h"
    2322#include "WebViewTest.h"
    2423#include <gtk/gtk.h>
    2524#include <webkit2/webkit2.h>
    26 
    27 static WebProcessTestRunner* testRunner;
    2825
    2926static void testWebKitDOMNodeHierarchyNavigation(WebViewTest* test, gconstpointer)
     
    3330    test->waitUntilLoadFinished();
    3431
    35     GVariantBuilder builder;
    36     g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
    37     g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(test->m_webView)));
    38     g_assert(testRunner->runTest("WebKitDOMNode", "hierarchy-navigation", Test::s_webExtensionID, g_variant_builder_end(&builder)));
     32    g_assert(test->runWebProcessTest("WebKitDOMNode", "hierarchy-navigation"));
    3933}
    4034
     
    4539    test->waitUntilLoadFinished();
    4640
    47     GVariantBuilder builder;
    48     g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
    49     g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(test->m_webView)));
    50     g_assert(testRunner->runTest("WebKitDOMNode", "insertion", Test::s_webExtensionID, g_variant_builder_end(&builder)));
     41    g_assert(test->runWebProcessTest("WebKitDOMNode", "insertion"));
    5142}
    5243
     
    6657    test->waitUntilLoadFinished();
    6758
    68     GVariantBuilder builder;
    69     g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
    70     g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(test->m_webView)));
    71     g_assert(testRunner->runTest("WebKitDOMNode", "tag-names", Test::s_webExtensionID, g_variant_builder_end(&builder)));
     59    g_assert(test->runWebProcessTest("WebKitDOMNode", "tag-names"));
    7260}
    7361
    7462void beforeAll()
    7563{
    76     testRunner = new WebProcessTestRunner();
    77 
    7864    WebViewTest::add("WebKitDOMNode", "hierarchy-navigation", testWebKitDOMNodeHierarchyNavigation);
    7965    WebViewTest::add("WebKitDOMNode", "insertion", testWebKitDOMNodeInsertion);
     
    8369void afterAll()
    8470{
    85     delete testRunner;
    8671}
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp

    r176256 r176563  
    2020#include "config.h"
    2121
    22 #include "WebProcessTestRunner.h"
    2322#include "WebViewTest.h"
    2423#include <gtk/gtk.h>
    2524#include <webkit2/webkit2.h>
    26 
    27 static WebProcessTestRunner* testRunner;
    2825
    2926static const char* testHTML = "<html id='root'><head><title>DOMNodeTreeWalker</title></head>"
     
    3532    test->waitUntilLoadFinished();
    3633
    37     GVariantBuilder builder;
    38     g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
    39     g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(test->m_webView)));
    40     g_assert(testRunner->runTest("WebKitDOMNodeFilter", name, Test::s_webExtensionID, g_variant_builder_end(&builder)));
     34    g_assert(test->runWebProcessTest("WebKitDOMNodeFilter", name));
    4135}
    4236
     
    5347void beforeAll()
    5448{
    55     testRunner = new WebProcessTestRunner();
    56 
    5749    WebViewTest::add("WebKitDOMNodeFilter", "tree-walker", testWebKitDOMNodeFilterTreeWalker);
    5850    WebViewTest::add("WebKitDOMNodeFilter", "node-iterator", testWebKitDOMNodeFilterNodeIterator);
     
    6153void afterAll()
    6254{
    63     delete testRunner;
    6455}
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp

    r176256 r176563  
    2020#include "config.h"
    2121
    22 #include "WebProcessTestRunner.h"
    2322#include "WebViewTest.h"
    2423#include <gtk/gtk.h>
    2524#include <webkit2/webkit2.h>
    26 
    27 static WebProcessTestRunner* testRunner;
    28 
    29 static void runTest(WebViewTest* test, const char* name)
    30 {
    31     GVariantBuilder builder;
    32     g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
    33     g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(test->m_webView)));
    34     g_assert(testRunner->runTest("WebKitDOMXPathNSResolver", name, Test::s_webExtensionID, g_variant_builder_end(&builder)));
    35 }
    3625
    3726static void testWebKitDOMXPathNSResolverNative(WebViewTest* test, gconstpointer)
     
    4130    test->loadBytes(bytes.get(), "text/xml", nullptr, nullptr);
    4231    test->waitUntilLoadFinished();
    43     runTest(test, "native");
     32    g_assert(test->runWebProcessTest("WebKitDOMXPathNSResolver", "native"));
    4433}
    4534
     
    5039    test->loadBytes(bytes.get(), "text/xml", nullptr, nullptr);
    5140    test->waitUntilLoadFinished();
    52     runTest(test, "custom");
     41    g_assert(test->runWebProcessTest("WebKitDOMXPathNSResolver", "custom"));
    5342}
    5443
    5544void beforeAll()
    5645{
    57     testRunner = new WebProcessTestRunner();
    58 
    5946    WebViewTest::add("WebKitDOMXPathNSResolver", "native", testWebKitDOMXPathNSResolverNative);
    6047    WebViewTest::add("WebKitDOMXPathNSResolver", "custom", testWebKitDOMXPathNSResolverCustom);
     
    6350void afterAll()
    6451{
    65     delete testRunner;
    6652}
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp

    r176256 r176563  
    2020#include "config.h"
    2121
    22 #include "WebProcessTestRunner.h"
    2322#include "WebViewTest.h"
    2423#include <gtk/gtk.h>
    2524#include <webkit2/webkit2.h>
    26 
    27 static WebProcessTestRunner* testRunner;
    2825
    2926static void webkitFrameTestRun(WebViewTest* test, const char* testName)
     
    3330    test->waitUntilLoadFinished();
    3431
    35     GVariantBuilder builder;
    36     g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
    37     g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(test->m_webView)));
    38     g_assert(testRunner->runTest("WebKitFrame", testName, Test::s_webExtensionID, g_variant_builder_end(&builder)));
     32    g_assert(test->runWebProcessTest("WebKitFrame", testName));
    3933}
    4034
     
    5650void beforeAll()
    5751{
    58     testRunner = new WebProcessTestRunner();
    59 
    6052    WebViewTest::add("WebKitFrame", "main-frame", testWebKitFrameMainFrame);
    6153    WebViewTest::add("WebKitFrame", "uri", testWebKitFrameURI);
     
    6557void afterAll()
    6658{
    67     delete testRunner;
    6859}
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp

    r176256 r176563  
    2121#include "WebProcessTest.h"
    2222
     23#include <JavaScriptCore/JSRetainPtr.h>
    2324#include <gio/gio.h>
     25#include <wtf/NeverDestroyed.h>
    2426#include <wtf/gobject/GUniquePtr.h>
    2527
    26 typedef HashMap<String, std::function<PassOwnPtr<WebProcessTest> ()>> TestsMap;
     28typedef HashMap<String, std::function<std::unique_ptr<WebProcessTest> ()>> TestsMap;
    2729static TestsMap& testsMap()
    2830{
    29     DEPRECATED_DEFINE_STATIC_LOCAL(TestsMap, s_testsMap, ());
     31    static NeverDestroyed<TestsMap> s_testsMap;
    3032    return s_testsMap;
    3133}
    3234
    33 void WebProcessTest::add(const String& testName, std::function<PassOwnPtr<WebProcessTest> ()> closure)
     35void WebProcessTest::add(const String& testName, std::function<std::unique_ptr<WebProcessTest> ()> closure)
    3436{
    35     testsMap().add(testName, std::forward<std::function<PassOwnPtr<WebProcessTest> ()>>(closure));
     37    testsMap().add(testName, WTF::move(closure));
    3638}
    3739
    38 PassOwnPtr<WebProcessTest> WebProcessTest::create(const String& testName)
     40std::unique_ptr<WebProcessTest> WebProcessTest::create(const String& testName)
    3941{
    4042    g_assert(testsMap().contains(testName));
     
    4244}
    4345
    44 static const char introspectionXML[] =
    45     "<node>"
    46     " <interface name='org.webkit.gtk.WebProcessTest'>"
    47     "  <method name='RunTest'>"
    48     "   <arg type='s' name='path' direction='in'/>"
    49     "   <arg type='a{sv}' name='args' direction='in'/>"
    50     "   <arg type='b' name='result' direction='out'/>"
    51     "  </method>"
    52     " </interface>"
    53     "</node>";
     46static JSValueRef runTest(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     47{
     48    JSRetainPtr<JSStringRef> stringValue(Adopt, JSValueToStringCopy(context, arguments[0], nullptr));
     49    g_assert(stringValue);
     50    size_t testPathLength = JSStringGetMaximumUTF8CStringSize(stringValue.get());
     51    GUniquePtr<char> testPath(static_cast<char*>(g_malloc(testPathLength)));
     52    JSStringGetUTF8CString(stringValue.get(), testPath.get(), testPathLength);
    5453
    55 static void methodCallCallback(GDBusConnection* connection, const char* sender, const char* objectPath, const char* interfaceName, const char* methodName, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer userData)
    56 {
    57     if (g_strcmp0(interfaceName, "org.webkit.gtk.WebProcessTest"))
    58         return;
     54    WebKitWebPage* webPage = WEBKIT_WEB_PAGE(JSObjectGetPrivate(thisObject));
     55    g_assert(WEBKIT_IS_WEB_PAGE(webPage));
    5956
    60     if (!g_strcmp0(methodName, "RunTest")) {
    61         const char* testPath;
    62         GVariant* args;
    63         g_variant_get(parameters, "(&s@a{sv})", &testPath, &args);
    64         OwnPtr<WebProcessTest> test = WebProcessTest::create(String::fromUTF8(testPath));
    65         bool result = test->runTest(g_strrstr(testPath, "/") + 1, WEBKIT_WEB_EXTENSION(userData), args);
    66         g_variant_unref(args);
    67 
    68         g_dbus_method_invocation_return_value(invocation, g_variant_new("(b)", result));
    69     } else
    70         g_assert_not_reached();
     57    std::unique_ptr<WebProcessTest> test = WebProcessTest::create(String::fromUTF8(testPath.get()));
     58    return JSValueMakeBoolean(context, test->runTest(g_strrstr(testPath.get(), "/") + 1, webPage));
    7159}
    7260
    73 static const GDBusInterfaceVTable interfaceVirtualTable = {
    74     methodCallCallback, 0, 0, { 0, }
     61static const JSStaticFunction webProcessTestRunnerStaticFunctions[] =
     62{
     63    { "runTest", runTest, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     64    { nullptr, nullptr, 0 }
    7565};
    7666
    77 static void busAcquiredCallback(GDBusConnection* connection, const char* name, gpointer userData)
     67static void webProcessTestRunnerFinalize(JSObjectRef object)
    7868{
    79     static GDBusNodeInfo* introspectionData = 0;
    80     if (!introspectionData)
    81         introspectionData = g_dbus_node_info_new_for_xml(introspectionXML, 0);
    82 
    83     GUniqueOutPtr<GError> error;
    84     unsigned registrationID = g_dbus_connection_register_object(
    85         connection,
    86         "/org/webkit/gtk/WebProcessTest",
    87         introspectionData->interfaces[0],
    88         &interfaceVirtualTable,
    89         g_object_ref(userData),
    90         static_cast<GDestroyNotify>(g_object_unref),
    91         &error.outPtr());
    92     if (!registrationID)
    93         g_warning("Failed to register object: %s\n", error->message);
     69    g_object_unref(JSObjectGetPrivate(object));
    9470}
    9571
    96 extern "C" void webkit_web_extension_initialize_with_user_data(WebKitWebExtension* extension, GVariant* userData)
     72static void windowObjectClearedCallback(WebKitScriptWorld* world, WebKitWebPage* webPage, WebKitFrame* frame, WebKitWebExtension* extension)
    9773{
    98     g_assert(userData);
    99     g_assert(g_variant_is_of_type(userData, G_VARIANT_TYPE_UINT32));
    100     GUniquePtr<char> busName(g_strdup_printf("org.webkit.gtk.WebProcessTest%u", g_variant_get_uint32(userData)));
    101     g_bus_own_name(
    102         G_BUS_TYPE_SESSION,
    103         busName.get(),
    104         G_BUS_NAME_OWNER_FLAGS_NONE,
    105         busAcquiredCallback,
    106         0, 0,
    107         g_object_ref(extension),
    108         static_cast<GDestroyNotify>(g_object_unref));
     74    JSGlobalContextRef context = webkit_frame_get_javascript_context_for_script_world(frame, world);
     75    JSObjectRef globalObject = JSContextGetGlobalObject(context);
     76
     77    JSClassDefinition classDefinition = kJSClassDefinitionEmpty;
     78    classDefinition.className = "WebProcessTestRunner";
     79    classDefinition.staticFunctions = webProcessTestRunnerStaticFunctions;
     80    classDefinition.finalize = webProcessTestRunnerFinalize;
     81
     82    JSClassRef jsClass = JSClassCreate(&classDefinition);
     83    JSObjectRef classObject = JSObjectMake(context, jsClass, g_object_ref(webPage));
     84    JSRetainPtr<JSStringRef> propertyString(Adopt, JSStringCreateWithUTF8CString("WebProcessTestRunner"));
     85    JSObjectSetProperty(context, globalObject, propertyString.get(), classObject, kJSPropertyAttributeNone, nullptr);
     86    JSClassRelease(jsClass);
    10987}
     88
     89extern "C" void webkit_web_extension_initialize(WebKitWebExtension* extension)
     90{
     91    g_signal_connect(webkit_script_world_get_default(), "window-object-cleared", G_CALLBACK(windowObjectClearedCallback), extension);
     92}
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h

    r161366 r176563  
    2020#include <webkit2/webkit-web-extension.h>
    2121#include <wtf/HashMap.h>
    22 #include <wtf/PassOwnPtr.h>
    2322#include <wtf/gobject/GRefPtr.h>
    2423#include <wtf/text/StringHash.h>
     
    2827public:
    2928    virtual ~WebProcessTest() { }
    30     virtual bool runTest(const char* testName, WebKitWebExtension*, GVariant* args) = 0;
     29    virtual bool runTest(const char* testName, WebKitWebPage*) = 0;
    3130
    32     static void add(const String& testName, std::function<PassOwnPtr<WebProcessTest> ()>);
    33     static PassOwnPtr<WebProcessTest> create(const String& testName);
     31    static void add(const String& testName, std::function<std::unique_ptr<WebProcessTest> ()>);
     32    static std::unique_ptr<WebProcessTest> create(const String& testName);
    3433};
    3534
  • trunk/Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp

    r176256 r176563  
    488488    return m_surface;
    489489}
     490
     491bool WebViewTest::runWebProcessTest(const char* suiteName, const char* testName)
     492{
     493    GUniquePtr<char> script(g_strdup_printf("WebProcessTestRunner.runTest('%s/%s');", suiteName, testName));
     494    GUniqueOutPtr<GError> error;
     495    WebKitJavascriptResult* javascriptResult = runJavaScriptAndWaitUntilFinished(script.get(), &error.outPtr());
     496    g_assert(!error);
     497    return javascriptResultToBoolean(javascriptResult);
     498}
  • trunk/Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h

    r176256 r176563  
    7070    cairo_surface_t* getSnapshotAndWaitUntilReady(WebKitSnapshotRegion, WebKitSnapshotOptions);
    7171
     72    bool runWebProcessTest(const char* suiteName, const char* testName);
     73
    7274    WebKitWebView* m_webView;
    7375    GMainLoop* m_mainLoop;
Note: See TracChangeset for help on using the changeset viewer.