Changeset 176563 in webkit
- Timestamp:
- Nov 28, 2014, 6:29:26 AM (12 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 deleted
- 14 edited
-
ChangeLog (modified) (1 diff)
-
TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt (modified) (1 diff)
-
TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp (modified) (3 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp (modified) (4 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp (modified) (4 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp (modified) (4 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp (modified) (5 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp (modified) (4 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp (modified) (4 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp (modified) (4 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp (modified) (2 diffs)
-
TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h (modified) (2 diffs)
-
TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp (deleted)
-
TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.h (deleted)
-
TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp (modified) (1 diff)
-
TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r176562 r176563 1 2014-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 1 78 2014-11-28 Csaba Osztrogonác <ossy@webkit.org> 2 79 -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
r174310 r176563 33 33 ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebKitTestBus.cpp 34 34 ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebKitTestServer.cpp 35 ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp36 35 ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.cpp 37 36 ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp
r170422 r176563 60 60 class WebKitDOMNodeFilterTest : public WebProcessTest { 61 61 public: 62 static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitDOMNodeFilterTest()); }62 static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitDOMNodeFilterTest()); } 63 63 64 64 private: 65 guint64 webPageFromArgs(GVariant* args)65 bool testTreeWalker(WebKitWebPage* page) 66 66 { 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));85 67 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 86 68 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 132 114 } 133 115 134 bool testNodeIterator(WebKitWeb Extension* extension, GVariant* args)116 bool testNodeIterator(WebKitWebPage* page) 135 117 { 136 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));137 g_assert(WEBKIT_IS_WEB_PAGE(page));138 118 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 139 119 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 188 168 } 189 169 190 virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)170 bool runTest(const char* testName, WebKitWebPage* page) override 191 171 { 192 172 if (!strcmp(testName, "tree-walker")) 193 return testTreeWalker( extension, args);173 return testTreeWalker(page); 194 174 if (!strcmp(testName, "node-iterator")) 195 return testNodeIterator( extension, args);175 return testNodeIterator(page); 196 176 197 177 g_assert_not_reached(); -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
r162599 r176563 27 27 class WebKitDOMNodeTest : public WebProcessTest { 28 28 public: 29 static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitDOMNodeTest()); }29 static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebKitDOMNodeTest>(new WebKitDOMNodeTest()); } 30 30 31 31 private: 32 guint64 webPageFromArgs(GVariant* args)32 bool testHierarchyNavigation(WebKitWebPage* page) 33 33 { 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));52 34 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 53 35 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 96 78 } 97 79 98 bool testInsertion(WebKitWeb Extension* extension, GVariant* args)80 bool testInsertion(WebKitWebPage* page) 99 81 { 100 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));101 g_assert(WEBKIT_IS_WEB_PAGE(page));102 82 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 103 83 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 171 151 } 172 152 173 bool testTagNames(WebKitWeb Extension* extension, GVariant* args)153 bool testTagNames(WebKitWebPage* page) 174 154 { 175 155 static const char* expectedTagNames[] = { "HTML", "HEAD", "BODY", "VIDEO", "SOURCE", "VIDEO", "SOURCE", "INPUT" }; 176 156 177 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));178 g_assert(WEBKIT_IS_WEB_PAGE(page));179 157 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 180 158 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 193 171 } 194 172 195 virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)173 bool runTest(const char* testName, WebKitWebPage* page) override 196 174 { 197 175 if (!strcmp(testName, "hierarchy-navigation")) 198 return testHierarchyNavigation( extension, args);176 return testHierarchyNavigation(page); 199 177 if (!strcmp(testName, "insertion")) 200 return testInsertion( extension, args);178 return testInsertion(page); 201 179 if (!strcmp(testName, "tag-names")) 202 return testTagNames( extension, args);180 return testTagNames(page); 203 181 204 182 g_assert_not_reached(); -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp
r170700 r176563 58 58 class WebKitDOMXPathNSResolverTest : public WebProcessTest { 59 59 public: 60 static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitDOMXPathNSResolverTest()); }60 static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitDOMXPathNSResolverTest()); } 61 61 62 62 private: 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 79 63 void evaluateFooChildTextAndCheckResult(WebKitDOMDocument* document, WebKitDOMXPathNSResolver* resolver) 80 64 { … … 92 76 } 93 77 94 bool testXPathNSResolverNative(WebKitWeb Extension* extension, GVariant* args)78 bool testXPathNSResolverNative(WebKitWebPage* page) 95 79 { 96 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));97 g_assert(WEBKIT_IS_WEB_PAGE(page));98 80 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 99 81 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 106 88 } 107 89 108 bool testXPathNSResolverCustom(WebKitWeb Extension* extension, GVariant* args)90 bool testXPathNSResolverCustom(WebKitWebPage* page) 109 91 { 110 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));111 g_assert(WEBKIT_IS_WEB_PAGE(page));112 92 WebKitDOMDocument* document = webkit_web_page_get_dom_document(page); 113 93 g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); … … 119 99 } 120 100 121 virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)101 bool runTest(const char* testName, WebKitWebPage* page) override 122 102 { 123 103 if (!strcmp(testName, "native")) 124 return testXPathNSResolverNative( extension, args);104 return testXPathNSResolverNative(page); 125 105 if (!strcmp(testName, "custom")) 126 return testXPathNSResolverCustom( extension, args);106 return testXPathNSResolverCustom(page); 127 107 128 108 g_assert_not_reached(); -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp
r161366 r176563 26 26 class WebKitFrameTest : public WebProcessTest { 27 27 public: 28 static PassOwnPtr<WebProcessTest> create() { return adoptPtr(new WebKitFrameTest()); }28 static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitFrameTest()); } 29 29 30 30 private: 31 guint64 webPageFromArgs(GVariant* args)31 bool testMainFrame(WebKitWebPage* page) 32 32 { 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 52 33 WebKitFrame* frame = webkit_web_page_get_main_frame(page); 53 34 g_assert(WEBKIT_IS_FRAME(frame)); … … 57 38 } 58 39 59 bool testURI(WebKitWeb Extension* extension, GVariant* args)40 bool testURI(WebKitWebPage* page) 60 41 { 61 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));62 g_assert(WEBKIT_IS_WEB_PAGE(page));63 64 42 WebKitFrame* frame = webkit_web_page_get_main_frame(page); 65 43 g_assert(WEBKIT_IS_FRAME(frame)); … … 69 47 } 70 48 71 bool testJavaScriptContext(WebKitWeb Extension* extension, GVariant* args)49 bool testJavaScriptContext(WebKitWebPage* page) 72 50 { 73 WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));74 g_assert(WEBKIT_IS_WEB_PAGE(page));75 76 51 WebKitFrame* frame = webkit_web_page_get_main_frame(page); 77 52 g_assert(WEBKIT_IS_FRAME(frame)); … … 81 56 } 82 57 83 virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)58 bool runTest(const char* testName, WebKitWebPage* page) override 84 59 { 85 60 if (!strcmp(testName, "main-frame")) 86 return testMainFrame( extension, args);61 return testMainFrame(page); 87 62 if (!strcmp(testName, "uri")) 88 return testURI( extension, args);63 return testURI(page); 89 64 if (!strcmp(testName, "javascript-context")) 90 return testJavaScriptContext( extension, args);65 return testJavaScriptContext(page); 91 66 92 67 g_assert_not_reached(); -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp
r176256 r176563 20 20 #include "config.h" 21 21 22 #include "WebProcessTestRunner.h"23 22 #include "WebViewTest.h" 24 23 #include <gtk/gtk.h> 25 24 #include <webkit2/webkit2.h> 26 27 static WebProcessTestRunner* testRunner;28 25 29 26 static void testWebKitDOMNodeHierarchyNavigation(WebViewTest* test, gconstpointer) … … 33 30 test->waitUntilLoadFinished(); 34 31 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")); 39 33 } 40 34 … … 45 39 test->waitUntilLoadFinished(); 46 40 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")); 51 42 } 52 43 … … 66 57 test->waitUntilLoadFinished(); 67 58 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")); 72 60 } 73 61 74 62 void beforeAll() 75 63 { 76 testRunner = new WebProcessTestRunner();77 78 64 WebViewTest::add("WebKitDOMNode", "hierarchy-navigation", testWebKitDOMNodeHierarchyNavigation); 79 65 WebViewTest::add("WebKitDOMNode", "insertion", testWebKitDOMNodeInsertion); … … 83 69 void afterAll() 84 70 { 85 delete testRunner;86 71 } -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp
r176256 r176563 20 20 #include "config.h" 21 21 22 #include "WebProcessTestRunner.h"23 22 #include "WebViewTest.h" 24 23 #include <gtk/gtk.h> 25 24 #include <webkit2/webkit2.h> 26 27 static WebProcessTestRunner* testRunner;28 25 29 26 static const char* testHTML = "<html id='root'><head><title>DOMNodeTreeWalker</title></head>" … … 35 32 test->waitUntilLoadFinished(); 36 33 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)); 41 35 } 42 36 … … 53 47 void beforeAll() 54 48 { 55 testRunner = new WebProcessTestRunner();56 57 49 WebViewTest::add("WebKitDOMNodeFilter", "tree-walker", testWebKitDOMNodeFilterTreeWalker); 58 50 WebViewTest::add("WebKitDOMNodeFilter", "node-iterator", testWebKitDOMNodeFilterNodeIterator); … … 61 53 void afterAll() 62 54 { 63 delete testRunner;64 55 } -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp
r176256 r176563 20 20 #include "config.h" 21 21 22 #include "WebProcessTestRunner.h"23 22 #include "WebViewTest.h" 24 23 #include <gtk/gtk.h> 25 24 #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 }36 25 37 26 static void testWebKitDOMXPathNSResolverNative(WebViewTest* test, gconstpointer) … … 41 30 test->loadBytes(bytes.get(), "text/xml", nullptr, nullptr); 42 31 test->waitUntilLoadFinished(); 43 runTest(test, "native");32 g_assert(test->runWebProcessTest("WebKitDOMXPathNSResolver", "native")); 44 33 } 45 34 … … 50 39 test->loadBytes(bytes.get(), "text/xml", nullptr, nullptr); 51 40 test->waitUntilLoadFinished(); 52 runTest(test, "custom");41 g_assert(test->runWebProcessTest("WebKitDOMXPathNSResolver", "custom")); 53 42 } 54 43 55 44 void beforeAll() 56 45 { 57 testRunner = new WebProcessTestRunner();58 59 46 WebViewTest::add("WebKitDOMXPathNSResolver", "native", testWebKitDOMXPathNSResolverNative); 60 47 WebViewTest::add("WebKitDOMXPathNSResolver", "custom", testWebKitDOMXPathNSResolverCustom); … … 63 50 void afterAll() 64 51 { 65 delete testRunner;66 52 } -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp
r176256 r176563 20 20 #include "config.h" 21 21 22 #include "WebProcessTestRunner.h"23 22 #include "WebViewTest.h" 24 23 #include <gtk/gtk.h> 25 24 #include <webkit2/webkit2.h> 26 27 static WebProcessTestRunner* testRunner;28 25 29 26 static void webkitFrameTestRun(WebViewTest* test, const char* testName) … … 33 30 test->waitUntilLoadFinished(); 34 31 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)); 39 33 } 40 34 … … 56 50 void beforeAll() 57 51 { 58 testRunner = new WebProcessTestRunner();59 60 52 WebViewTest::add("WebKitFrame", "main-frame", testWebKitFrameMainFrame); 61 53 WebViewTest::add("WebKitFrame", "uri", testWebKitFrameURI); … … 65 57 void afterAll() 66 58 { 67 delete testRunner;68 59 } -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp
r176256 r176563 21 21 #include "WebProcessTest.h" 22 22 23 #include <JavaScriptCore/JSRetainPtr.h> 23 24 #include <gio/gio.h> 25 #include <wtf/NeverDestroyed.h> 24 26 #include <wtf/gobject/GUniquePtr.h> 25 27 26 typedef HashMap<String, std::function< PassOwnPtr<WebProcessTest> ()>> TestsMap;28 typedef HashMap<String, std::function<std::unique_ptr<WebProcessTest> ()>> TestsMap; 27 29 static TestsMap& testsMap() 28 30 { 29 DEPRECATED_DEFINE_STATIC_LOCAL(TestsMap, s_testsMap, ());31 static NeverDestroyed<TestsMap> s_testsMap; 30 32 return s_testsMap; 31 33 } 32 34 33 void WebProcessTest::add(const String& testName, std::function< PassOwnPtr<WebProcessTest> ()> closure)35 void WebProcessTest::add(const String& testName, std::function<std::unique_ptr<WebProcessTest> ()> closure) 34 36 { 35 testsMap().add(testName, std::forward<std::function<PassOwnPtr<WebProcessTest> ()>>(closure));37 testsMap().add(testName, WTF::move(closure)); 36 38 } 37 39 38 PassOwnPtr<WebProcessTest> WebProcessTest::create(const String& testName)40 std::unique_ptr<WebProcessTest> WebProcessTest::create(const String& testName) 39 41 { 40 42 g_assert(testsMap().contains(testName)); … … 42 44 } 43 45 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>"; 46 static 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); 54 53 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)); 59 56 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)); 71 59 } 72 60 73 static const GDBusInterfaceVTable interfaceVirtualTable = { 74 methodCallCallback, 0, 0, { 0, } 61 static const JSStaticFunction webProcessTestRunnerStaticFunctions[] = 62 { 63 { "runTest", runTest, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 64 { nullptr, nullptr, 0 } 75 65 }; 76 66 77 static void busAcquiredCallback(GDBusConnection* connection, const char* name, gpointer userData)67 static void webProcessTestRunnerFinalize(JSObjectRef object) 78 68 { 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)); 94 70 } 95 71 96 extern "C" void webkit_web_extension_initialize_with_user_data(WebKitWebExtension* extension, GVariant* userData)72 static void windowObjectClearedCallback(WebKitScriptWorld* world, WebKitWebPage* webPage, WebKitFrame* frame, WebKitWebExtension* extension) 97 73 { 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); 109 87 } 88 89 extern "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 20 20 #include <webkit2/webkit-web-extension.h> 21 21 #include <wtf/HashMap.h> 22 #include <wtf/PassOwnPtr.h>23 22 #include <wtf/gobject/GRefPtr.h> 24 23 #include <wtf/text/StringHash.h> … … 28 27 public: 29 28 virtual ~WebProcessTest() { } 30 virtual bool runTest(const char* testName, WebKitWeb Extension*, GVariant* args) = 0;29 virtual bool runTest(const char* testName, WebKitWebPage*) = 0; 31 30 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); 34 33 }; 35 34 -
trunk/Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp
r176256 r176563 488 488 return m_surface; 489 489 } 490 491 bool 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 70 70 cairo_surface_t* getSnapshotAndWaitUntilReady(WebKitSnapshotRegion, WebKitSnapshotOptions); 71 71 72 bool runWebProcessTest(const char* suiteName, const char* testName); 73 72 74 WebKitWebView* m_webView; 73 75 GMainLoop* m_mainLoop;
Note:
See TracChangeset
for help on using the changeset viewer.