Status Update
Comments
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #2
I highly support this, this way every current FormGroup
subclass can define only the functions it needs (Everything besides Address
can get rid of the AutofillType
API and of the app_locale
parameters, many classes could also get rid of the VerificationStatus
API, etc.)
AutofillProfile
could then implement a GetDataForType(FieldType) -> absl::variant<Address, NameInfo, ...>
and provide the current API with visit
calls instead of polymorphism.
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #4
Re the discussion from
It's true that the polymorphism isn't used, but isn't desirable to have a consistent interface among data model classes regardless?
I agree an interface has some appeal as a tool to define a contract even if the polymorphism isn't needed. But I'd say in C++ it's not worth the cost that comes with inheritance. By cost I mean the general sketchiness, the code-search complexity, and very concretely that we can't default operator==()
safely (which is what led me to file this bug). In the case of the SingleFieldFormFiller
interface, removing an "unused" interface was I think positive in every way (
I'd rather use a concept
plus static_assert
to express that multiple classes define the same API, if we don't need run-time polymorphism.
FormGroup gives us a consistent way to read/write data from/to all Autofill objects.
In my view*, FormGroup
is only on the surface a "consistent way to read/write data from/to all Autofill objects". I think it fails at defining a clear contract that's uniformly met by the implementations because there are so many similarly named functions, some of which may be useless because they don't use some parameters. As a result, in my experience, I have to look at every implementation anyway to figure out what it does. And the implementation inheritance IMO makes this a lot annoying because I'm always afraid that I'm missing some override.
This is useful by itself, but also enables easy composition of FormGroups.
It looks to me like we can do the same easily with absl::variant
, but I haven't tried it.
*: Admittedly I haven't used FormGroup
that much yet, but I've found myself looking at it on code search a lot of times over the past couple of weeks.
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #5
From the discussion in
If we've already gathered some attention around this important topic, I will create a design document to discuss possible solutions. I think we agree that the FormGroup class is not well designed, but we have different ideas about what to do with it.
Piotr, did you already have a chance to create such a doc?
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #6
I haven't had a chance to create the design document yet, but I still intend to do so. Given that this topic is still actively being discussed and raised, I'll increase the priority of creating it.
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #7
Added 2 regressions to the group
Internal (Googlers-only) Reports:
- Chromium:
(Legacy)
Top 2 affected measurements in android-pixel6-pro-perf:
- blink_perf.accessibility/BrowserAccessibilityManager::OnLocationChanges_sum/location-changes-scrolling-content-visibility-auto.html
34.74%: 2.159 -> 2.909 ms
- blink_perf.accessibility/SerializeLocationChanges_sum/location-changes-scrolling.html
28.09%: 5.625 -> 7.205 ms
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #8
<b>Started sandwich culprit verification process.</b>
culprit verification workflow keys: ['projects/62121018386/locations/us-central1/workflows/sandwich-verification-workflow-prod/executions/54a01773-2d8b-4921-956d-20390544bc8b']
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #9
<b>[CodeHealth] Clean up the ContentCapture feature</b> by oksamyt@chromium.org
BrowserAccessibilityManager::OnLocationChanges: 2.094 → 2.912 (+0.8183) (+39.07%)
Understanding performance regressions:
Benchmark documentation link:
You can view the full results and re-run the Pinpoint job at:
If you think Pinpoint blamed the wrong commit, please add issue to
`Chromeperf-CulpritDetection-NeedsAttention` (hotlist:5670048) and
unassign yourself so that a sheriff can help diagnose.
ch...@appspot.gserviceaccount.com <ch...@appspot.gserviceaccount.com> #10
Added 1 regressions to the group
Internal (Googlers-only) Reports:
- Chromium:
(Legacy)
Top 1 affected measurements in android-pixel6-pro-perf:
- blink_perf.accessibility/BrowserAccessibilityManager::OnAccessibilityEvents_sum/location-changes-scrolling.html
40.00%: 1.5175 -> 2.1245000000000003 ms
Description
Internal (Googlers-only) Reports:
- Chromium:
(Legacy) Chromeperf Report:
Top 2 regressions (out of 2, with 0 improvements) in this group:
- ChromiumPerf/android-pixel6-pro-perf/blink_perf.accessibility/BrowserAccessibilityManager::OnLocationChanges_sum/location-changes-scrolling.html
35.39%: 2.1375 -> 2.894 ms
- ChromiumPerf/android-pixel6-pro-perf/blink_perf.accessibility/SerializeLocationChanges_sum/location-changes-scrolling-content-visibility-auto.html
27.58%: 5.589 -> 7.1305 ms
Top 2 affected measurements in android-pixel6-pro-perf:
- blink_perf.accessibility/BrowserAccessibilityManager::OnLocationChanges_sum/location-changes-scrolling.html
35.39%: 2.1375 -> 2.894 ms
- blink_perf.accessibility/SerializeLocationChanges_sum/location-changes-scrolling-content-visibility-auto.html
27.58%: 5.589 -> 7.1305 ms
Regressions grouped by blink_perf.accessibility includes data from the following benchmarks with listed owners:
blink_perf.accessibility: aleventhal@chromium.org
Commits in this range:
Chromium Git Hash:
Chromium Commit Position:
V8 Commit Position:
WebRTC Git Hash: