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