diff options
author | Martin Robinson <mrobinson@igalia.com> | 2012-08-14 00:44:17 +0800 |
---|---|---|
committer | Martin Robinson <mrobinson@igalia.com> | 2012-08-14 01:48:42 +0800 |
commit | 1a2bf54a1f7a949491a8cb5b7beff27eb550100d (patch) | |
tree | 71a75c6550d5028fc57c2896d39e587a41d7b6ed /tests | |
parent | 7316adc19cc50bde288bbb8a4007dc0d6a9bd078 (diff) | |
download | gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.tar gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.tar.gz gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.tar.bz2 gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.tar.lz gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.tar.xz gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.tar.zst gsoc2013-epiphany-1a2bf54a1f7a949491a8cb5b7beff27eb550100d.zip |
Use webkit_web_frame_load_alternate_string to load error pages
webkit_web_view_load_string, which was used previously, does not add
the error page to the back forward list. This means that when you
go back from an error page (n) you will skip directly to an older page
(n-2) or not be able to go back if the error page was the first loaded.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ephy-web-view-test.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/ephy-web-view-test.c b/tests/ephy-web-view-test.c index 815dd629d..78a2eb575 100644 --- a/tests/ephy-web-view-test.c +++ b/tests/ephy-web-view-test.c @@ -315,6 +315,76 @@ test_ephy_web_view_normalize_or_autosearch () g_object_unref (g_object_ref_sink (view)); } +#ifdef HAVE_WEBKIT2 +static void +quit_main_loop_when_load_finished (WebKitWebView *view, WebKitLoadEvent load_event, GMainLoop *loop) +{ + if (load_event != WEBKIT_LOAD_FINISHED) + return; + + g_main_loop_quit (loop); + g_signal_handlers_disconnect_by_func (view, quit_main_loop_when_load_finished, NULL); +} +#else +static void +quit_main_loop_when_load_finished (WebKitWebView *view, GParamSpec *spec, GMainLoop *loop) +{ + WebKitLoadStatus status; + + status = webkit_web_view_get_load_status (view); + + if (status != WEBKIT_LOAD_FINISHED) + return; + + g_main_loop_quit (loop); + g_signal_handlers_disconnect_by_func (view, quit_main_loop_when_load_finished, loop); + +} +#endif + +static void +test_ephy_web_view_provisional_load_failure_updates_back_forward_list () +{ + GMainLoop *loop; + EphyWebView *view; + const char *bad_url; + + view = EPHY_WEB_VIEW (ephy_web_view_new ()); + loop = g_main_loop_new (NULL, FALSE); + bad_url = "http://localhost:2984375932/"; + + ephy_web_view_load_url (view, bad_url); + +#ifdef HAVE_WEBKIT2 + g_signal_connect (view, "load-changed", + G_CALLBACK (quit_main_loop_when_load_finished), loop); +#else + g_signal_connect (view, "notify::load-status", + G_CALLBACK (quit_main_loop_when_load_finished), loop); +#endif + + g_main_loop_run (loop); + g_main_loop_unref (loop); + +#ifdef HAVE_WEBKIT2 + g_assert (webkit_back_forward_list_get_current_item ( + webkit_web_view_get_back_forward_list (WEBKIT_WEB_VIEW (view)))); + + g_assert_cmpstr (bad_url, ==, webkit_back_forward_list_item_get_uri ( + webkit_back_forward_list_get_current_item ( + webkit_web_view_get_back_forward_list (WEBKIT_WEB_VIEW (view))))); +#else + g_assert (webkit_web_back_forward_list_get_current_item ( + webkit_web_view_get_back_forward_list (WEBKIT_WEB_VIEW (view)))); + + g_assert_cmpstr (bad_url, ==, webkit_web_history_item_get_uri ( + webkit_web_back_forward_list_get_current_item ( + webkit_web_view_get_back_forward_list (WEBKIT_WEB_VIEW (view))))); +#endif + + g_object_unref (g_object_ref_sink (view)); +} + int main (int argc, char *argv[]) { @@ -348,6 +418,9 @@ main (int argc, char *argv[]) g_test_add_func ("/embed/ephy-web-view/load_url", test_ephy_web_view_load_url); + g_test_add_func ("/embed/ephy-web-view/provisional_load_failure_updates_back_forward_list", + test_ephy_web_view_provisional_load_failure_updates_back_forward_list); + ret = g_test_run (); g_object_unref (server); |