[epiphany/mcatanzaro/remember-passwords: 51/51] 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/mcatanzaro/remember-passwords: 51/51] web-extension: Don't prompt to remember passwords when disabled
- Date: Mon, 15 Apr 2019 22:59:08 +0000 (UTC)
commit 0f0d8b90fa0d88c9c53b1a5b434e49792f008d18
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 | 24 ++++++++++++++++++------
embed/web-extension/resources/js/ephy.js | 14 +++++++++++---
meson.build | 2 +-
3 files changed, 30 insertions(+), 10 deletions(-)
---
diff --git a/embed/web-extension/ephy-web-extension.c b/embed/web-extension/ephy-web-extension.c
index 6680327e3..c1f75fa3e 100644
--- a/embed/web-extension/ephy-web-extension.c
+++ b/embed/web-extension/ephy-web-extension.c
@@ -255,7 +255,6 @@ web_page_form_controls_associated (WebKitWebPage *web_page,
g_autoptr(JSCValue) js_ephy = NULL;
g_autoptr(JSCValue) js_serializer = NULL;
g_autoptr(JSCValue) js_result = NULL;
- gboolean remember_passwords;
guint i;
frame = webkit_web_page_get_main_frame (web_page);
@@ -272,16 +271,13 @@ web_page_form_controls_associated (WebKitWebPage *web_page,
js_serializer = jsc_value_new_function (js_context,
"sensitiveFormMessageSerializer",
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);
+ G_TYPE_STRING, 1,
+ G_TYPE_UINT64);
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);
}
@@ -653,6 +649,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)
@@ -768,6 +772,14 @@ window_object_cleared_cb (WebKitScriptWorld *world,
JSC_TYPE_VALUE);
jsc_value_object_set_property (js_ephy, "isEdited", js_function);
g_clear_object (&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_clear_object (&js_function);
}
void
diff --git a/embed/web-extension/resources/js/ephy.js b/embed/web-extension/resources/js/ephy.js
index f3b3b9591..149c29c29 100644
--- a/embed/web-extension/resources/js/ephy.js
+++ b/embed/web-extension/resources/js/ephy.js
@@ -248,7 +248,7 @@ Ephy.PreFillUserMenu = class PreFillUserMenu
}
}
-Ephy.formControlsAssociated = function(pageID, forms, serializer, rememberPasswords)
+Ephy.formControlsAssociated = function(pageID, forms, serializer)
{
Ephy.formManagers = [];
@@ -257,8 +257,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;
+
let formAuth = this._generateFormAuth(true);
if (!formAuth) {
Ephy.log('No pre-fillable/hookable form found');
@@ -448,6 +450,9 @@ Ephy.FormManager = class FormManager
preFill(formAuth)
{
+ if (!Ephy.shouldRememberPasswords())
+ return;
+
Ephy.passwordManager.query(
formAuth.origin,
formAuth.targetOrigin,
@@ -478,6 +483,9 @@ Ephy.FormManager = class FormManager
handleFormSubmission()
{
+ if (!Ephy.shouldRememberPasswords())
+ return;
+
let formAuth = this._generateFormAuth(false);
if (!formAuth || !formAuth.password)
return;
diff --git a/meson.build b/meson.build
index d8b7128ab..3ca2fd1a5 100644
--- a/meson.build
+++ b/meson.build
@@ -78,7 +78,7 @@ config_h = declare_dependency(
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]