I thought that the initial scheme was what Desktop used, but that was
just wrong. If we're going to be using a new method, then let's be
extremely careful about any potential PII leaks.
The initial scheme potentially leaked PII, since URLs with many path
segments would have a relatively unique redacted version. Therefore if
you had a known URL in mind like that, you could compare the redacted
string to the redacted versions of the URLs in the Sentry breadcrumbs
and potentially determine that it was likely the user visited the URL.
* adjust query method and tests based on feedback
* update query method to return an f64 instead of a u64
* update record_event to create counters when needed and update targeting helper definition
* add tests for recently updated methods
- Don't report `InvalidDatabaseFile` errors to Sentry. These happen
somewhat regularly with the SQLCipher migration code and we've decided
we're okay with that since the recovery code seems to work well
enough.
- Log a redacted version of the Login origin when we see errors
- Log a redacted version of the JWCrypto string when we see errors
* Add active_experiments to targeting attributes
* Gain minimal mutable state locks to minimise the risk of deadlocking
* Add JEXL tests
* Add changelog
Also, updating the branch build code to work with owner references with
a colon, like `bendk:my-branch`. This is what you get when clicking the
github copy branch name button.
We used to convert from sync15::Payload into (eg) AddressPayload, then
finally into InternalAddress as late as possible. We now convert into
the AddressPayload much earlier, so sync15::Payload doesn't bleed as
far into the implementations.
Also deletes `PersistablePayload` as it was just an extra layer
of confusion for no good reason.
Helps on the path to #5139.
As part of the UniFFI Desktop callback interface review, we were asked
to provide a way to drop callback interfaces on shutdown to break up
the reference cycles.
Went through all the main app-services components and replaced the
old-style `log::error!` calls with `error_support::report_error!`.
Removed the `reporting` feature of `error-support` and made it
always-enabled.
Renamed the `report_error` function so that it's name doesn't clash with
the `report_error` macro
Renamed `TabsError` to `Error` for the same reasons as the logins and
places change.
Added a `TabsApiError` enum with conversions from `Error` and
started using it in the UDL.
Removed the `TabsError::SyncResetError` variant. That was a pretty
weird one, since it all anyhow errors were converted into it. Only
`sync/engine.rs` used `anyhow::Result`, so we could assume any anyhow
errors were sync errors. I'm not sure why you could assume it was a
sync reset error though. In any case, I changed it so functions in
`sync/engine.rs` use the normal `Result` enum, and we convert them to
`anyhow::Result`s only for the `SyncEngine` impl.
Removed the `TabsError::SyncAdapterError` variant when full-sync is not
enabled. The functions that used that now return top-level `ApiResult`
values and can use `TabsApiError::SyncError`.
I think this name communicates it's purpose better and is more
consistent with other components.
Renamed `LoginsError` to `Error` for the same reasons as the change from
`PlacesError` to `Error`
Changed `logins.udl` to use the fielded error style. Updated
`LoginsApiError` to use named fields to be compatibile with this.
Removed the `RequestFailed` variant, based on the note next to it.
- Renamed `PlacesInternalError` to `Error` because it seems more
idiomatic
- Renamed `PlacesError` to `PlacesApiError` to make it consistent with
the logins errors. I considered just calling this `ApiError` but I
thought that would be confusing for consumers since they won't always
have the `places::` prefix before the class name.
- Removed `JsonError`, which seems like it was unusped
- Merged `InternalError` into `UnexpectedPlacesException`
- Merged `UrlTooLong` into `UrlParseFailed` for `PlacesApiError`
- Merged `InvalidBookmarkUpdate`, `CannotUpdateRoot`, `InvalidParent`
into `InvalidBookmarkOperation` for `PlacesApiError`
Use the fielded style for `PlacesApiError` in places.udl. Updated
`PlacesApiError` to use named fields to be compatible with this.
On swift renamed `PlacesApiError`, which was defined on top of the
normal errors to `PlacesConnectionError`.