static void testWebKitSettingsUserAgent(WebViewTest* test, gconstpointer) { GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new()); CString defaultUserAgent = webkit_settings_get_user_agent(settings.get()); webkit_web_view_set_settings(test->m_webView, settings.get()); g_assert(g_strstr_len(defaultUserAgent.data(), -1, "Safari")); g_assert(g_strstr_len(defaultUserAgent.data(), -1, "Chromium")); g_assert(g_strstr_len(defaultUserAgent.data(), -1, "Chrome")); webkit_settings_set_user_agent(settings.get(), 0); g_assert_cmpstr(defaultUserAgent.data(), ==, webkit_settings_get_user_agent(settings.get())); assertThatUserAgentIsSentInHeaders(test, defaultUserAgent.data()); webkit_settings_set_user_agent(settings.get(), ""); g_assert_cmpstr(defaultUserAgent.data(), ==, webkit_settings_get_user_agent(settings.get())); const char* funkyUserAgent = "Funky!"; webkit_settings_set_user_agent(settings.get(), funkyUserAgent); g_assert_cmpstr(funkyUserAgent, ==, webkit_settings_get_user_agent(settings.get())); assertThatUserAgentIsSentInHeaders(test, funkyUserAgent); webkit_settings_set_user_agent_with_application_details(settings.get(), "WebKitGTK+", 0); const char* userAgentWithNullVersion = webkit_settings_get_user_agent(settings.get()); g_assert_cmpstr(g_strstr_len(userAgentWithNullVersion, -1, defaultUserAgent.data()), ==, userAgentWithNullVersion); g_assert(g_strstr_len(userAgentWithNullVersion, -1, "WebKitGTK+")); webkit_settings_set_user_agent_with_application_details(settings.get(), "WebKitGTK+", ""); g_assert_cmpstr(webkit_settings_get_user_agent(settings.get()), ==, userAgentWithNullVersion); webkit_settings_set_user_agent_with_application_details(settings.get(), "WebCatGTK+", "3.4.5"); const char* newUserAgent = webkit_settings_get_user_agent(settings.get()); g_assert(g_strstr_len(newUserAgent, -1, "3.4.5")); g_assert(g_strstr_len(newUserAgent, -1, "WebCatGTK+")); }
static gint32 webpage_capture (void) { gchar *scheme; GtkWidget *window; GtkWidget *view; WebKitSettings *settings; char *ua; if ((!webpagevals.url) || (strlen (webpagevals.url) == 0)) { g_set_error (&webpagevals.error, 0, 0, _("No URL was specified")); return -1; } scheme = g_uri_parse_scheme (webpagevals.url); if (!scheme) { char *url; /* If we were not given a well-formed URL, make one. */ url = g_strconcat ("http://", webpagevals.url, NULL); g_free (webpagevals.url); webpagevals.url = url; g_free (scheme); } if (webpagevals.width < 32) { g_warning ("Width '%d' is too small. Clamped to 32.", webpagevals.width); webpagevals.width = 32; } else if (webpagevals.width > 8192) { g_warning ("Width '%d' is too large. Clamped to 8192.", webpagevals.width); webpagevals.width = 8192; } window = gtk_offscreen_window_new (); gtk_widget_show (window); view = webkit_web_view_new (); gtk_widget_show (view); gtk_widget_set_vexpand (view, TRUE); gtk_widget_set_size_request (view, webpagevals.width, -1); gtk_container_add (GTK_CONTAINER (window), view); /* Append "GIMP/<GIMP_VERSION>" to the user agent string */ settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)); ua = g_strdup_printf ("%s GIMP/%s", webkit_settings_get_user_agent (settings), GIMP_VERSION); webkit_settings_set_user_agent (settings, ua); g_free (ua); /* Set font size */ webkit_settings_set_default_font_size (settings, webpagevals.font_size); g_signal_connect (view, "notify::estimated-load-progress", G_CALLBACK (notify_progress_cb), window); g_signal_connect (view, "load-failed", G_CALLBACK (load_failed_cb), window); g_signal_connect (view, "load-changed", G_CALLBACK (load_changed_cb), window); gimp_progress_init_printf (_("Downloading webpage '%s'"), webpagevals.url); webkit_web_view_load_uri (WEBKIT_WEB_VIEW (view), webpagevals.url); gtk_main (); gtk_widget_destroy (window); gimp_progress_update (1.0); return webpagevals.image; }