summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-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.cpp44
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);
}