diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp')
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp index 8d5be9250..0f5a82042 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp @@ -23,19 +23,21 @@ #include "WebViewTest.h" #include <glib/gstdio.h> #include <libsoup/soup.h> -#include <wtf/glib/GUniquePtr.h> +#include <wtf/gobject/GUniquePtr.h> static WebKitTestServer* kServer; +static char* kTempDirectory; class FaviconDatabaseTest: public WebViewTest { public: MAKE_GLIB_TEST_FIXTURE(FaviconDatabaseTest); FaviconDatabaseTest() - : m_favicon(nullptr) + : m_webContext(webkit_web_context_get_default()) + , m_favicon(0) , m_faviconNotificationReceived(false) { - WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext.get()); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext); g_signal_connect(database, "favicon-changed", G_CALLBACK(faviconChangedCallback), this); } @@ -44,7 +46,7 @@ public: if (m_favicon) cairo_surface_destroy(m_favicon); - WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext.get()); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext); g_signal_handlers_disconnect_matched(database, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this); } @@ -65,7 +67,7 @@ public: static void getFaviconCallback(GObject* sourceObject, GAsyncResult* result, void* data) { FaviconDatabaseTest* test = static_cast<FaviconDatabaseTest*>(data); - WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext.get()); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext); test->m_favicon = webkit_favicon_database_get_favicon_finish(database, result, &test->m_error.outPtr()); test->quitMainLoop(); } @@ -85,11 +87,12 @@ public: m_favicon = 0; } - WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext.get()); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext); webkit_favicon_database_get_favicon(database, pageURI, 0, getFaviconCallback, this); g_main_loop_run(m_mainLoop); } + WebKitWebContext* m_webContext; cairo_surface_t* m_favicon; CString m_faviconURI; GUniqueOutPtr<GError> m_error; @@ -113,7 +116,7 @@ serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHash char* contents; gsize length; if (g_str_equal(path, "/icon/favicon.ico")) { - GUniquePtr<char> pathToFavicon(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr)); + GUniquePtr<char> pathToFavicon(g_build_filename(Test::getWebKit1TestResoucesDir().data(), "blank.ico", NULL)); g_file_get_contents(pathToFavicon.get(), &contents, &length, 0); soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length); } else if (g_str_equal(path, "/nofavicon")) { @@ -139,13 +142,13 @@ static void testNotInitialized(FaviconDatabaseTest* test) static void testSetDirectory(FaviconDatabaseTest* test) { - webkit_web_context_set_favicon_database_directory(test->m_webContext.get(), Test::dataDirectory()); - g_assert_cmpstr(Test::dataDirectory(), ==, webkit_web_context_get_favicon_database_directory(test->m_webContext.get())); + webkit_web_context_set_favicon_database_directory(test->m_webContext, kTempDirectory); + g_assert_cmpstr(kTempDirectory, ==, webkit_web_context_get_favicon_database_directory(test->m_webContext)); } static void testClearDatabase(FaviconDatabaseTest* test) { - WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext.get()); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext); webkit_favicon_database_clear(database); GUniquePtr<char> iconURI(webkit_favicon_database_get_favicon_uri(database, kServer->getURIForPath("/foo").data())); @@ -195,7 +198,7 @@ static void testGetFavicon(FaviconDatabaseTest* test) static void testGetFaviconURI(FaviconDatabaseTest* test) { - WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext.get()); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext); CString baseURI = kServer->getURIForPath("/foo"); GUniquePtr<char> iconURI(webkit_favicon_database_get_favicon_uri(database, baseURI.data())); @@ -240,11 +243,30 @@ void beforeAll() kServer = new WebKitTestServer(); kServer->run(serverCallback); + kTempDirectory = g_dir_make_tmp("WebKit2Tests-XXXXXX", 0); + g_assert(kTempDirectory); + // Add tests to the suite. FaviconDatabaseTest::add("WebKitFaviconDatabase", "favicon-database-test", testFaviconDatabase); } +static void webkitFaviconDatabaseFinalizedCallback(gpointer, GObject*) +{ + if (!g_file_test(kTempDirectory, G_FILE_TEST_IS_DIR)) + return; + + GUniquePtr<char> filename(g_build_filename(kTempDirectory, "WebpageIcons.db", nullptr)); + g_unlink(filename.get()); + + g_rmdir(kTempDirectory); +} + void afterAll() { delete kServer; + + // Delete the temporary files after the IconDatabase has been + // closed, that is, once WebKitFaviconDatabase is being destroyed. + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(webkit_web_context_get_default()); + g_object_weak_ref(G_OBJECT(database), webkitFaviconDatabaseFinalizedCallback, 0); } |