10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Jan Michael Alonzo 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * This library is free software; you can redistribute it and/or 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modify it under the terms of the GNU Library General Public 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * License as published by the Free Software Foundation; either 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * version 2 of the License, or (at your option) any later version. 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * This library is distributed in the hope that it will be useful, 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Library General Public License for more details. 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * You should have received a copy of the GNU Library General Public License 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Boston, MA 02110-1301, USA. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <glib.h> 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <gtk/gtk.h> 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <webkit/webkit.h> 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if GTK_CHECK_VERSION(2, 14, 0) 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void test_webkit_web_settings_user_agent(void) 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebSettings* settings; 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GtkWidget* webView; 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gchar* defaultUserAgent; 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gchar* userAgent; 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_bug("17375"); 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webView = webkit_web_view_new(); 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_ref_sink(webView); 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView)); 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch defaultUserAgent = g_strdup(webkit_web_settings_get_user_agent(settings)); 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // test a custom UA string 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch userAgent = NULL; 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set(G_OBJECT(settings), "user-agent", "testwebsettings/0.1", NULL); 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL); 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpstr(userAgent, ==, "testwebsettings/0.1"); 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(userAgent); 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // setting it to NULL or an empty value should give us the default UA string 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch userAgent = NULL; 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set(G_OBJECT(settings), "user-agent", NULL, NULL); 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL); 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpstr(userAgent, ==, defaultUserAgent); 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(userAgent); 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch userAgent = NULL; 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set(G_OBJECT(settings), "user-agent", "", NULL); 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpstr(userAgent, ==, defaultUserAgent); 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(userAgent); 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(defaultUserAgent); 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_unref(webView); 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochint main(int argc, char** argv) 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_thread_init(NULL); 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_test_init(&argc, &argv, NULL); 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_bug_base("https://bugs.webkit.org/"); 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_add_func("/webkit/websettings/user_agent", test_webkit_web_settings_user_agent); 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return g_test_run (); 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#else 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochint main(int argc, char** argv) 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return 0; 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 82