15ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark/* 25ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * Copyright (C) 2008 Holger Hans Peter Freyther 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Collabora Ltd. 45ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 55ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * This library is free software; you can redistribute it and/or 65ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * modify it under the terms of the GNU Library General Public 75ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * License as published by the Free Software Foundation; either 85ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * version 2 of the License, or (at your option) any later version. 95ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 105ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * This library is distributed in the hope that it will be useful, 115ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * but WITHOUT ANY WARRANTY; without even the implied warranty of 125ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 135ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * Library General Public License for more details. 145ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * 155ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * You should have received a copy of the GNU Library General Public License 165ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * along with this library; see the file COPYING.LIB. If not, write to 175ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 185ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark * Boston, MA 02110-1301, USA. 195ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark */ 205ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <errno.h> 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <unistd.h> 235ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <glib.h> 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <glib/gstdio.h> 255ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <gtk/gtk.h> 265ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#include <webkit/webkit.h> 275ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 28f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if GTK_CHECK_VERSION(2, 14, 0) 295ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 30db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockstatic int numberOfFramesCreated = 0; 31db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 32db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockstatic void createFrameSignalTestFrameCreatedCallback(WebKitWebView* webView, WebKitWebFrame* frame, gpointer data) 33db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 34db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block numberOfFramesCreated++; 35db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 36db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 37db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockstatic gboolean createFrameSignalTestTimeout(gpointer data) 38db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 39db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block g_assert_cmpint(numberOfFramesCreated, ==, 2); 40db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block g_main_loop_quit((GMainLoop*) data); 41db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block return FALSE; 42db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 43db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 44db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockstatic void test_webkit_web_frame_created_signal(void) 45db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 46db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block GtkWidget* webView; 47db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block GtkWidget* window; 48db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block GMainLoop* loop = g_main_loop_new(NULL, TRUE); 49db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 50db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 51db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 52db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block webView = webkit_web_view_new(); 53db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block g_signal_connect(webView, "frame-created", G_CALLBACK(createFrameSignalTestFrameCreatedCallback), loop); 54db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 55db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // We want to ensure that exactly two create-frame signals are 56db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // fired and no more, so we set a timeout here. There does not appear 57db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // to be a simple way via the API to figure out when all frames have 58db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block // loaded. 59db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block g_timeout_add(500, createFrameSignalTestTimeout, loop); 60db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 61db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block gtk_container_add(GTK_CONTAINER(window), webView); 62db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block gtk_widget_show(window); 63db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block gtk_widget_show(webView); 64db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 65db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block webkit_web_view_load_string(WEBKIT_WEB_VIEW(webView), 66db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block "<html><body>Frames!" 67db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block "<iframe></iframe>" 68db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block "<iframe></iframe>" 69db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block "</body></html>", 70db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block "text/html", "utf-8", "file://"); 71db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block g_main_loop_run(loop); 72db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 73db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 745ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkstatic void test_webkit_web_frame_create_destroy(void) 755ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark{ 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GtkWidget *webView; 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GtkWidget *window; 785ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_bug("21837"); 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webView = webkit_web_view_new(); 815ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_object_ref_sink(webView); 825ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1); 835ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // This crashed with the original version 845ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_object_unref(webView); 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_bug("25042"); 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webView = webkit_web_view_new(); 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_container_add(GTK_CONTAINER(window), webView); 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_widget_show(window); 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_widget_show(webView); 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_widget_destroy(webView); 935ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark} 945ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 955ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkstatic void test_webkit_web_frame_lifetime(void) 965ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark{ 975ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark WebKitWebView* webView; 985ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark WebKitWebFrame* webFrame; 995ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_test_bug("21837"); 1005ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1015ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); 1025ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_object_ref_sink(webView); 1035ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1); 1045ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark webFrame = webkit_web_view_get_main_frame(webView); 1055ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1); 1065ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1075ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // Add dummy reference on the WebKitWebFrame to keep it alive 1085ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_object_ref(webFrame); 1095ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 2); 1105ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1115ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // This crashed with the original version 1125ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_object_unref(webView); 1135ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1145ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // Make sure that the frame got deleted as well. We did this 1155ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // by adding an extra ref on the WebKitWebFrame and we should 1165ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark // be the one holding the last reference. 1175ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1); 1185ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_object_unref(webFrame); 1195ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark} 1205ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic gboolean print_requested_cb(WebKitWebView* webView, WebKitWebFrame* webFrame, GMainLoop* loop) 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set_data(G_OBJECT(webView), "signal-handled", GINT_TO_POINTER(TRUE)); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_main_loop_quit(loop); 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return TRUE; 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void print_timeout(GMainLoop* loop) 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (g_main_loop_is_running(loop)) 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_main_loop_quit(loop); 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void test_webkit_web_frame_printing(void) 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebView* webView; 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_ref_sink(webView); 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1); 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webkit_web_view_load_string(webView, 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "<html><body><h1>WebKitGTK+!</h1></body></html>", 1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "text/html", 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "utf-8", 1460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "file://"); 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GMainLoop* loop = g_main_loop_new(NULL, TRUE); 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Does javascript print() work correctly? 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_signal_connect(webView, "print-requested", 1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch G_CALLBACK(print_requested_cb), 1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch loop); 1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_set_data(G_OBJECT(webView), "signal-handled", GINT_TO_POINTER(FALSE)); 1560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webkit_web_view_execute_script (webView, "print();"); 1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Give javascriptcore some time to process the print request, but 1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // prepare a timeout to avoid it running forever in case the signal is 1600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // never emitted. 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_timeout_add(1000, (GSourceFunc)print_timeout, loop); 1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_main_loop_run(loop); 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpint(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(webView), "signal-handled")), ==, TRUE); 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Does printing directly to a file? 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GError *error = NULL; 1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gchar* temporaryFilename = NULL; 1690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gint fd = g_file_open_tmp ("webkit-testwebframe-XXXXXX", &temporaryFilename, &error); 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch close(fd); 1710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (error) { 1730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_critical("Failed to open a temporary file for writing: %s.", error->message); 1740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_error_free(error); 1750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch goto cleanup; 1760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We delete the file, so that we can easily figure out that the 1790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // file got printed; 1800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (g_unlink(temporaryFilename) == -1) { 1810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_warning("Failed to delete the temporary file: %s.\nThis may cause the test to be bogus.", g_strerror(errno)); 1820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebFrame* webFrame = webkit_web_view_get_main_frame(webView); 1850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GtkPrintOperation* operation = gtk_print_operation_new(); 1860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GtkPrintOperationAction action = GTK_PRINT_OPERATION_ACTION_EXPORT; 1870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GtkPrintOperationResult result; 1880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_print_operation_set_export_filename(operation, temporaryFilename); 1900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result = webkit_web_frame_print_full (webFrame, operation, action, NULL); 1910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpint(result, ==, GTK_PRINT_OPERATION_RESULT_APPLY); 1930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_cmpint(g_file_test(temporaryFilename, G_FILE_TEST_IS_REGULAR), ==, TRUE); 1940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_unlink(temporaryFilename); 1960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_unref(operation); 1970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcleanup: 1980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_unref(webView); 1990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(temporaryFilename); 2000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 202643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstatic void test_webkit_web_frame_response() 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebFrame* frame = g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL); 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame); 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_assert(!response); 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_object_unref(frame); 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 209643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2105ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkint main(int argc, char** argv) 2115ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark{ 2125ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_thread_init(NULL); 2135ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark gtk_test_init(&argc, &argv, NULL); 2145ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 2155ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_test_bug_base("https://bugs.webkit.org/"); 2165ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_test_add_func("/webkit/webview/create_destroy", test_webkit_web_frame_create_destroy); 217db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block g_test_add_func("/webkit/webview/frame-created_signal", test_webkit_web_frame_created_signal); 2185ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark g_test_add_func("/webkit/webframe/lifetime", test_webkit_web_frame_lifetime); 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_add_func("/webkit/webview/printing", test_webkit_web_frame_printing); 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_test_add_func("/webkit/webview/response", test_webkit_web_frame_response); 2215ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark return g_test_run (); 2225ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark} 2235ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 2245ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#else 2255ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clarkint main(int argc, char** argv) 2265ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark{ 227f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); 2285ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark return 0; 2295ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark} 2305ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark 2315ec837f49e9c57d4394ce64b853fd86269c8b340Cary Clark#endif 232