This required a larger change than I had hoped. The external-links-mixin
was capturing the click and then calling `event.stopImmediatePropagation()`
on the event, meaning the click handler in the flow-events-mixin was
never called. :/
fixes#4680fixes#5115
Add an `.smsStatus` suffix to the error context, which is included
in messages sent to DataDog, e.g.,:
error.verify-email.smsStatus.auth.999
issue #5109
If the browser responds to an fxaccounts:fxa_status message with a `No Such Webchannel`
error, that means the UA either does not support the channel name, or is not set up
to communicate with this FxA server. In either case, FxA and the UA cannot communicate
using WebChannels.
If this happens, log the error and set the `fxaStatus` broker capability to `false`.
This will cause the session to use state stored in localStorage rather than the
state stored by the browser.
fixes#5114
Before this fix, if a call to /sms/status failed,
signup confirmation would appear to fail with an
"Unexpected error".
Instead of failing, log and drop errors to /sms/status.
fixes#5109
Use a `createClientDelegate` method to pass all method call parameters
directly to the delegated to method in the fxa-js-client.
Also removed fxa-client->signOut, the functionality
was a subset to the more full featured sessionDestroy.
Finally, add lots of documentation.
Extracted from #5092
With the changes to fetch user state brom the browser, we were
attempting to check the signed in account before the storage
formats were updated. An Account model was created with `accountData`,
causing an exception to be thrown.
Updates the stored accounts before checking for
the signed in account.
Since a functional test caught this, no new functional tests
were added, only unit tests.
fixes#5104
We were binding using `account.on` in `beforeRender`. This didn't cause any
visible problems, but caused two problems behind the scenes:
1. The view to be retained in memory after being torn down because the
account kept a reference to the View.
2. If the accessToken was invalidated after the view was destroyed, the
*view would re-render anyways*, just not visibly.
Using view.listenTo, the listener is removed from the account whenever
the view is torn down. In addition, this is only done in afterVisible
so that only one listener is ever bound. If done in `beforeRender`,
a new listener was attached on every render.
Not attached to an issue.
Use fat arrows to make code more consise, let, const, etc.
Only render to the DOM when absolutely needed to speed up tests.
This is such a low-risk unit test only change that I self-merged.
Update invokeBrokerMethod, invokeBehavior, and invokeHandler
to use ES2015 rest & spread operators.
Also make `invokeBehavior` always return a promise.
Done by having the progress indicator decorator look on the target element
for a `data-min-progress-indicator-ms` attribute. If it exists, wait for
the time to elapse before completing the submit action.
Use this in the "settings clients" functional tests to ensure the refresh
has completed to continue with the tests.
fixes#4570fixes#5071
The app store buttons were only shown if ?service=sync was specified on
the URL. This caused confusion whenever loading the two screens during
manual testing. Since these screens are only shown for the Sync flow,
always show them.
fixes#4948