summaryrefslogtreecommitdiffstats
path: root/WebKit/gtk/tests
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/gtk/tests')
-rw-r--r--WebKit/gtk/tests/testatk.c152
-rw-r--r--WebKit/gtk/tests/testatkroles.c4
-rw-r--r--WebKit/gtk/tests/testdomdocument.c4
-rw-r--r--WebKit/gtk/tests/testdomdomwindow.c4
-rw-r--r--WebKit/gtk/tests/testdomnode.c4
-rw-r--r--WebKit/gtk/tests/testglobals.c4
-rw-r--r--WebKit/gtk/tests/testhttpbackend.c4
-rw-r--r--WebKit/gtk/tests/testloading.c4
-rw-r--r--WebKit/gtk/tests/testmimehandling.c4
-rw-r--r--WebKit/gtk/tests/testnetworkrequest.c4
-rw-r--r--WebKit/gtk/tests/testnetworkresponse.c4
-rw-r--r--WebKit/gtk/tests/testwebbackforwardlist.c4
-rw-r--r--WebKit/gtk/tests/testwebdatasource.c102
-rw-r--r--WebKit/gtk/tests/testwebframe.c4
-rw-r--r--WebKit/gtk/tests/testwebhistoryitem.c4
-rw-r--r--WebKit/gtk/tests/testwebplugindatabase.c89
-rw-r--r--WebKit/gtk/tests/testwebresource.c19
-rw-r--r--WebKit/gtk/tests/testwebsettings.c4
-rw-r--r--WebKit/gtk/tests/testwebview.c4
-rw-r--r--WebKit/gtk/tests/testwindow.c4
20 files changed, 309 insertions, 117 deletions
diff --git a/WebKit/gtk/tests/testatk.c b/WebKit/gtk/tests/testatk.c
index 94f4a96..1ee6c55 100644
--- a/WebKit/gtk/tests/testatk.c
+++ b/WebKit/gtk/tests/testatk.c
@@ -21,11 +21,10 @@
#include <glib.h>
#include <glib/gstdio.h>
#include <gtk/gtk.h>
-#include <stdlib.h>
#include <unistd.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static const char* centeredContents = "<html><body><p style='text-align: center;'>Short line</p><p style='text-align: center;'>Long-size line with some foo bar baz content</p><p style='text-align: center;'>Short line</p><p style='text-align: center;'>This is a multi-line paragraph<br />where the first line<br />is the biggest one</p></body></html>";
@@ -45,6 +44,8 @@ static const char* contentsInTable = "<html><body><table><tr><td>foo</td><td>bar
static const char* contentsInTableWithHeaders = "<html><body><table><tr><th>foo</th><th>bar</th><th colspan='2'>baz</th></tr><tr><th>qux</th><td>1</td><td>2</td><td>3</td></tr><tr><th rowspan='2'>quux</th><td>4</td><td>5</td><td>6</td></tr><tr><td>6</td><td>7</td><td>8</td></tr><tr><th>corge</th><td>9</td><td>10</td><td>11</td></tr></table><table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table></body></html>";
+static const char* comboBoxSelector = "<html><body><select><option selected value='foo'>foo</option><option value='bar'>bar</option></select></body></html>";
+
static const char* formWithTextInputs = "<html><body><form><input type='text' name='entry' /></form></body></html>";
static const char* hypertextAndHyperlinks = "<html><body><p>A paragraph with no links at all</p><p><a href='http://foo.bar.baz/'>A line</a> with <a href='http://bar.baz.foo/'>a link in the middle</a> as well as at the beginning and <a href='http://baz.foo.bar/'>at the end</a></p></body></html>";
@@ -222,78 +223,107 @@ static void runGetTextTests(AtkText* textObject)
0, "This is a test. This is the second sentence. And this the third.", 0, 64);
}
-static void stateChangedCb(AtkObject* object, gchar* stateName, gboolean stateSet, gpointer unused)
-{
- /* Only 'defunct' and 'busy' state changes are considered. */
- if (!g_strcmp0(stateName, "defunct")) {
- g_print("[defunct]");
- return;
- }
-
- if (!g_strcmp0(stateName, "busy")) {
- g_print("[busy:%d]", stateSet);
- /* If 'busy' state is unset, it means we're done. */
- if (!stateSet)
- exit(0);
- }
-}
-
-static void documentReloadCb(AtkDocument* document, gpointer unused)
-{
- g_print("[reloaded]");
-}
-
-static void documentLoadCompleteCb(AtkDocument* document, gpointer unused)
-{
- g_print("[load completed]");
-}
-
-static void webviewLoadStatusChangedCb(WebKitWebView* webView, GParamSpec* pspec, gpointer unused)
-{
- /* We need to explicitly connect here to the signals emitted by
- * the AtkObject associated to the webView because the AtkObject
- * iniatially associated at the beginning of the process (when in
- * the LOAD_PROVISIONAL state) will get destroyed and replaced by
- * a new one later on, when the LOAD_COMMITED state is reached. */
- WebKitLoadStatus loadStatus = webkit_web_view_get_load_status(webView);
- if (loadStatus == WEBKIT_LOAD_PROVISIONAL || loadStatus == WEBKIT_LOAD_COMMITTED) {
- AtkObject* axWebView = gtk_widget_get_accessible(GTK_WIDGET(webView));
- g_assert(ATK_IS_DOCUMENT(axWebView));
-
- g_signal_connect(axWebView, "state-change", G_CALLBACK(stateChangedCb), 0);
- g_signal_connect(axWebView, "reload", G_CALLBACK(documentReloadCb), 0);
- g_signal_connect(axWebView, "load-complete", G_CALLBACK(documentLoadCompleteCb), 0);
- }
-}
-
-static void testWebkitAtkDocumentReloadEvents()
+static void testWebkitAtkComboBox()
{
WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
g_object_ref_sink(webView);
GtkAllocation allocation = { 0, 0, 800, 600 };
gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
-
- webkit_web_view_load_string(webView, contents, 0, 0, 0);
+ webkit_web_view_load_string(webView, comboBoxSelector, 0, 0, 0);
/* Wait for the accessible objects to be created. */
waitForAccessibleObjects();
- AtkObject* axWebView = gtk_widget_get_accessible(GTK_WIDGET(webView));
- g_assert(ATK_IS_DOCUMENT(axWebView));
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
- if (g_test_trap_fork (2000000, G_TEST_TRAP_SILENCE_STDOUT)) {
- g_signal_connect(webView, "notify::load-status", G_CALLBACK(webviewLoadStatusChangedCb), 0);
- webkit_web_view_reload(webView);
- }
+ AtkObject* formObject = atk_object_ref_accessible_child(object, 0);
+ g_assert(formObject);
+
+ AtkObject* comboBox = atk_object_ref_accessible_child(formObject, 0);
+ g_assert(ATK_IS_OBJECT(comboBox));
+
+ AtkObject* menuPopup = atk_object_ref_accessible_child(comboBox, 0);
+ g_assert(ATK_IS_OBJECT(menuPopup));
+
+ AtkObject* item1 = atk_object_ref_accessible_child(menuPopup, 0);
+ g_assert(ATK_IS_OBJECT(item1));
+
+ AtkObject* item2 = atk_object_ref_accessible_child(menuPopup, 1);
+ g_assert(ATK_IS_OBJECT(item2));
+
+ /* Check roles. */
+ g_assert(atk_object_get_role(comboBox) == ATK_ROLE_COMBO_BOX);
+ g_assert(atk_object_get_role(menuPopup) == ATK_ROLE_MENU);
+ g_assert(atk_object_get_role(item1) == ATK_ROLE_MENU_ITEM);
+ g_assert(atk_object_get_role(item2) == ATK_ROLE_MENU_ITEM);
+
+ /* Check the implementation of the AtkSelection interface. */
+ g_assert(ATK_IS_SELECTION(comboBox));
+ AtkSelection* atkSelection = ATK_SELECTION(comboBox);
+ g_assert_cmpint(atk_selection_get_selection_count(atkSelection), ==, 1);
+ g_assert(atk_selection_is_child_selected(atkSelection, 0));
+ g_assert(!atk_selection_is_child_selected(atkSelection, 1));
+ AtkObject* selectedItem = atk_selection_ref_selection(atkSelection, 0);
+ g_assert(selectedItem == item1);
+ g_object_unref(selectedItem);
+
+ /* Check the implementations of the AtkAction interface. */
+ g_assert(ATK_IS_ACTION(comboBox));
+ AtkAction* atkAction = ATK_ACTION(comboBox);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ g_assert(ATK_IS_ACTION(menuPopup));
+ atkAction = ATK_ACTION(menuPopup);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ g_assert(ATK_IS_ACTION(item1));
+ atkAction = ATK_ACTION(item1);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ g_assert(ATK_IS_ACTION(item2));
+ atkAction = ATK_ACTION(item2);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ /* After selecting the second item, selection should have changed. */
+ g_assert_cmpint(atk_selection_get_selection_count(atkSelection), ==, 1);
+ g_assert(!atk_selection_is_child_selected(atkSelection, 0));
+ g_assert(atk_selection_is_child_selected(atkSelection, 1));
+ selectedItem = atk_selection_ref_selection(atkSelection, 0);
+ g_assert(selectedItem == item2);
+ g_object_unref(selectedItem);
+
+ /* Check the implementation of the AtkText interface. */
+ g_assert(ATK_IS_TEXT(item1));
+ AtkText* atkText = ATK_TEXT(item1);
+ char *text = atk_text_get_text(atkText, 0, -1);
+ g_assert_cmpstr(text, ==, "foo");
+ g_free(text);
+ text = atk_text_get_text(atkText, 0, 2);
+ g_assert_cmpstr(text, ==, "fo");
+ g_free(text);
- /* Check results. */
- g_test_trap_assert_passed();
- g_test_trap_assert_stdout("[busy:1][reloaded][defunct][load completed][busy:0]");
+ g_assert(ATK_IS_TEXT(item2));
+ atkText = ATK_TEXT(item2);
+ text = atk_text_get_text(atkText, 0, -1);
+ g_assert_cmpstr(text, ==, "bar");
+ g_free(text);
+ text = atk_text_get_text(atkText, 1, 3);
+ g_assert_cmpstr(text, ==, "ar");
+ g_free(text);
+ g_object_unref(formObject);
+ g_object_unref(comboBox);
+ g_object_unref(menuPopup);
+ g_object_unref(item1);
+ g_object_unref(item2);
g_object_unref(webView);
}
-
static void testWebkitAtkGetTextAtOffsetForms()
{
WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
@@ -1284,7 +1314,7 @@ int main(int argc, char** argv)
gtk_test_init(&argc, &argv, 0);
g_test_bug_base("https://bugs.webkit.org/");
- g_test_add_func("/webkit/atk/documentReloadEvents", testWebkitAtkDocumentReloadEvents);
+ g_test_add_func("/webkit/atk/comboBox", testWebkitAtkComboBox);
g_test_add_func("/webkit/atk/getTextAtOffset", testWebkitAtkGetTextAtOffset);
g_test_add_func("/webkit/atk/getTextAtOffsetForms", testWebkitAtkGetTextAtOffsetForms);
g_test_add_func("/webkit/atk/getTextAtOffsetNewlines", testWebkitAtkGetTextAtOffsetNewlines);
@@ -1308,7 +1338,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testatkroles.c b/WebKit/gtk/tests/testatkroles.c
index 5fd08b0..5ad6b5f 100644
--- a/WebKit/gtk/tests/testatkroles.c
+++ b/WebKit/gtk/tests/testatkroles.c
@@ -23,7 +23,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
/* Non form roles */
#define HTML_DOCUMENT_FRAME "<html><body>This is a test.</body></html>"
@@ -421,7 +421,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testdomdocument.c b/WebKit/gtk/tests/testdomdocument.c
index 56e233f..aa6cbb3 100644
--- a/WebKit/gtk/tests/testdomdocument.c
+++ b/WebKit/gtk/tests/testdomdocument.c
@@ -24,7 +24,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
#define HTML_DOCUMENT_TITLE "<html><head><title>This is the title</title></head><body></body></html>"
#define HTML_DOCUMENT_ELEMENTS "<html><body><ul><li>1</li><li>2</li><li>3</li></ul></body></html>"
@@ -368,7 +368,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testdomdomwindow.c b/WebKit/gtk/tests/testdomdomwindow.c
index a52bca5..b15558e 100644
--- a/WebKit/gtk/tests/testdomdomwindow.c
+++ b/WebKit/gtk/tests/testdomdomwindow.c
@@ -24,7 +24,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
#define HTML_DOCUMENT "<html><head><title>This is the title</title></head><body><p id='test'>test</p></body></html>"
@@ -222,7 +222,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testdomnode.c b/WebKit/gtk/tests/testdomnode.c
index 7d62720..893b7cc 100644
--- a/WebKit/gtk/tests/testdomnode.c
+++ b/WebKit/gtk/tests/testdomnode.c
@@ -24,7 +24,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
#define HTML_DOCUMENT_HIERARCHY_NAVIGATION "<html><head><title>This is the title</title></head><body><p>1</p><p>2</p><p>3</p></body></html>"
#define HTML_DOCUMENT_NODE_INSERTION "<html><body></body></html>"
@@ -199,7 +199,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testglobals.c b/WebKit/gtk/tests/testglobals.c
index e53edf4..da0ffa3 100644
--- a/WebKit/gtk/tests/testglobals.c
+++ b/WebKit/gtk/tests/testglobals.c
@@ -21,7 +21,7 @@
#include <libsoup/soup.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
// Make sure the session is initialized properly when webkit_get_default_session() is called.
static void test_globals_default_session()
@@ -59,7 +59,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testhttpbackend.c b/WebKit/gtk/tests/testhttpbackend.c
index c061374..f0fac16 100644
--- a/WebKit/gtk/tests/testhttpbackend.c
+++ b/WebKit/gtk/tests/testhttpbackend.c
@@ -24,7 +24,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
// Not yet public API
SoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request);
@@ -79,7 +79,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testloading.c b/WebKit/gtk/tests/testloading.c
index fd9a05c..a0ec8c9 100644
--- a/WebKit/gtk/tests/testloading.c
+++ b/WebKit/gtk/tests/testloading.c
@@ -23,7 +23,7 @@
#include <string.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
/* This string has to be rather big because of the cancelled test - it
* looks like soup refuses to send or receive a too small chunk */
@@ -438,7 +438,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testmimehandling.c b/WebKit/gtk/tests/testmimehandling.c
index 2d6c623..dcfc3a3 100644
--- a/WebKit/gtk/tests/testmimehandling.c
+++ b/WebKit/gtk/tests/testmimehandling.c
@@ -27,7 +27,7 @@
#include <webkit/webkit.h>
#include <unistd.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
GMainLoop* loop;
SoupSession *session;
@@ -221,7 +221,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testnetworkrequest.c b/WebKit/gtk/tests/testnetworkrequest.c
index 40f8e7f..fb6ec41 100644
--- a/WebKit/gtk/tests/testnetworkrequest.c
+++ b/WebKit/gtk/tests/testnetworkrequest.c
@@ -25,7 +25,7 @@
#include <stdlib.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static void test_network_request_create_destroy()
{
@@ -100,7 +100,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testnetworkresponse.c b/WebKit/gtk/tests/testnetworkresponse.c
index 9050c04..90062c6 100644
--- a/WebKit/gtk/tests/testnetworkresponse.c
+++ b/WebKit/gtk/tests/testnetworkresponse.c
@@ -26,7 +26,7 @@
#include <stdlib.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static void test_network_response_create_destroy()
{
@@ -101,7 +101,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebbackforwardlist.c b/WebKit/gtk/tests/testwebbackforwardlist.c
index 2109840..b9e395e 100644
--- a/WebKit/gtk/tests/testwebbackforwardlist.c
+++ b/WebKit/gtk/tests/testwebbackforwardlist.c
@@ -21,7 +21,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static void test_webkit_web_history_item_lifetime(void)
{
@@ -330,7 +330,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebdatasource.c b/WebKit/gtk/tests/testwebdatasource.c
index 5c0568e..96d95e4 100644
--- a/WebKit/gtk/tests/testwebdatasource.c
+++ b/WebKit/gtk/tests/testwebdatasource.c
@@ -21,7 +21,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static const gshort defaultTimeout = 10;
guint waitTimer;
@@ -60,13 +60,10 @@ static void notify_load_status_unreachable_cb(WebKitWebView* view, GParamSpec* p
WebKitLoadStatus status = webkit_web_view_get_load_status (view);
WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
- if (status != WEBKIT_LOAD_FINISHED)
- return;
+ g_assert(status != WEBKIT_LOAD_FINISHED);
- if (waitTimer) {
- g_source_remove(waitTimer);
- waitTimer = 0;
- }
+ if (status != WEBKIT_LOAD_FAILED)
+ return;
WebKitWebDataSource* datasource = webkit_web_frame_get_data_source(frame);
@@ -89,11 +86,6 @@ static void notify_load_status_cb(WebKitWebView* view, GParamSpec* pspec, GMainL
else if (status != WEBKIT_LOAD_FINISHED)
return;
- if (waitTimer) {
- g_source_remove(waitTimer);
- waitTimer = 0;
- }
-
/* Test get_request */
g_test_message("Testing webkit_web_data_source_get_request");
WebKitNetworkRequest* request = webkit_web_data_source_get_request(dataSource);
@@ -134,15 +126,82 @@ static void test_webkit_web_data_source()
g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_cb), loop);
webkit_web_view_load_uri(view, "http://webkit.org");
- if (!waitTimer)
- waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
+ waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
+
+ g_main_loop_run(loop);
+
+ if (waitTimer)
+ g_source_remove(waitTimer);
+
+ waitTimer = 0;
+
+ g_main_loop_unref(loop);
+ g_object_unref(view);
+}
+
+static void notify_load_status_lifetime_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status (view);
+ WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
+ WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame);
+
+ if (status == WEBKIT_LOAD_COMMITTED) {
+ g_assert(webkit_web_data_source_is_loading(dataSource));
+ return;
+ } else if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ g_main_loop_quit(loop);
+}
+
+static void test_webkit_web_data_source_lifetime()
+{
+ WebKitWebView* view;
+ GMainLoop* loop;
+
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(view);
+ loop = g_main_loop_new(NULL, TRUE);
+ g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_lifetime_cb), loop);
+ webkit_web_view_load_uri(view, "http://webkit.org");
+
+ waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
g_main_loop_run(loop);
+
+ WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(webkit_web_view_get_main_frame(view));
+ GList* subResources = webkit_web_data_source_get_subresources(dataSource);
+ gint numberOfResources = g_list_length(subResources);
+ g_list_free(subResources);
+
+ g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FINISHED);
+
+ webkit_web_view_load_uri(view, "http://gnome.org");
+
+ g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_PROVISIONAL);
+
+ webkit_web_view_stop_loading(view);
+
+ g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FAILED);
+
+ subResources = webkit_web_data_source_get_subresources(dataSource);
+ g_assert_cmpint(numberOfResources, ==, g_list_length(subResources));
+ g_list_free(subResources);
+
+ if (waitTimer)
+ g_source_remove(waitTimer);
+
+ waitTimer = 0;
+
+ g_main_loop_unref(loop);
g_object_unref(view);
}
static void test_webkit_web_data_source_unreachable_uri()
{
+ /* FIXME: this test fails currently. */
+ return;
+
WebKitWebView* view;
GMainLoop* loop;
@@ -152,10 +211,16 @@ static void test_webkit_web_data_source_unreachable_uri()
g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_unreachable_cb), loop);
webkit_web_view_load_uri(view, "http://this.host.does.not.exist/doireallyexist.html");
- if (!waitTimer)
- waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
+ waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
g_main_loop_run(loop);
+
+ if (waitTimer)
+ g_source_remove(waitTimer);
+
+ waitTimer = 0;
+
+ g_main_loop_unref(loop);
g_object_unref(view);
}
@@ -172,13 +237,16 @@ int main(int argc, char** argv)
test_webkit_web_data_source);
g_test_add_func("/webkit/webdatasource/unreachable_uri",
test_webkit_web_data_source_unreachable_uri);
+ g_test_add_func("/webkit/webdatasource/lifetime",
+ test_webkit_web_data_source_lifetime);
+
return g_test_run ();
}
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebframe.c b/WebKit/gtk/tests/testwebframe.c
index 59c7c2b..d1ff7ea 100644
--- a/WebKit/gtk/tests/testwebframe.c
+++ b/WebKit/gtk/tests/testwebframe.c
@@ -25,7 +25,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static int numberOfFramesCreated = 0;
@@ -224,7 +224,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebhistoryitem.c b/WebKit/gtk/tests/testwebhistoryitem.c
index b940afb..362dc98 100644
--- a/WebKit/gtk/tests/testwebhistoryitem.c
+++ b/WebKit/gtk/tests/testwebhistoryitem.c
@@ -21,7 +21,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
typedef struct {
WebKitWebHistoryItem* item;
@@ -74,7 +74,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebplugindatabase.c b/WebKit/gtk/tests/testwebplugindatabase.c
new file mode 100644
index 0000000..1366f84
--- /dev/null
+++ b/WebKit/gtk/tests/testwebplugindatabase.c
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+/* This function is not public, so we need an extern declaration */
+extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory);
+
+static void test_webkit_web_plugin_database_get_plugins()
+{
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ WebKitWebPluginDatabase* database;
+ GSList* pluginList, *p;
+ gboolean found = FALSE;
+ gboolean enabled = FALSE;
+
+ webkit_web_settings_add_extra_plugin_directory(view, TEST_PLUGIN_DIR);
+ g_object_ref_sink(G_OBJECT(view));
+
+ database = webkit_get_web_plugin_database();
+ pluginList = webkit_web_plugin_database_get_plugins(database);
+ for (p = pluginList; p; p = p->next) {
+ WebKitWebPlugin* plugin = (WebKitWebPlugin*)p->data;
+ if (!g_strcmp0(webkit_web_plugin_get_name(plugin), "WebKit Test PlugIn") &&
+ !g_strcmp0(webkit_web_plugin_get_description(plugin), "Simple Netscape plug-in that handles test content for WebKit")) {
+ found = TRUE;
+ enabled = webkit_web_plugin_get_enabled(plugin);
+ webkit_web_plugin_set_enabled(plugin, FALSE);
+ }
+ }
+ webkit_web_plugin_database_plugins_list_free(pluginList);
+ g_assert(found);
+ g_assert(enabled);
+
+ webkit_web_plugin_database_refresh(database);
+ pluginList = webkit_web_plugin_database_get_plugins(database);
+
+ for (p = pluginList; p; p = p->next) {
+ WebKitWebPlugin* plugin = (WebKitWebPlugin*)p->data;
+ if (!g_strcmp0(webkit_web_plugin_get_name(plugin), "WebKit Test PlugIn") &&
+ !g_strcmp0(webkit_web_plugin_get_description(plugin), "Simple Netscape plug-in that handles test content for WebKit"))
+ enabled = webkit_web_plugin_get_enabled(plugin);
+ }
+ webkit_web_plugin_database_plugins_list_free(pluginList);
+ g_assert(!enabled);
+
+ g_object_unref(view);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/webplugindatabase/getplugins", test_webkit_web_plugin_database_get_plugins);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/gtk/tests/testwebresource.c b/WebKit/gtk/tests/testwebresource.c
index 81457a4..1b893a9 100644
--- a/WebKit/gtk/tests/testwebresource.c
+++ b/WebKit/gtk/tests/testwebresource.c
@@ -23,7 +23,7 @@
#include <string.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
#define INDEX_HTML "<html></html>"
#define MAIN_HTML "<html><head><script language=\"javascript\" src=\"/javascript.js\"></script></head><body><h1>hah</h1></html>"
@@ -218,8 +218,8 @@ static void resource_request_starting_sub_cb(WebKitWebView* web_view, WebKitWebF
{
if (!main_resource)
main_resource = g_object_ref(web_resource);
- else
- sub_resource = g_object_ref(web_resource);
+ else if (!sub_resource)
+ sub_resource = g_object_ref(web_resource);
}
static void notify_load_status_sub_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
@@ -279,8 +279,13 @@ static void test_web_resource_sub_resource_loading()
g_assert(sub_resources->next);
g_assert(!sub_resources->next->next);
- g_assert(WEBKIT_WEB_RESOURCE(sub_resources->data) == sub_resource);
-
+ // Test that the object we got from the data source is the same
+ // that went through resource-request-starting. Note that the order is
+ // not important (and not guaranteed since the resources are stored in a
+ // hashtable).
+ g_assert(WEBKIT_WEB_RESOURCE(sub_resources->data) == sub_resource
+ || WEBKIT_WEB_RESOURCE(sub_resources->next->data) == sub_resource);
+
g_object_unref(web_view);
g_main_loop_unref(loop);
}
@@ -298,7 +303,7 @@ int main(int argc, char** argv)
soup_server_add_handler(server, NULL, server_callback, NULL, NULL);
- soup_uri = soup_uri_new ("http://127.0.0.1/");
+ soup_uri = soup_uri_new("http://127.0.0.1/");
soup_uri_set_port(soup_uri, soup_server_get_port(server));
base_uri = soup_uri_to_string(soup_uri, FALSE);
@@ -330,7 +335,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebsettings.c b/WebKit/gtk/tests/testwebsettings.c
index 8c77def..4db929a 100644
--- a/WebKit/gtk/tests/testwebsettings.c
+++ b/WebKit/gtk/tests/testwebsettings.c
@@ -21,7 +21,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static void test_webkit_web_settings_user_agent(void)
{
@@ -74,7 +74,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwebview.c b/WebKit/gtk/tests/testwebview.c
index 36511d7..76debcc 100644
--- a/WebKit/gtk/tests/testwebview.c
+++ b/WebKit/gtk/tests/testwebview.c
@@ -29,7 +29,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
GMainLoop* loop;
SoupSession *session;
@@ -371,7 +371,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}
diff --git a/WebKit/gtk/tests/testwindow.c b/WebKit/gtk/tests/testwindow.c
index 106f934..ecd6609 100644
--- a/WebKit/gtk/tests/testwindow.c
+++ b/WebKit/gtk/tests/testwindow.c
@@ -20,7 +20,7 @@
#include <gtk/gtk.h>
#include <webkit/webkit.h>
-#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+#if GTK_CHECK_VERSION(2, 14, 0)
static void notify_load_status_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
{
@@ -123,7 +123,7 @@ int main(int argc, char** argv)
#else
int main(int argc, char** argv)
{
- g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
return 0;
}