summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp')
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp71
1 files changed, 64 insertions, 7 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
index 2e98645e8..4cd4b5c8c 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
@@ -24,7 +24,6 @@
#include <glib/gstdio.h>
static WebKitTestServer* kServer;
-static char* kTempDirectory;
static const char* kFirstPartyDomain = "127.0.0.1";
static const char* kThirdPartyDomain = "localhost";
@@ -53,6 +52,7 @@ public:
, m_cookiesChanged(false)
, m_finishLoopWhenCookiesChange(false)
{
+ g_assert(webkit_website_data_manager_get_cookie_manager(webkit_web_context_get_website_data_manager(webkit_web_view_get_context(m_webView))) == m_cookieManager);
g_signal_connect(m_cookieManager, "changed", G_CALLBACK(cookiesChangedCallback), this);
}
@@ -72,12 +72,12 @@ public:
switch (storage) {
case WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT:
if (!m_cookiesTextFile)
- m_cookiesTextFile.reset(g_build_filename(kTempDirectory, "cookies.txt", NULL));
+ m_cookiesTextFile.reset(g_build_filename(Test::dataDirectory(), "cookies.txt", nullptr));
filename = m_cookiesTextFile.get();
break;
case WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE:
if (!m_cookiesSQLiteFile)
- m_cookiesSQLiteFile.reset(g_build_filename(kTempDirectory, "cookies.db", NULL));
+ m_cookiesSQLiteFile.reset(g_build_filename(Test::dataDirectory(), "cookies.db", nullptr));
filename = m_cookiesSQLiteFile.get();
break;
default:
@@ -114,7 +114,9 @@ public:
static void getDomainsReadyCallback(GObject* object, GAsyncResult* result, gpointer userData)
{
GUniqueOutPtr<GError> error;
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
char** domains = webkit_cookie_manager_get_domains_with_cookies_finish(WEBKIT_COOKIE_MANAGER(object), result, &error.outPtr());
+ G_GNUC_END_IGNORE_DEPRECATIONS;
g_assert(!error.get());
CookieManagerTest* test = static_cast<CookieManagerTest*>(userData);
@@ -126,7 +128,9 @@ public:
{
g_strfreev(m_domains);
m_domains = 0;
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
webkit_cookie_manager_get_domains_with_cookies(m_cookieManager, 0, getDomainsReadyCallback, this);
+ G_GNUC_END_IGNORE_DEPRECATIONS;
g_main_loop_run(m_mainLoop);
return m_domains;
@@ -145,12 +149,16 @@ public:
void deleteCookiesForDomain(const char* domain)
{
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
webkit_cookie_manager_delete_cookies_for_domain(m_cookieManager, domain);
+ G_GNUC_END_IGNORE_DEPRECATIONS;
}
void deleteAllCookies()
{
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
webkit_cookie_manager_delete_all_cookies(m_cookieManager);
+ G_GNUC_END_IGNORE_DEPRECATIONS;
}
void waitUntilCookiesChanged()
@@ -291,6 +299,58 @@ static void testCookieManagerPersistentStorage(CookieManagerTest* test, gconstpo
g_assert_cmpint(g_strv_length(test->getDomains()), ==, 0);
}
+static void ephemeralViewloadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent, WebViewTest* test)
+{
+ if (loadEvent != WEBKIT_LOAD_FINISHED)
+ return;
+ g_signal_handlers_disconnect_by_func(webView, reinterpret_cast<void*>(ephemeralViewloadChanged), test);
+ test->quitMainLoop();
+}
+
+static void testCookieManagerEphemeral(CookieManagerTest* test, gconstpointer)
+{
+ test->setAcceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
+ test->setPersistentStorage(WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT);
+ char** domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 0);
+
+ GRefPtr<WebKitWebView> webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
+ "web-context", webkit_web_view_get_context(test->m_webView),
+ "is-ephemeral", TRUE,
+ nullptr));
+ g_assert(webkit_web_view_is_ephemeral(webView.get()));
+ g_assert(!webkit_web_context_is_ephemeral(webkit_web_view_get_context(webView.get())));
+
+ g_signal_connect(webView.get(), "load-changed", G_CALLBACK(ephemeralViewloadChanged), test);
+ webkit_web_view_load_uri(webView.get(), kServer->getURIForPath("/index.html").data());
+ g_main_loop_run(test->m_mainLoop);
+
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 0);
+
+ auto* viewDataManager = webkit_web_view_get_website_data_manager(webView.get());
+ g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(viewDataManager));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(viewDataManager));
+ g_assert(viewDataManager != webkit_web_context_get_website_data_manager(webkit_web_view_get_context(test->m_webView)));
+ auto* cookieManager = webkit_website_data_manager_get_cookie_manager(viewDataManager);
+ g_assert(WEBKIT_IS_COOKIE_MANAGER(cookieManager));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(cookieManager));
+ g_assert(cookieManager != test->m_cookieManager);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
+ webkit_cookie_manager_get_domains_with_cookies(cookieManager, nullptr, [](GObject* object, GAsyncResult* result, gpointer userData) {
+ auto* test = static_cast<CookieManagerTest*>(userData);
+ GUniquePtr<char*> domains(webkit_cookie_manager_get_domains_with_cookies_finish(WEBKIT_COOKIE_MANAGER(object), result, nullptr));
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains.get()), ==, 1);
+ g_assert_cmpstr(domains.get()[0], ==, kFirstPartyDomain);
+ test->quitMainLoop();
+ }, test);
+ G_GNUC_END_IGNORE_DEPRECATIONS;
+ g_main_loop_run(test->m_mainLoop);
+}
+
static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
{
if (message->method != SOUP_METHOD_GET) {
@@ -315,17 +375,14 @@ void beforeAll()
kServer = new WebKitTestServer();
kServer->run(serverCallback);
- kTempDirectory = g_dir_make_tmp("WebKit2Tests-XXXXXX", 0);
- g_assert(kTempDirectory);
-
CookieManagerTest::add("WebKitCookieManager", "accept-policy", testCookieManagerAcceptPolicy);
CookieManagerTest::add("WebKitCookieManager", "delete-cookies", testCookieManagerDeleteCookies);
CookieManagerTest::add("WebKitCookieManager", "cookies-changed", testCookieManagerCookiesChanged);
CookieManagerTest::add("WebKitCookieManager", "persistent-storage", testCookieManagerPersistentStorage);
+ CookieManagerTest::add("WebKitCookieManager", "ephemeral", testCookieManagerEphemeral);
}
void afterAll()
{
delete kServer;
- g_rmdir(kTempDirectory);
}