Chrome passwords with a NULL `action_uri` aren't imported

RESOLVED FIXED in Firefox 68

Status

()

defect
P3
normal
RESOLVED FIXED
3 months ago
2 months ago

People

(Reporter: smartfon.reddit, Assigned: MattN)

Tracking

67 Branch
Firefox 68
Points:
---

Firefox Tracking Flags

(firefox68 fixed)

Details

(Whiteboard: [passwords:migration])

Attachments

(2 attachments)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0

Steps to reproduce:

Goal:

Import BitWarden addon's CSV passwords into Firefox. Because Firefox doesn't have a CSV import ability, I decided to import the CSV into Chrome, then run Firefox's "Import Data from Another Browser" tool. When I run the "Import data from another browser" tool on Firefox, it only imports some of the passwords from Chrome. If I delete those passwords in Firefox and import again, the same exact passwords are imported.

Full Steps:

Chrome doesn't have a CSV import feature either, but they have a Flag. Open chrome://flags/ in Google Chrome and enable the Password Import flag. Import BitWarden's CSV file containing 330 passwords into Chrome successfully. Remove any entries with empty fields to avoid potential problems later.

Open Firefox > Library and run "Import data from another browser" feature. It only imports few dozen passwords out of 330. It always imports the data of the same accounts. In the "Import Data from Another Browser" tool, the password importing process lasts split of a second, while I'd expect it to take longer for 330 entries(?).

The profile is new. Windows 10. Relevant thread https://www.reddit.com/r/firefox/comments/b5pzhf/firefox_lockbox_now_on_android_keeping_your/ekhcmrw/?context=3

Update. It appears that any password that was added into Chrome through CSV, although they may appear inside Chrome, they won't be imported by Firefox with the "Import data from..." tool.

If I use the standard method to add a password into Chrome by signing into a website and remembering credentials, that password will be imported by Firefox (I've only tried a few).

My guess is that out of 330 passwords that I have in Chrome, about 310 were imported through CSV, and 20 of them were there from earlier days and were added the regular way. This explains why always the exact same 20 passwords get imported by Firefox; they are the only ones that weren't imported into Chrome through CSV.

I guess you could say this is a bug in Chrome, but why would Firefox be unable to import data that is visible and functional in Chrome? With this method being the only way to import password-manager-addon passwords into Firefox, it's worth looking into it.

Component: Untriaged → Migration

Can you attach the browser console[1] logs when you run the migrator?. It should tell us if we are encountering any errors, and if those 20 entries are failing to migrate in the same way.

  1. https://developer.mozilla.org/en-US/docs/Tools/Browser_Console
Flags: needinfo?(smartfon.reddit)

Handler function DebuggerProgressListener.prototype.onWindowCreated threw an exception: TypeError: window is undefined
Stack: getWindowID@resource://devtools/server/actors/targets/browsing-context.js:54:3
DebuggerProgressListener.prototype.onWindowCreated<@resource://devtools/server/actors/targets/browsing-context.js:1580:21
exports.makeInfallible/<@resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:22
_fireEvent@chrome://global/content/bindings/wizard.xml:418:34
set_currentPage@chrome://global/content/bindings/wizard.xml:94:16
advance@chrome://global/content/bindings/wizard.xml:281:15
@chrome://global/content/bindings/wizard.xml:148:40
observe@chrome://browser/content/migration/migration.js:382:22
notify@resource:///modules/MigrationUtils.jsm:303:22
resourceDone@resource:///modules/MigrationUtils.jsm:338:17
migrate@resource:///modules/ChromeProfileMigrator.jsm:412:7
MU_showMigrationWizard@resource:///modules/MigrationUtils.jsm:892:17
OpenMigrator@chrome://passwordmgr/content/passwordManager.js:763:18
oncommand@chrome://passwordmgr/content/passwordManager.xul:1:1
Line: 54, column: 3 ThreadSafeDevToolsUtils.js:88:13

[Exception... "Must have a non-null string spec or nsIFile object" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: resource:///modules/ChromeProfileMigrator.jsm :: migrate :: line 383" data: no]
migrate resource:///modules/ChromeProfileMigrator.jsm:383
AsyncFunctionNext self-hosted:820
MU_showMigrationWizard resource:///modules/MigrationUtils.jsm:892
OpenMigrator chrome://passwordmgr/content/passwordManager.js:763
oncommand chrome://passwordmgr/content/passwordManager.xul:1

Flags: needinfo?(smartfon.reddit)
Posted file pass_migration.txt

The priority flag is not set for this bug.
:MattN, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(MattN+bmo)

Can you load chrome://version/ and copy Profile Path here? I'm seeing some errors related to this but I'm not sure if that's innocent:

Error detecting Chrome profiles: Win error 2 during operation open on file C:\Users\USERNAME\AppData\Local\Chromium\User Data\Local State (The system cannot find the file specified.

Flags: needinfo?(MattN+bmo) → needinfo?(smartfon.reddit)

(In reply to Matthew N. [:MattN] (PM me if requests are blocking you) from comment #6)

C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default

Looks like Firefox is looking for a "Chromium" folder instead of "Chrome". Could be the code was tested on Chromium and later forgotten to be worded for Chrome?

Flags: needinfo?(smartfon.reddit)

The priority flag is not set for this bug.
:MattN, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(MattN+bmo)

The error at the bottom points to: https://searchfox.org/mozilla-central/rev/99a2a5a955960b0e58ceade1db1f7652d9db4ba1/browser/components/migration/ChromeProfileMigrator.jsm#383

Could you collect some data from the Chrome Login Data so we can find a pattern in which logins aren't imported? My guess is that this bug is related to action_url or scheme columns:

  1. Install the SQLite Manager extension in Firefox.
  2. Close Chrome
  3. Click the SQLite Manager toolbar button in Firefox.
  4. In the SQLite Manager tab: File => Open a Database
  5. Choose C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\Login Data (from comment 7)
  6. In the "Enter math.js or SQLite commands" box, paste the following and hit ENTER:
SELECT origin_url, action_url, signon_realm, date_created, scheme, password_type, generation_upload_status, id FROM logins;
  1. On the header of the results, click "Export", save the file on your computer and email it to me (it contains URLs of your saved logins) telling me which logins (a handful is fine) are the ones that don't import
    OR
    Look for a pattern in the columns of the logins that didn't import and let me know what they have in common.

Thank you very much. I believe this would likely give enough information to fix the issue.

Flags: needinfo?(MattN+bmo) → needinfo?(smartfon.reddit)

(In reply to Matthew N. [:MattN] (PM me if requests are blocking you) from comment #9)

The action_url column is all "NULL" with the exception of a few entries. Only the entries where action_url is present will import into Firefox properly.

Flags: needinfo?(smartfon.reddit)

Thanks for the info! This should be easy to fix then.

Assignee: nobody → MattN+bmo
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Priority: -- → P3
Whiteboard: [passwords:migration]

Save it with the wildcard "" value so it works with any form action.

Pushed by mozilla@noorenberghe.ca:
https://hg.mozilla.org/integration/autoland/rev/a42caa9f04fc
Handle NULL 'action_url' for Chrome login import. r=sfoster
Summary: Importing Data from Chrome doesn't import all passwords → Chrome passwords with a NULL `action_uri` aren't imported
Status: ASSIGNED → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 68
You need to log in before you can comment on or make changes to this bug.