[epiphany/wip/forms: 1/2] web-extension: Handle forms submitted through JS
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/forms: 1/2] web-extension: Handle forms submitted through JS
- Date: Wed, 6 Dec 2017 13:56:45 +0000 (UTC)
commit 6e78119b555d436993c93b9987b5b98dca56a08f
Author: Exalm <exalm7659 gmail com>
Date: Sun Nov 5 12:31:13 2017 +0500
web-extension: Handle forms submitted through JS
https://bugzilla.gnome.org/show_bug.cgi?id=742573
embed/web-extension/ephy-web-extension.c | 49 ++++++++++++++++++++++++++----
1 files changed, 43 insertions(+), 6 deletions(-)
---
diff --git a/embed/web-extension/ephy-web-extension.c b/embed/web-extension/ephy-web-extension.c
index 02d5fd7..68b1d5c 100644
--- a/embed/web-extension/ephy-web-extension.c
+++ b/embed/web-extension/ephy-web-extension.c
@@ -465,9 +465,8 @@ out:
}
static gboolean
-form_submitted_cb (WebKitDOMHTMLFormElement *dom_form,
- WebKitDOMEvent *dom_event,
- WebKitWebPage *web_page)
+on_form_submitted (WebKitWebPage *web_page,
+ WebKitDOMHTMLFormElement *dom_form)
{
EphyWebExtension *extension = ephy_web_extension_get ();
EphyEmbedFormAuth *form_auth;
@@ -538,6 +537,41 @@ form_submitted_cb (WebKitDOMHTMLFormElement *dom_form,
return TRUE;
}
+static gboolean
+web_page_will_send_submit_event (WebKitWebPage *web_page,
+ WebKitDOMHTMLFormElement *dom_form,
+ WebKitFrame *frame,
+ WebKitFrame *source_frame,
+ GPtrArray *text_field_names,
+ GPtrArray *text_field_values)
+{
+ g_object_set_data (G_OBJECT (dom_form),
+ "ephy-form-submit-handled",
+ GINT_TO_POINTER (TRUE));
+
+ return on_form_submitted (web_page, dom_form);
+}
+
+static gboolean
+web_page_will_submit_form (WebKitWebPage *web_page,
+ WebKitDOMHTMLFormElement *dom_form,
+ WebKitFrame *frame,
+ WebKitFrame *source_frame,
+ GPtrArray *text_field_names,
+ GPtrArray *text_field_values)
+{
+ gboolean form_submit_handled;
+
+ form_submit_handled =
+ GPOINTER_TO_INT (g_object_steal_data (G_OBJECT (dom_form),
+ "ephy-form-submit-handled"));
+
+ if (form_submit_handled)
+ return TRUE;
+
+ return on_form_submitted (web_page, dom_form);
+}
+
static void
fill_form_cb (GList *records,
gpointer user_data)
@@ -1177,9 +1211,6 @@ web_page_form_controls_associated (WebKitWebPage *web_page,
username_node,
password_node,
NULL);
- webkit_dom_event_target_add_event_listener (WEBKIT_DOM_EVENT_TARGET (form), "submit",
- G_CALLBACK (form_submitted_cb), FALSE,
- web_page);
/* Plug in the user autocomplete */
origin = ephy_uri_to_security_origin (uri);
@@ -1335,6 +1366,12 @@ ephy_web_extension_page_created_cb (EphyWebExtension *extension,
g_signal_connect (web_page, "context-menu",
G_CALLBACK (web_page_context_menu),
extension);
+ g_signal_connect (web_page, "will-send-submit-event",
+ G_CALLBACK (web_page_will_send_submit_event),
+ extension);
+ g_signal_connect (web_page, "will-submit-form",
+ G_CALLBACK (web_page_will_submit_form),
+ extension);
g_signal_connect (web_page, "form-controls-associated",
G_CALLBACK (web_page_form_controls_associated),
extension);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]