[epiphany/gnome-3-32] web-extension: Don't prompt to remember passwords when disabled
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/gnome-3-32] web-extension: Don't prompt to remember passwords when disabled
- Date: Tue, 16 Apr 2019 19:37:22 +0000 (UTC)
commit aa5b5bac145210e060f54f6e5bf10302d7e791aa
Author: Michael Catanzaro <mcatanzaro igalia com>
Date: Wed Mar 20 16:01:01 2019 -0500
web-extension: Don't prompt to remember passwords when disabled
When the remember passwords setting is disabled, we should try harder to
avoid executing any related code.
This requires a WebKitGTK version bump due to https://bugs.webkit.org/show_bug.cgi?id=196073
Fixes #725
embed/web-extension/ephy-web-extension.c | 20 ++++++++++++++++----
embed/web-extension/resources/js/ephy.js | 14 +++++++++++---
meson.build | 2 +-
3 files changed, 28 insertions(+), 8 deletions(-)
---
diff --git a/embed/web-extension/ephy-web-extension.c b/embed/web-extension/ephy-web-extension.c
index b04e00fb3..9d8b1afa2 100644
--- a/embed/web-extension/ephy-web-extension.c
+++ b/embed/web-extension/ephy-web-extension.c
@@ -246,7 +246,6 @@ web_page_form_controls_associated (WebKitWebPage *web_page,
JSCValue *js_ephy;
JSCValue *js_serializer;
JSCValue *js_result;
- gboolean remember_passwords;
guint i;
frame = webkit_web_page_get_main_frame (web_page);
@@ -265,14 +264,11 @@ web_page_form_controls_associated (WebKitWebPage *web_page,
G_CALLBACK (sensitive_form_message_serializer), NULL, NULL,
G_TYPE_STRING, 2,
G_TYPE_UINT64, G_TYPE_BOOLEAN);
- remember_passwords = !extension->is_private_profile &&
- g_settings_get_boolean (EPHY_SETTINGS_WEB_EXTENSION_WEB,
EPHY_PREFS_WEB_REMEMBER_PASSWORDS);
js_result = jsc_value_object_invoke_method (js_ephy,
"formControlsAssociated",
G_TYPE_UINT64, webkit_web_page_get_id (web_page),
G_TYPE_PTR_ARRAY, form_controls,
JSC_TYPE_VALUE, js_serializer,
- G_TYPE_BOOLEAN, remember_passwords,
G_TYPE_NONE);
g_object_unref (js_result);
g_ptr_array_unref (form_controls);
@@ -650,6 +646,14 @@ js_is_edited (JSCValue *js_element)
return webkit_dom_element_html_input_element_is_user_edited (WEBKIT_DOM_ELEMENT (node));
}
+static gboolean
+js_should_remember_passwords (EphyWebExtension *extension)
+{
+ g_assert (EPHY_IS_WEB_EXTENSION (extension));
+
+ return !extension->is_private_profile && g_settings_get_boolean (EPHY_SETTINGS_WEB_EXTENSION_WEB,
EPHY_PREFS_WEB_REMEMBER_PASSWORDS);
+}
+
static void
js_exception_handler (JSCContext *context,
JSCException *exception)
@@ -771,6 +775,14 @@ window_object_cleared_cb (WebKitScriptWorld *world,
jsc_value_object_set_property (js_ephy, "isEdited", js_function);
g_object_unref (js_function);
+ js_function = jsc_value_new_function (js_context,
+ "shouldRememberPasswords",
+ G_CALLBACK (js_should_remember_passwords),
+ g_object_ref (extension), g_object_unref,
+ G_TYPE_BOOLEAN, 0);
+ jsc_value_object_set_property (js_ephy, "shouldRememberPasswords", js_function);
+ g_object_unref (js_function);
+
g_object_unref (js_ephy);
g_object_unref (js_context);
}
diff --git a/embed/web-extension/resources/js/ephy.js b/embed/web-extension/resources/js/ephy.js
index 9f3366d68..8ee5d6569 100644
--- a/embed/web-extension/resources/js/ephy.js
+++ b/embed/web-extension/resources/js/ephy.js
@@ -1,6 +1,6 @@
var Ephy = {};
-Ephy.formControlsAssociated = function(pageID, forms, serializer, rememberPasswords)
+Ephy.formControlsAssociated = function(pageID, forms, serializer)
{
Ephy.formManagers = [];
@@ -9,8 +9,7 @@ Ephy.formControlsAssociated = function(pageID, forms, serializer, rememberPasswo
continue;
let formManager = new Ephy.FormManager(pageID, forms[i]);
formManager.handleSensitiveElement(serializer);
- if (rememberPasswords)
- formManager.preFillForms();
+ formManager.preFillForms();
Ephy.formManagers.push(formManager);
}
}
@@ -425,6 +424,9 @@ Ephy.FormManager = class FormManager
preFillForms()
{
+ if (!Ephy.shouldRememberPasswords())
+ return;
+
this._formAuth = this._findFormAuthElements(true);
if (!this._formAuth || !this._formAuth.passwordNode) {
Ephy.log('No pre-fillable/hookable form found');
@@ -460,6 +462,9 @@ Ephy.FormManager = class FormManager
preFill()
{
+ if (!Ephy.shouldRememberPasswords())
+ return;
+
const self = this;
Ephy.passwordManager.query(
this._formAuth.url.origin,
@@ -491,6 +496,9 @@ Ephy.FormManager = class FormManager
handleFormSubmission()
{
+ if (!Ephy.shouldRememberPasswords())
+ return;
+
if (!this._formAuth)
return;
diff --git a/meson.build b/meson.build
index 2c63dbbfc..2a29da005 100644
--- a/meson.build
+++ b/meson.build
@@ -79,7 +79,7 @@ endif
glib_requirement = '>= 2.56.0'
gtk_requirement = '>= 3.24.0'
nettle_requirement = '>= 3.4'
-webkitgtk_requirement = '>= 2.23.90'
+webkitgtk_requirement = '>= 2.24.1'
cairo_dep = dependency('cairo', version: '>= 1.2')
gcr_dep = dependency('gcr-3', version: '>= 3.5.5')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]