diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h')
-rw-r--r-- | Tools/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h | 80 |
1 files changed, 71 insertions, 9 deletions
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 <cairo.h> #include <glib-object.h> +#include <webkit2/webkit2.h> #include <wtf/HashSet.h> -#include <wtf/gobject/GUniquePtr.h> +#include <wtf/glib/GRefPtr.h> +#include <wtf/glib/GUniquePtr.h> #include <wtf/text/CString.h> #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<gchar> 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<char> localStorageDirectory(g_build_filename(dataDirectory(), "local-storage", nullptr)); + GUniquePtr<char> indexedDBDirectory(g_build_filename(dataDirectory(), "indexeddb", nullptr)); + GUniquePtr<char> diskCacheDirectory(g_build_filename(dataDirectory(), "disk-cache", nullptr)); + GUniquePtr<char> applicationCacheDirectory(g_build_filename(dataDirectory(), "appcache", nullptr)); + GUniquePtr<char> webSQLDirectory(g_build_filename(dataDirectory(), "websql", nullptr)); + GRefPtr<WebKitWebsiteDataManager> 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<GWeakNotify>(objectFinalized), this); } - static CString getWebKit1TestResoucesDir() - { - GUniquePtr<char> 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<char> resourcesDir(g_build_filename(WEBKIT_SRC_DIR, "Tools", "TestWebKitAPI", "Tests", "WebKit2Gtk", "resources", nullptr)); - return resourcesDir.get(); + switch (resourcesDir) { + case WebKit2GTKResources: { + GUniquePtr<char> resourcesDir(g_build_filename(WEBKIT_SRC_DIR, "Tools", "TestWebKitAPI", "Tests", "WebKit2Gtk", "resources", nullptr)); + return resourcesDir.get(); + } + case WebKit2Resources: { + GUniquePtr<char> 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<GObject*> m_watchedObjects; + GRefPtr<WebKitWebContext> m_webContext; + static uint32_t s_webExtensionID; }; #endif // TestMain_h |