diff options
| author | Martin Geubelle <mge@odoo.com> | 2017-05-30 11:28:05 +0200 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2017-05-31 14:10:13 +0200 |
| commit | e116a69f25d3d3dcfa9ee12b34c33d9c3658bb46 (patch) | |
| tree | 268662d9d6d368f512fbf1a41946ad494ade9ad4 /addons/web | |
| parent | e3fdce964357a0bf38b3925637da2ed712e8e315 (diff) | |
[FIX] web: properly handle autocomplete attribute
With the new views, the attribute autocomplete on input was no
longer supported. We simply reintroduce its support in this commit.
The basic attribute values are 'on' and 'off' but one may want to use a
random string.
Note that an input with type='password' is a special case: the autocomplete
attribute should always be set to 'new-password' to remove autocompletion
(autocomplete='off' doesn't actually remove the autocompletion).
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/src/js/fields/basic_fields.js | 3 | ||||
| -rw-r--r-- | addons/web/static/tests/views/form_tests.js | 24 |
2 files changed, 27 insertions, 0 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index cdaed1d7b4f..a5ceba50d3f 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -225,6 +225,9 @@ var InputField = DebouncedField.extend({ this.$input.attr({ type: this.nodeOptions.isPassword ? 'password' : 'text', placeholder: this.attrs.placeholder || "", + autocomplete: this.nodeOptions.isPassword ? + 'new-password' : + this.attrs.autocomplete, }); this.$input.val(this._formatValue(this.value)); return this.$input; diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 9cce413b618..6ca4740a62e 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4709,6 +4709,30 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('support autocomplete attribute', function (assert) { + assert.expect(3); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="display_name" autocomplete="coucou"/>' + + '<field name="foo" password="True"/>' + + '</form>', + res_id: 1, + }); + + form.$buttons.find('.o_form_button_edit').click(); + assert.strictEqual(form.$('input[name="foo"]').val(), '***', + "password should be displayed with stars"); + assert.strictEqual(form.$('input[name="display_name"]').prop('autocomplete'), 'coucou', + "attribute autocomplete should be set"); + assert.strictEqual(form.$('input[name="foo"]').prop('autocomplete'), 'new-password', + "attribute autocomplete should be set to 'new-password' on password input"); + form.destroy(); + }); + QUnit.test('context is correctly passed after save & new in FormViewDialog', function (assert) { assert.expect(3); |
