From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h | 80 ++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 9 deletions(-) (limited to 'Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h') diff --git a/Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h b/Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h index 9fab0b2ff..f68af2a96 100644 --- a/Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h +++ b/Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h @@ -22,8 +22,10 @@ #include #include +#include #include -#include +#include +#include #include #define MAKE_GLIB_TEST_FIXTURE(ClassName) \ @@ -41,6 +43,25 @@ g_test_add(testPath.get(), ClassName, 0, ClassName::setUp, testFunc, ClassName::tearDown); \ } +#define MAKE_GLIB_TEST_FIXTURE_WITH_SETUP_TEARDOWN(ClassName, setup, teardown) \ + static void setUp(ClassName* fixture, gconstpointer data) \ + { \ + if (setup) \ + setup(); \ + new (fixture) ClassName; \ + } \ + static void tearDown(ClassName* fixture, gconstpointer data) \ + { \ + fixture->~ClassName(); \ + if (teardown) \ + teardown(); \ + } \ + static void add(const char* suiteName, const char* testName, void (*testFunc)(ClassName*, const void*)) \ + { \ + GUniquePtr testPath(g_strdup_printf("/webkit2/%s/%s", suiteName, testName)); \ + g_test_add(testPath.get(), ClassName, 0, ClassName::setUp, testFunc, ClassName::tearDown); \ + } + #define ASSERT_CMP_CSTRING(s1, cmp, s2) \ do { \ CString __s1 = (s1); \ @@ -56,8 +77,33 @@ class Test { public: MAKE_GLIB_TEST_FIXTURE(Test); + static const char* dataDirectory(); + + static void initializeWebExtensionsCallback(WebKitWebContext* context, Test* test) + { + test->initializeWebExtensions(); + } + + Test() + { + GUniquePtr localStorageDirectory(g_build_filename(dataDirectory(), "local-storage", nullptr)); + GUniquePtr indexedDBDirectory(g_build_filename(dataDirectory(), "indexeddb", nullptr)); + GUniquePtr diskCacheDirectory(g_build_filename(dataDirectory(), "disk-cache", nullptr)); + GUniquePtr applicationCacheDirectory(g_build_filename(dataDirectory(), "appcache", nullptr)); + GUniquePtr webSQLDirectory(g_build_filename(dataDirectory(), "websql", nullptr)); + GRefPtr websiteDataManager = adoptGRef(webkit_website_data_manager_new( + "local-storage-directory", localStorageDirectory.get(), "indexeddb-directory", indexedDBDirectory.get(), + "disk-cache-directory", diskCacheDirectory.get(), "offline-application-cache-directory", applicationCacheDirectory.get(), + "websql-directory", webSQLDirectory.get(), nullptr)); + + m_webContext = adoptGRef(webkit_web_context_new_with_website_data_manager(websiteDataManager.get())); + g_signal_connect(m_webContext.get(), "initialize-web-extensions", G_CALLBACK(initializeWebExtensionsCallback), this); + } + ~Test() { + g_signal_handlers_disconnect_matched(m_webContext.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this); + m_webContext = nullptr; if (m_watchedObjects.isEmpty()) return; @@ -70,6 +116,12 @@ public: g_assert(m_watchedObjects.isEmpty()); } + virtual void initializeWebExtensions() + { + webkit_web_context_set_web_extensions_directory(m_webContext.get(), WEBKIT_TEST_WEB_EXTENSIONS_DIR); + webkit_web_context_set_web_extensions_initialization_user_data(m_webContext.get(), g_variant_new_uint32(++s_webExtensionID)); + } + static void objectFinalized(Test* test, GObject* finalizedObject) { test->m_watchedObjects.remove(finalizedObject); @@ -81,16 +133,24 @@ public: g_object_weak_ref(object, reinterpret_cast(objectFinalized), this); } - static CString getWebKit1TestResoucesDir() - { - GUniquePtr resourcesDir(g_build_filename(WEBKIT_SRC_DIR, "Tools", "TestWebKitAPI", "Tests", "WebKitGtk", "resources", nullptr)); - return resourcesDir.get(); - } - static CString getResourcesDir() + enum ResourcesDir { + WebKit2GTKResources, + WebKit2Resources, + }; + + static CString getResourcesDir(ResourcesDir resourcesDir = WebKit2GTKResources) { - GUniquePtr resourcesDir(g_build_filename(WEBKIT_SRC_DIR, "Tools", "TestWebKitAPI", "Tests", "WebKit2Gtk", "resources", nullptr)); - return resourcesDir.get(); + switch (resourcesDir) { + case WebKit2GTKResources: { + GUniquePtr resourcesDir(g_build_filename(WEBKIT_SRC_DIR, "Tools", "TestWebKitAPI", "Tests", "WebKit2Gtk", "resources", nullptr)); + return resourcesDir.get(); + } + case WebKit2Resources: { + GUniquePtr resourcesDir(g_build_filename(WEBKIT_SRC_DIR, "Tools", "TestWebKitAPI", "Tests", "WebKit2", nullptr)); + return resourcesDir.get(); + } + } } void addLogFatalFlag(unsigned flag) @@ -119,6 +179,8 @@ public: } HashSet m_watchedObjects; + GRefPtr m_webContext; + static uint32_t s_webExtensionID; }; #endif // TestMain_h -- cgit v1.2.1