Closed Bug 1826046 Opened 2 years ago Closed 2 years ago

Private new tab missing text with developer tools enabled

Categories

(Firefox :: Messaging System, defect, P1)

Firefox 113
defect

Tracking

()

VERIFIED FIXED
113 Branch
Iteration:
113.2 - Mar 27 - Apr 7
Tracking Status
firefox-esr102 --- unaffected
firefox111 --- unaffected
firefox112 --- unaffected
firefox113 --- verified
firefox114 --- verified

People

(Reporter: ke5trel, Assigned: aminomancer)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression)

Attachments

(2 files)

STR:

  1. Set browser.newtabpage.activity-stream.asrouter.devtoolsEnabled = true.
  2. Restart browser.
  3. Open a new private window.

Private browsing info box is missing text and error appears in console:

NotFoundError: WindowGlobalParent.getActor: No such JSWindowActor 'FormAutofill' 3 ASRouterTargeting.jsm:856

Regression window:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=9beb0c7925afd8d72836dd2ae5b8ca9193ec9ab6&tochange=be4ae540a6d573c2b54644fc93ada9bcff0dd737

Regressed by Bug 1822893.

:aminomancer, since you are the author of the regressor, bug 1822893, could you take a look? Also, could you set the severity field?

For more information, please visit auto_nag documentation.

Flags: needinfo?(shughes)

Seems like STR requires form autofill to not be supported. I was able to reproduce by disabling form autofill credit cards with extensions.formautofill.creditCards.supported = off. Form autofill is disabled in some regions. I think calling getActor on an unregistered actor throws, doesn't merely return null. So these targeting attributes throw in form autofill-unsupported regions in spite of the optional chaining operator.

We might want to consider the alternative of importing the storage object directly. I like that a lot better than using the actor, which is more finnicky. But the actor is where the logic for interpreting the storage into credit cards/addresses is, so we'd have to reimplement that in our targeting getter. And importing the storage means a lot of additional imports that may otherwise happen later, slowing down startup. Other code across Firefox mostly uses the actor - the only imports I could find outside of form autofill code were for actions that could not use the actor because it doesn't support a sync-related parameter. I will bring this up in one of our meetings or something.

Edit: I'm working on a patch to land asap. Thanks for taking the time to report, Kestrel. If you have a moment to check something, it would be good to confirm that it's the region support issue causing the actor to throw. Can you try setting the following prefs in about:config and restarting to see if the bug still happens? It shouldn't have any permanent effect once you set them back:

extensions.formautofill.creditCards.supported = "on"
extensions.formautofill.creditCards.enabled = true
extensions.formautofill.addresses.supported = "on"
extensions.formautofill.addresses.enabled = true
Flags: needinfo?(shughes)
Assignee: nobody → shughes
Status: NEW → ASSIGNED

The new form autofill targeting attributes use an actor that may not be
registered in regions where neither credit card nor address autofill is
supported. In that case, the actor never gets registered, and requesting
an unrecognized JSActor throws an exception, which causes JEXL
evaluation to fail, ultimately causing message requests to fail. The
simplest fix is to just catch the exception and report 0 for targeting.
Using an actor externally isn't ideal, but in this case it's
conventional and the alternative - importing the storage object - isn't
great either.

Also, note to self to request QA for unsupported regions after this lands. We should make sure both the targeting and trigger behave as expected (basically as no-ops) in regions where one of credit cards or addresses is unsupported, as well as in regions where both are unsupported (causing the actor to not be registered).

Iteration: --- → 113.2 - Mar 27 - Apr 7
Priority: -- → P1
Blocks: 1826249
Pushed by shughes@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/22fbe8622381 Fix a targeting error when form autofill is unsupported. r=omc-reviewers,jprickett
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 113 Branch
Flags: qe-verify+

Reproducible on a 2023-04-03 Nightly build on Windows 10.
Verified as fixed on Firefox 113.0b3(build ID: 20230412155147) and Nightly 114.0a1(build ID: 20230413035039) on Windows 10, Ubuntu 22, macOS 12.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: