10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2009, 2010 Gustavo Noronha Silva 3231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Igalia S.L. 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * This library is free software; you can redistribute it and/or 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modify it under the terms of the GNU Library General Public 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * License as published by the Free Software Foundation; either 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * version 2 of the License, or (at your option) any later version. 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * This library is distributed in the hope that it will be useful, 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Library General Public License for more details. 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * You should have received a copy of the GNU Library General Public License 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Boston, MA 02110-1301, USA. 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <gtk/gtk.h> 22d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <libsoup/soup.h> 23d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <string.h> 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <webkit/webkit.h> 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if GTK_CHECK_VERSION(2, 14, 0) 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28d0825bca7fe65beaee391d30da42e937db621564Steve Block/* This string has to be rather big because of the cancelled test - it 29d0825bca7fe65beaee391d30da42e937db621564Steve Block * looks like soup refuses to send or receive a too small chunk */ 30d0825bca7fe65beaee391d30da42e937db621564Steve Block#define HTML_STRING "<html><body>Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!</body></html>" 31d0825bca7fe65beaee391d30da42e937db621564Steve Block 32d0825bca7fe65beaee391d30da42e937db621564Steve BlockSoupURI* base_uri; 33d0825bca7fe65beaee391d30da42e937db621564Steve Block 34d0825bca7fe65beaee391d30da42e937db621564Steve Block/* For real request testing */ 35d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void 36d0825bca7fe65beaee391d30da42e937db621564Steve Blockserver_callback(SoupServer* server, SoupMessage* msg, 37d0825bca7fe65beaee391d30da42e937db621564Steve Block const char* path, GHashTable* query, 38d0825bca7fe65beaee391d30da42e937db621564Steve Block SoupClientContext* context, gpointer data) 39d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 40d0825bca7fe65beaee391d30da42e937db621564Steve Block if (msg->method != SOUP_METHOD_GET) { 41d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED); 42d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 43d0825bca7fe65beaee391d30da42e937db621564Steve Block } 44d0825bca7fe65beaee391d30da42e937db621564Steve Block 45d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_set_status(msg, SOUP_STATUS_OK); 46d0825bca7fe65beaee391d30da42e937db621564Steve Block 47d0825bca7fe65beaee391d30da42e937db621564Steve Block if (g_str_equal(path, "/test_loading_status") || g_str_equal(path, "/test_loading_status2")) 48d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING)); 49d0825bca7fe65beaee391d30da42e937db621564Steve Block else if (g_str_equal(path, "/test_load_error")) { 50d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_set_status(msg, SOUP_STATUS_CANT_CONNECT); 51d0825bca7fe65beaee391d30da42e937db621564Steve Block } else if (g_str_equal(path, "/test_loading_cancelled")) { 52d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_headers_set_encoding(msg->response_headers, SOUP_ENCODING_CHUNKED); 53d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING)); 54d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_server_unpause_message(server, msg); 55d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 56d0825bca7fe65beaee391d30da42e937db621564Steve Block } 57d0825bca7fe65beaee391d30da42e937db621564Steve Block 58d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_message_body_complete(msg->response_body); 59d0825bca7fe65beaee391d30da42e937db621564Steve Block} 60d0825bca7fe65beaee391d30da42e937db621564Steve Block 61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocktypedef struct { 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitWebView* webView; 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block GMainLoop *loop; 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gboolean has_been_provisional; 65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gboolean has_been_committed; 66231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gboolean has_been_first_visually_non_empty_layout; 67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gboolean has_been_finished; 68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gboolean has_been_failed; 69231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gboolean has_been_load_error; 70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} WebLoadingFixture; 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void web_loading_fixture_setup(WebLoadingFixture* fixture, gconstpointer data) 73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->loop = g_main_loop_new(NULL, TRUE); 76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_ref_sink(fixture->webView); 77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_provisional = FALSE; 78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_committed = FALSE; 79231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_first_visually_non_empty_layout = FALSE; 80231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_finished = FALSE; 81231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_failed = FALSE; 82231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_load_error = FALSE; 83231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 85231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void web_loading_fixture_teardown(WebLoadingFixture* fixture, gconstpointer data) 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 87231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_unref(fixture->webView); 88231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_unref(fixture->loop); 89231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 91d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic char* get_uri_for_path(const char* path) 92d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 93d0825bca7fe65beaee391d30da42e937db621564Steve Block SoupURI* uri; 94d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string; 95d0825bca7fe65beaee391d30da42e937db621564Steve Block 96d0825bca7fe65beaee391d30da42e937db621564Steve Block uri = soup_uri_new_with_base(base_uri, path); 97d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = soup_uri_to_string(uri, FALSE); 98d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_uri_free (uri); 99d0825bca7fe65beaee391d30da42e937db621564Steve Block 100d0825bca7fe65beaee391d30da42e937db621564Steve Block return uri_string; 101d0825bca7fe65beaee391d30da42e937db621564Steve Block} 102d0825bca7fe65beaee391d30da42e937db621564Steve Block 103231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void load_finished_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebLoadingFixture* fixture) 104231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 105231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 106231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_committed); 107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_first_visually_non_empty_layout); 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_quit(fixture->loop); 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 113231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch switch (status) { 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case WEBKIT_LOAD_PROVISIONAL: 119231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_provisional); 120231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_committed); 121231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_first_visually_non_empty_layout); 122231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_provisional = TRUE; 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case WEBKIT_LOAD_COMMITTED: 125231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 126231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_committed); 127231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_first_visually_non_empty_layout); 128231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_committed = TRUE; 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT: 131231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 132231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_committed); 133231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_first_visually_non_empty_layout); 134231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_first_visually_non_empty_layout = TRUE; 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case WEBKIT_LOAD_FINISHED: 137231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 138231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_committed); 139231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_first_visually_non_empty_layout); 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch default: 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_assert_not_reached(); 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 146231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void test_loading_status(WebLoadingFixture* fixture, gconstpointer data) 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 148d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string; 149d0825bca7fe65beaee391d30da42e937db621564Steve Block 150231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert_cmpint(webkit_web_view_get_load_status(fixture->webView), ==, WEBKIT_LOAD_PROVISIONAL); 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 152231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_object_connect(G_OBJECT(fixture->webView), 153231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block "signal::notify::load-status", G_CALLBACK(status_changed_cb), fixture, 154231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block "signal::load-finished", G_CALLBACK(load_finished_cb), fixture, 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NULL); 1560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 157d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = get_uri_for_path("/test_loading_status"); 158d0825bca7fe65beaee391d30da42e937db621564Steve Block 1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* load_uri will trigger the navigation-policy-decision-requested 1600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * signal emission; 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 162d0825bca7fe65beaee391d30da42e937db621564Steve Block webkit_web_view_load_uri(fixture->webView, uri_string); 163d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string); 164231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 165231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_run(fixture->loop); 166231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 167231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 168231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void load_error_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) 169231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 170231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); 171231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 172231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block switch(status) { 173231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_PROVISIONAL: 174d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(!fixture->has_been_provisional); 175231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_provisional = TRUE; 176231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 177d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_COMMITTED: 178d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(!fixture->has_been_committed); 179d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_committed = TRUE; 180d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 181231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_FINISHED: 182231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 183231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_load_error); 184231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_failed); 185231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_finished); 186231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_finished = TRUE; 187231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 188231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_FAILED: 189231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_failed); 190231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_failed = TRUE; 191d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_quit(fixture->loop); 192231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 193231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block default: 194231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 195231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 196231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 197231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 198231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic gboolean load_error_cb(WebKitWebView* webView, WebKitWebFrame* frame, const char* uri, GError *error, WebLoadingFixture* fixture) 199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 201231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_load_error); 202231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_load_error = TRUE; 203231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 204231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return FALSE; 205231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 206231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 207231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void test_loading_error(WebLoadingFixture* fixture, gconstpointer data) 208231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 209d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string; 210d0825bca7fe65beaee391d30da42e937db621564Steve Block 211231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_bug("28842"); 212231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 213231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_error_cb), fixture); 214231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_error_status_changed_cb), fixture); 215231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 216d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = get_uri_for_path("/test_load_error"); 217d0825bca7fe65beaee391d30da42e937db621564Steve Block webkit_web_view_load_uri(fixture->webView, uri_string); 218d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string); 219d0825bca7fe65beaee391d30da42e937db621564Steve Block 220231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_run(fixture->loop); 221d0825bca7fe65beaee391d30da42e937db621564Steve Block 222d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(fixture->has_been_provisional); 223d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(!fixture->has_been_committed); 224d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(fixture->has_been_load_error); 225d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(fixture->has_been_failed); 226d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(!fixture->has_been_finished); 227231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 228231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 229231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/* Cancelled load */ 230231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 231231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic gboolean load_cancelled_cb(WebKitWebView* webView, WebKitWebFrame* frame, const char* uri, GError *error, WebLoadingFixture* fixture) 232231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 233231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 234231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_failed); 235231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_load_error); 236231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(error->code == WEBKIT_NETWORK_ERROR_CANCELLED); 237231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_load_error = TRUE; 238231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 239231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return TRUE; 240231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 241231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 242231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic gboolean stop_load (gpointer data) 243231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 244231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(data)); 245231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return FALSE; 246231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 247231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 248231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void load_cancelled_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) 249231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 250231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); 251231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 252231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block switch(status) { 253231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_PROVISIONAL: 254231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_provisional); 255231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_failed); 256231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_provisional = TRUE; 257231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 258231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_COMMITTED: 259231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_idle_add (stop_load, object); 260231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 261231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_FAILED: 262231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(fixture->has_been_provisional); 263231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_failed); 264231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert(!fixture->has_been_load_error); 265231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block fixture->has_been_failed = TRUE; 266231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_quit(fixture->loop); 267231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 268231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block case WEBKIT_LOAD_FINISHED: 269231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_assert_not_reached(); 270231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 271231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block default: 272231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block break; 273231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 274231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 275231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 276231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void test_loading_cancelled(WebLoadingFixture* fixture, gconstpointer data) 277231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 278d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string; 279d0825bca7fe65beaee391d30da42e937db621564Steve Block 280231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_bug("29644"); 2810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 282231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_cancelled_cb), fixture); 283231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_cancelled_status_changed_cb), fixture); 2840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 285d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = get_uri_for_path("/test_loading_cancelled"); 286d0825bca7fe65beaee391d30da42e937db621564Steve Block webkit_web_view_load_uri(fixture->webView, uri_string); 287d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string); 288d0825bca7fe65beaee391d30da42e937db621564Steve Block 289231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_main_loop_run(fixture->loop); 2900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 292d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void load_goback_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) 293d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 294d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); 295d0825bca7fe65beaee391d30da42e937db621564Steve Block 296d0825bca7fe65beaee391d30da42e937db621564Steve Block switch(status) { 297d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_PROVISIONAL: 298d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(!fixture->has_been_provisional); 299d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_provisional = TRUE; 300d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 301d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_COMMITTED: 302d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(fixture->has_been_provisional); 303d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_committed = TRUE; 304d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 305d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_FAILED: 306d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert_not_reached(); 307d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 308d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_FINISHED: 309d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(fixture->has_been_provisional); 310d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert(fixture->has_been_committed); 311d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_finished = TRUE; 312d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_quit(fixture->loop); 313d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 314d0825bca7fe65beaee391d30da42e937db621564Steve Block default: 315d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 316d0825bca7fe65beaee391d30da42e937db621564Steve Block } 317d0825bca7fe65beaee391d30da42e937db621564Steve Block} 318d0825bca7fe65beaee391d30da42e937db621564Steve Block 319d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void load_wentback_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) 320d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 321d0825bca7fe65beaee391d30da42e937db621564Steve Block WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); 322d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string; 323d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string2; 324d0825bca7fe65beaee391d30da42e937db621564Steve Block 325d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = get_uri_for_path("/test_loading_status"); 326d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string2 = get_uri_for_path("/test_loading_status2"); 327d0825bca7fe65beaee391d30da42e937db621564Steve Block 328d0825bca7fe65beaee391d30da42e937db621564Steve Block switch(status) { 329d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_PROVISIONAL: 330d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string2); 331d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 332d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_COMMITTED: 333d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string); 334d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 335d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_FAILED: 336d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert_not_reached(); 337d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 338d0825bca7fe65beaee391d30da42e937db621564Steve Block case WEBKIT_LOAD_FINISHED: 339d0825bca7fe65beaee391d30da42e937db621564Steve Block g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string); 340d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_quit(fixture->loop); 341d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 342d0825bca7fe65beaee391d30da42e937db621564Steve Block default: 343d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 344d0825bca7fe65beaee391d30da42e937db621564Steve Block } 345d0825bca7fe65beaee391d30da42e937db621564Steve Block 346d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string); 347d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string2); 348d0825bca7fe65beaee391d30da42e937db621564Steve Block} 349d0825bca7fe65beaee391d30da42e937db621564Steve Block 350d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void load_error_test(WebKitWebView* webview, WebKitWebFrame* frame, const char* uri, GError* error) 351d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 352d0825bca7fe65beaee391d30da42e937db621564Steve Block g_debug("Error: %s", error->message); 353d0825bca7fe65beaee391d30da42e937db621564Steve Block} 354d0825bca7fe65beaee391d30da42e937db621564Steve Block 355d0825bca7fe65beaee391d30da42e937db621564Steve Blockstatic void test_loading_goback(WebLoadingFixture* fixture, gconstpointer data) 356d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 357d0825bca7fe65beaee391d30da42e937db621564Steve Block char* uri_string; 358d0825bca7fe65beaee391d30da42e937db621564Steve Block 359d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_goback_status_changed_cb), fixture); 360d0825bca7fe65beaee391d30da42e937db621564Steve Block 361d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_error_test), fixture); 362d0825bca7fe65beaee391d30da42e937db621564Steve Block 363d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = get_uri_for_path("/test_loading_status"); 364d0825bca7fe65beaee391d30da42e937db621564Steve Block webkit_web_view_load_uri(fixture->webView, uri_string); 365d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string); 366d0825bca7fe65beaee391d30da42e937db621564Steve Block 367d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_run(fixture->loop); 368d0825bca7fe65beaee391d30da42e937db621564Steve Block 369d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_provisional = FALSE; 370d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_committed = FALSE; 371d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_first_visually_non_empty_layout = FALSE; 372d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_finished = FALSE; 373d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_failed = FALSE; 374d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_load_error = FALSE; 375d0825bca7fe65beaee391d30da42e937db621564Steve Block 376d0825bca7fe65beaee391d30da42e937db621564Steve Block uri_string = get_uri_for_path("/test_loading_status2"); 377d0825bca7fe65beaee391d30da42e937db621564Steve Block webkit_web_view_load_uri(fixture->webView, uri_string); 378d0825bca7fe65beaee391d30da42e937db621564Steve Block g_free(uri_string); 379d0825bca7fe65beaee391d30da42e937db621564Steve Block 380d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_run(fixture->loop); 381d0825bca7fe65beaee391d30da42e937db621564Steve Block 382d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_handlers_disconnect_by_func(fixture->webView, load_goback_status_changed_cb, fixture); 383d0825bca7fe65beaee391d30da42e937db621564Steve Block 384d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_provisional = FALSE; 385d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_committed = FALSE; 386d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_first_visually_non_empty_layout = FALSE; 387d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_finished = FALSE; 388d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_failed = FALSE; 389d0825bca7fe65beaee391d30da42e937db621564Steve Block fixture->has_been_load_error = FALSE; 390d0825bca7fe65beaee391d30da42e937db621564Steve Block 391d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_wentback_status_changed_cb), fixture); 392d0825bca7fe65beaee391d30da42e937db621564Steve Block webkit_web_view_go_back(fixture->webView); 393d0825bca7fe65beaee391d30da42e937db621564Steve Block 394d0825bca7fe65beaee391d30da42e937db621564Steve Block g_main_loop_run(fixture->loop); 395d0825bca7fe65beaee391d30da42e937db621564Steve Block 396d0825bca7fe65beaee391d30da42e937db621564Steve Block g_signal_handlers_disconnect_by_func(fixture->webView, load_wentback_status_changed_cb, fixture); 397d0825bca7fe65beaee391d30da42e937db621564Steve Block} 398d0825bca7fe65beaee391d30da42e937db621564Steve Block 3990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochint main(int argc, char** argv) 4000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 401d0825bca7fe65beaee391d30da42e937db621564Steve Block SoupServer* server; 402d0825bca7fe65beaee391d30da42e937db621564Steve Block 4030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_thread_init(NULL); 4040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gtk_test_init(&argc, &argv, NULL); 4050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 406d0825bca7fe65beaee391d30da42e937db621564Steve Block server = soup_server_new(SOUP_SERVER_PORT, 0, NULL); 407d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_server_run_async(server); 408d0825bca7fe65beaee391d30da42e937db621564Steve Block 409d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_server_add_handler(server, NULL, server_callback, NULL, NULL); 410d0825bca7fe65beaee391d30da42e937db621564Steve Block 411d0825bca7fe65beaee391d30da42e937db621564Steve Block base_uri = soup_uri_new("http://127.0.0.1/"); 412d0825bca7fe65beaee391d30da42e937db621564Steve Block soup_uri_set_port(base_uri, soup_server_get_port(server)); 413d0825bca7fe65beaee391d30da42e937db621564Steve Block 4140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_test_bug_base("https://bugs.webkit.org/"); 415231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_add("/webkit/loading/status", 416231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebLoadingFixture, NULL, 417231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block web_loading_fixture_setup, 418231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block test_loading_status, 419231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block web_loading_fixture_teardown); 420231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_add("/webkit/loading/error", 421231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebLoadingFixture, NULL, 422231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block web_loading_fixture_setup, 423231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block test_loading_error, 424231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block web_loading_fixture_teardown); 425231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_test_add("/webkit/loading/cancelled", 426231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebLoadingFixture, NULL, 427231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block web_loading_fixture_setup, 428231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block test_loading_cancelled, 429231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block web_loading_fixture_teardown); 430d0825bca7fe65beaee391d30da42e937db621564Steve Block g_test_add("/webkit/loading/goback", 431d0825bca7fe65beaee391d30da42e937db621564Steve Block WebLoadingFixture, NULL, 432d0825bca7fe65beaee391d30da42e937db621564Steve Block web_loading_fixture_setup, 433d0825bca7fe65beaee391d30da42e937db621564Steve Block test_loading_goback, 434d0825bca7fe65beaee391d30da42e937db621564Steve Block web_loading_fixture_teardown); 4350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return g_test_run(); 4360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#else 4390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochint main(int argc, char** argv) 4400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 441f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); 4420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return 0; 4430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 446