Hi,

I'm currently working on bug 1548389.
https://bugzilla.mozilla.org/show_bug.cgi?id=1548389
And here are the patches and binaries:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=1542e008bb9fa0f97002c73298a5346002f21ffe

With this change, chrome JS will be able to unmask a part of or all of password. However, we need to support IME composition in Android. If you use this API when user types something via IME, we have some long standing issues. That is, current editor sets masked text into the anonymous text node in `<input type="password">` and makes `TextEditRules` stores actual value for submitting the form. Therefore, when user types password with IME, our editor inserts raw value to both the anonymous text node and the stored value (on Android). Then, after 600ms, `TextEditor` replaces the inserted character with mask character. I.e., every masking/unmasking causes internal DOM mutations. Therefore, we notify IME of the text changes. So, using the new API causes IME receiving unexpected text change and some IMEs may be caused by this.

Therefore, I'm currently reimplementing it with:
- Inserting raw value to the anonymous text node
- Mask each character as a `text-transform`

This allows we can mask/unmask password without DOM mutations nor notifications to IME. However, this means that when you access the anonymous text node, you may exposes the value to somewhere. For example:
- Dragging selected password inserts the raw value to the dropped point
- Double clicking shows word boundary in the password

I already have patches for solving these issues, but there might be another issues.

If you have some concerns, let me know.

Regards,

--
Masayuki Nakano <masay...@d-toybox.com>
Working on DOM, Events, editor and IME handling for Gecko
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to