1231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/* 2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Jan Michael Alonzo 3231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * This library is free software; you can redistribute it and/or 5231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * modify it under the terms of the GNU Library General Public 6231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * License as published by the Free Software Foundation; either 7231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * version 2 of the License, or (at your option) any later version. 8231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 9231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * This library is distributed in the hope that it will be useful, 10231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * but WITHOUT ANY WARRANTY; without even the implied warranty of 11231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Library General Public License for more details. 13231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 14231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * You should have received a copy of the GNU Library General Public License 15231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * along with this library; see the file COPYING.LIB. If not, write to 16231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Boston, MA 02110-1301, USA. 18231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block */ 19231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 20231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <glib.h> 21231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <gtk/gtk.h> 22231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <webkit/webkit.h> 23231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 24f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if GTK_CHECK_VERSION(2, 14, 0) 25231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 26231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic const gshort defaultTimeout = 10; 27231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockguint waitTimer; 28231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockgboolean shouldWait; 29231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 30231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocktypedef struct { 31231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebView* webView; 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebFrame* mainFrame; 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} WebDataSourceFixture; 34231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void test_webkit_web_data_source_get_initial_request() 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebView* view; 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebFrame* frame; 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebDataSource* dataSource; 40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitNetworkRequest* initialRequest; 41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 42231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block view = WEBKIT_WEB_VIEW(webkit_web_view_new()); 43231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_ref_sink(view); 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block frame = webkit_web_view_get_main_frame(view); 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitNetworkRequest* request = webkit_network_request_new("http://www.google.com"); 47231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block webkit_web_frame_load_request(frame, request); 48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_unref(request); 49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block dataSource = webkit_web_frame_get_provisional_data_source(frame); 51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(dataSource); 52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block initialRequest = webkit_web_data_source_get_initial_request(dataSource); 53231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert_cmpstr(webkit_network_request_get_uri(initialRequest), ==, "http://www.google.com/"); 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_unref(view); 56231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 57231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 58d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void notify_load_status_unreachable_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop) 59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 60d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitLoadStatus status = webkit_web_view_get_load_status (view); 61d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitWebFrame* frame = webkit_web_view_get_main_frame(view); 62d0825bca7fe65beaee391d30da42e937db621564Steve Block 63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_assert(status != WEBKIT_LOAD_FINISHED); 64d0825bca7fe65beaee391d30da42e937db621564Steve Block 65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (status != WEBKIT_LOAD_FAILED) 66f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return; 67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 68d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitWebDataSource* datasource = webkit_web_frame_get_data_source(frame); 69231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_assert_cmpstr("http://this.host.does.not.exist/doireallyexist.html", ==, 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block webkit_web_data_source_get_unreachable_uri(datasource)); 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 73d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_quit(loop); 74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 76d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void notify_load_status_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop) 77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 78d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitLoadStatus status = webkit_web_view_get_load_status (view); 79d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitWebFrame* frame = webkit_web_view_get_main_frame(view); 80d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame); 81d0825bca7fe65beaee391d30da42e937db621564Steve Block 82d0825bca7fe65beaee391d30da42e937db621564Steve Block if (status == WEBKIT_LOAD_COMMITTED) { 83d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(webkit_web_data_source_is_loading(dataSource)); 84d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 85d0825bca7fe65beaee391d30da42e937db621564Steve Block } 86d0825bca7fe65beaee391d30da42e937db621564Steve Block else if (status != WEBKIT_LOAD_FINISHED) 87d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 88d0825bca7fe65beaee391d30da42e937db621564Steve Block 89231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* Test get_request */ 90231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_message("Testing webkit_web_data_source_get_request"); 91231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitNetworkRequest* request = webkit_web_data_source_get_request(dataSource); 9281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://www.webkit.org/"); 93231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 94231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* Test get_main_resource */ 95231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_message("Testing webkit_web_data_source_get_main_resource"); 96231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebResource* resource = webkit_web_data_source_get_main_resource(dataSource); 97231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert_cmpstr("text/html", ==, webkit_web_resource_get_mime_type(resource)); 9881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch g_assert_cmpstr("http://www.webkit.org/", ==, webkit_web_resource_get_uri(resource)); 99231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 100231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* Test get_data. We just test if data has certain size for the mean time */ 101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_message("Testing webkit_web_data_source_get_data has certain size"); 102231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block GString* data = webkit_web_data_source_get_data(dataSource); 103231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(data->len > 100); 104231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 105231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* FIXME: Add test for get_encoding */ 106231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 107d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_quit(loop); 108231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 110231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic gboolean wait_timer_fired(GMainLoop* loop) 111231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 112231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block waitTimer = 0; 113d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_quit(loop); 114231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 115231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return FALSE; 116231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 117231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 118231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void test_webkit_web_data_source() 119231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 120231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebView* view; 121231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block GMainLoop* loop; 122231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 123231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block view = WEBKIT_WEB_VIEW(webkit_web_view_new()); 124231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_ref_sink(view); 125231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block loop = g_main_loop_new(NULL, TRUE); 126d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_cb), loop); 12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch webkit_web_view_load_uri(view, "http://www.webkit.org"); 128231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 129f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop); 130f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 131f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_main_loop_run(loop); 132f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 133f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (waitTimer) 134f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_source_remove(waitTimer); 135f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 136f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch waitTimer = 0; 137f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 138f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_main_loop_unref(loop); 139f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_object_unref(view); 140f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 141f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 142f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic void notify_load_status_lifetime_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop) 143f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 144f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitLoadStatus status = webkit_web_view_get_load_status (view); 145f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitWebFrame* frame = webkit_web_view_get_main_frame(view); 146f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame); 147f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 148f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (status == WEBKIT_LOAD_COMMITTED) { 149f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_assert(webkit_web_data_source_is_loading(dataSource)); 150f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return; 151f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } else if (status != WEBKIT_LOAD_FINISHED) 152f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return; 153f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 154f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_main_loop_quit(loop); 155f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 156f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 157f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic void test_webkit_web_data_source_lifetime() 158f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 159f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitWebView* view; 160f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch GMainLoop* loop; 161f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 162f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch view = WEBKIT_WEB_VIEW(webkit_web_view_new()); 163f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_object_ref_sink(view); 164f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch loop = g_main_loop_new(NULL, TRUE); 165f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_lifetime_cb), loop); 16681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch webkit_web_view_load_uri(view, "http://www.webkit.org"); 167f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 168f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop); 169231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 170231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_run(loop); 171f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 172f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(webkit_web_view_get_main_frame(view)); 173f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch GList* subResources = webkit_web_data_source_get_subresources(dataSource); 174f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch gint numberOfResources = g_list_length(subResources); 175f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_list_free(subResources); 176f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 177f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FINISHED); 178f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 179f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch webkit_web_view_load_uri(view, "http://gnome.org"); 180f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 181f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_PROVISIONAL); 182f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 183f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch webkit_web_view_stop_loading(view); 184f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 185f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FAILED); 186f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 187f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch subResources = webkit_web_data_source_get_subresources(dataSource); 188f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_assert_cmpint(numberOfResources, ==, g_list_length(subResources)); 189f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_list_free(subResources); 190f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 191f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (waitTimer) 192f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_source_remove(waitTimer); 193f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 194f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch waitTimer = 0; 195f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 196f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_main_loop_unref(loop); 197231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_unref(view); 198231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void test_webkit_web_data_source_unreachable_uri() 201231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 202f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch /* FIXME: this test fails currently. */ 203f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return; 204f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 205231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebView* view; 206231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block GMainLoop* loop; 207231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 208231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block view = WEBKIT_WEB_VIEW(webkit_web_view_new()); 209231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_ref_sink(view); 210231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block loop = g_main_loop_new(NULL, TRUE); 211d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_unreachable_cb), loop); 212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block webkit_web_view_load_uri(view, "http://this.host.does.not.exist/doireallyexist.html"); 213231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 214f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop); 215231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 216231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_run(loop); 217f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 218f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (waitTimer) 219f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_source_remove(waitTimer); 220f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 221f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch waitTimer = 0; 222f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 223f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_main_loop_unref(loop); 224231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_unref(view); 225231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 226231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 227231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockint main(int argc, char** argv) 228231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 229231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_thread_init(NULL); 230231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gtk_test_init(&argc, &argv, NULL); 231231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 232231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_bug_base("https://bugs.webkit.org/"); 233231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_bug("24758"); 234231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_add_func("/webkit/webdatasource/get_initial_request", 235231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block test_webkit_web_data_source_get_initial_request); 236231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_add_func("/webkit/webdatasource/api", 237231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block test_webkit_web_data_source); 238231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_add_func("/webkit/webdatasource/unreachable_uri", 239231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block test_webkit_web_data_source_unreachable_uri); 240f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_test_add_func("/webkit/webdatasource/lifetime", 241f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch test_webkit_web_data_source_lifetime); 242f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 243231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return g_test_run (); 244231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 245231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 246231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#else 247231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockint main(int argc, char** argv) 248231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 249f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); 250231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return 0; 251231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 252231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 253231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 254