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/Tests/WebKit2Gtk/TestCookieManager.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp')
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp | 71 |
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); } |