Closed Bug 1595915 Opened 3 months ago Closed 1 month ago

Context Menu: have suggest secure password option at the top of the main list

Categories

(Toolkit :: Password Manager, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
mozilla74
Tracking Status
firefox70 --- unaffected
firefox71 --- unaffected
firefox72 --- unaffected
firefox73 --- wontfix
firefox74 --- fixed

People

(Reporter: ssage, Assigned: MattN)

References

(Blocks 3 open bugs, Regressed 1 open bug)

Details

(Whiteboard: [passwords:fill-ui] [passwords:generation])

User Story

Telemetry requests from Sandy to help prioritize bug 1609853:
* How often the context menu is opened on a password field?
* How often the generation option in the context menu is used?

Attachments

(4 files, 2 obsolete files)

Currently, when the login form does not automatically prompt to generate a secure password, the option is to go to the context menu > fill password > use a securely generated password.

I'd like to make that 'back up' option more accessible/visible to users in all the cases where automatically generating a password doesn't work.

attaching Chrome screenshot for comparison

Flags: needinfo?(kcaldwell)
Flags: needinfo?(MattN+bmo)
Attached image sub-menu.png

Existing sub-menu attached for reference.

I wish more people were right-clicking on the password field, but probably not that many are doing it. Still, for those that do, and who don't already have a saved password, it could be easier to paste a generated password.

Sub-menus are cumbersome to navigate, but this one does confirm for the user that there are (No Login Suggestions). Does that not warrant the real estate?

My guess is that Paste is probably the most popular option here, as many keep their passwords outside of Firefox. I don't imagine that making an exception to move the password features above Cut/Copy/Paste just for this context is warranted.

Another issue to consider is that the string Use a Securely Generated Password is too long for many non-English locales like French, Spanish and (nefoedd!) Welsh. I think our truncation limit is 42 characters, and those locales and many others exceed it. Moving a string this big into the top level obscures even more content on the web page beneath.

I would suggest for users without a saved password replace Fill Password section with:

  • Use Generated Password
  • View Saved Logins

We plan to implement this in Fx73.

Flags: needinfo?(MattN+bmo)
Priority: -- → P2
Whiteboard: [passwords:fill-ui] [passwords:generation]

Guessing this is out scope for Fx73?

Flags: needinfo?(mpasciutowood)
Flags: needinfo?(MattN+bmo)

It depends. I believe we may try and uplift (after talking to Durst last week), depending on QA approval. I'll let MattN weigh with the definitive answer...

Flags: needinfo?(mpasciutowood)

I don't think we could uplift it due to string changes.

Flags: needinfo?(MattN+bmo)
Blocks: 1585952
No longer depends on: 1598464
Attachment #9117615 - Attachment is obsolete: true
User Story: (updated)
Assignee: nobody → MattN+bmo
Status: NEW → ASSIGNED

For now I didn't change tests to not open the submenu when only generating a password as it should be harmless.

Depends on D60640

I realized that the new string "Generate New Password…" is problematic until we implement bug 1569568 so I asked for a new string. Katie provided "Use Generated Password…" which Betsy agreed with.

Pushed by mozilla@noorenberghe.ca:
https://hg.mozilla.org/integration/autoland/rev/d021fb320a3b
Move the password generation context menu item to the top-level. r=sfoster,fluent-reviewers,flod
https://hg.mozilla.org/integration/autoland/rev/acdf5e974aef
Don't check #fill-login-popup visibility in pwgen context menu tests. r=sfoster

Backed out 2 changesets (Bug 1595915) for browser_contextmenu.js failures

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&fromchange=24f00143c315f36640c0b2dc26924b5dcc44caae&tochange=7ad2b91c02ea26de32c6ff7ae6de69f73e0dcd20&selectedJob=286085508

Backout link: https://hg.mozilla.org/integration/autoland/rev/7ad2b91c02ea26de32c6ff7ae6de69f73e0dcd20

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=286085508&repo=autoland&lineNumber=1295

[task 2020-01-23T02:25:41.805Z] 02:25:41 INFO - TEST-START | browser/base/content/test/contextMenu/browser_contextmenu.js
[task 2020-01-23T02:25:41.880Z] 02:25:41 INFO - GECKO(1730) | Waiting for browser load
[task 2020-01-23T02:25:41.930Z] 02:25:41 INFO - GECKO(1730) | Saw state 30004 and status 0
[task 2020-01-23T02:25:41.930Z] 02:25:41 INFO - GECKO(1730) | Saw state 10001 and status 0
[task 2020-01-23T02:25:41.930Z] 02:25:41 INFO - GECKO(1730) | Saw state 10010 and status 0
[task 2020-01-23T02:25:41.930Z] 02:25:41 INFO - GECKO(1730) | Saw state 10010 and status 0
[task 2020-01-23T02:25:41.930Z] 02:25:41 INFO - GECKO(1730) | Saw state 20010 and status 0
[task 2020-01-23T02:25:41.930Z] 02:25:41 INFO - GECKO(1730) | Saw state c0010 and status 0
[task 2020-01-23T02:25:41.931Z] 02:25:41 INFO - GECKO(1730) | Browser loaded chrome://mochitests/content/browser/browser/base/content/test/contextMenu/subtst_contextmenu_xul.xhtml
[task 2020-01-23T02:25:42.296Z] 02:25:42 INFO - TEST-INFO | started process screencapture
[task 2020-01-23T02:25:42.547Z] 02:25:42 INFO - TEST-INFO | screencapture: exit 0
[task 2020-01-23T02:25:42.547Z] 02:25:42 INFO - Buffered messages logged at 02:25:41
[task 2020-01-23T02:25:42.547Z] 02:25:42 INFO - Entering test bound init
[task 2020-01-23T02:25:42.548Z] 02:25:42 INFO - Leaving test bound init
[task 2020-01-23T02:25:42.548Z] 02:25:42 INFO - Entering test bound test_xul_text_link_label
[task 2020-01-23T02:25:42.548Z] 02:25:42 INFO - Buffered messages logged at 02:25:42
[task 2020-01-23T02:25:42.549Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking if popup is closed -
[task 2020-01-23T02:25:42.549Z] 02:25:42 INFO - Moved focus to #test-xul-text-link-label
[task 2020-01-23T02:25:42.549Z] 02:25:42 INFO - Popup Shown
[task 2020-01-23T02:25:42.549Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking if popup is open -
...
[task 2020-01-23T02:25:42.566Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #1 (context-openlinkinusercontext-menu) enabled state -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #2 () name -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #3 (context-openlink) name -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #3 (context-openlink) enabled state -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #4 (context-openlinkprivate) name -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #4 (context-openlinkprivate) enabled state -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #5 (---) name -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #6 (context-bookmarklink) name -
[task 2020-01-23T02:25:42.569Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #6 (context-bookmarklink) enabled state -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #7 (context-savelink) name -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #7 (context-savelink) enabled state -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #8 (context-savelinktopocket) name -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #8 (context-savelinktopocket) enabled state -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #9 (context-copylink) name -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #9 (context-copylink) enabled state -
[task 2020-01-23T02:25:42.570Z] 02:25:42 INFO - Buffered messages finished
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #10 (context-searchselect) name - Got ---, expected context-searchselect
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - Stack trace:
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:test_is:1320
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenuItem:186
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenu:306
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkContextMenu:176
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:test_contextmenu:455
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/browser_contextmenu.js:test_xul_text_link_label:68
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1062
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1097
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:925
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:808
[task 2020-01-23T02:25:42.572Z] 02:25:42 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-01-23T02:25:42.573Z] 02:25:42 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #10 (context-searchselect) enabled state - Got null, expected true
[task 2020-01-23T02:25:42.573Z] 02:25:42 INFO - Stack trace:
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:test_is:1320
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenuItem:242
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenu:306
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkContextMenu:176
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:test_contextmenu:455
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/browser_contextmenu.js:test_xul_text_link_label:68
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1062
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1097
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:925
[task 2020-01-23T02:25:42.574Z] 02:25:42 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:808
[task 2020-01-23T02:25:42.575Z] 02:25:42 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #11 (context-searchselect-private) name - Got context-searchselect, expected context-searchselect-private
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - Stack trace:
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:test_is:1320
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenuItem:186
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenu:306
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkContextMenu:176
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:test_contextmenu:455
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/browser_contextmenu.js:test_xul_text_link_label:68
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1062
[task 2020-01-23T02:25:42.577Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1097
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:925
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:808
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - TEST-PASS | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #11 (context-searchselect-private) enabled state -
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #12 (---) name - Got context-searchselect-private, expected ---
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - Stack trace:
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:test_is:1320
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenuItem:186
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenu:306
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkContextMenu:176
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:test_contextmenu:455
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/browser_contextmenu.js:test_xul_text_link_label:68
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1062
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1097
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:925
[task 2020-01-23T02:25:42.578Z] 02:25:42 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:808
[task 2020-01-23T02:25:42.579Z] 02:25:42 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #13 (context-sendlinktodevice) name - Got ---, expected context-sendlinktodevice
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - Stack trace:
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:test_is:1320
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenuItem:186
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkMenu:306
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:checkContextMenu:176
[task 2020-01-23T02:25:42.582Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/contextmenu_common.js:test_contextmenu:455
[task 2020-01-23T02:25:42.583Z] 02:25:42 INFO - chrome://mochitests/content/browser/browser/base/content/test/contextMenu/browser_contextmenu.js:test_xul_text_link_label:68
[task 2020-01-23T02:25:42.583Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1062
[task 2020-01-23T02:25:42.583Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1097
[task 2020-01-23T02:25:42.583Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:925
[task 2020-01-23T02:25:42.583Z] 02:25:42 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:808
[task 2020-01-23T02:25:42.583Z] 02:25:42 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-01-23T02:25:42.587Z] 02:25:42 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #13 (context-sendlinktodevice) enabled state - Got null, expected true
[task 2020-01-23T02:25:42.587Z] 02:25:42 INFO - Stack trace:
[task 2020-01-23T02:25:42.587Z] 02:25:42 INFO - chrome://mochikit/content/browser-test.js:test_is:1320
...

Flags: needinfo?(MattN+bmo)

Oops, I forgot to update the visibility of the item in nsContextMenu.js since it no longer inherits that from the submenu. Good thing we have other tests for this.

Flags: needinfo?(MattN+bmo)
Pushed by mozilla@noorenberghe.ca:
https://hg.mozilla.org/integration/autoland/rev/9ef66fee0f47
Move the password generation context menu item to the top-level. r=sfoster,fluent-reviewers,flod
https://hg.mozilla.org/integration/autoland/rev/5675d8e0f9f5
Don't check #fill-login-popup visibility in pwgen context menu tests. r=sfoster

Sam, can you review the changes to nsContextMenu.js? The test failure was because let formOrigin = LoginHelper.getLoginOrigin(documentURI.spec); is now before an early return that handled when the fill menu item was disabled so I changed the code to return early (with try…finally) after the scheme check.

Flags: needinfo?(MattN+bmo) → needinfo?(sfoster)

Done.

Flags: needinfo?(sfoster)
Pushed by mozilla@noorenberghe.ca:
https://hg.mozilla.org/integration/autoland/rev/8e751164816c
Move the password generation context menu item to the top-level. r=sfoster,fluent-reviewers,flod
https://hg.mozilla.org/integration/autoland/rev/d844b69b9fbd
Don't check #fill-login-popup visibility in pwgen context menu tests. r=sfoster

Ugh… I'm pretty sure I ran the tests locally so I'm not sure how this happened. Turns out that the test was wrong though.

Flags: needinfo?(MattN+bmo)
Pushed by mozilla@noorenberghe.ca:
https://hg.mozilla.org/integration/autoland/rev/1bed3d8b28bb
Move the password generation context menu item to the top-level. r=sfoster,fluent-reviewers,flod
https://hg.mozilla.org/integration/autoland/rev/2b014530b634
Don't check #fill-login-popup visibility in pwgen context menu tests. r=sfoster
Status: ASSIGNED → RESOLVED
Closed: 1 month ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla74
Regressions: 1615220
You need to log in before you can comment on or make changes to this bug.