On Mon, Jul 25, 2022 at 7:44 PM Khushal Sagar <khushalsa...@chromium.org> wrote:
> > > On Wed, Jul 20, 2022 at 5:17 AM Yoav Weiss <yoavwe...@chromium.org> wrote: > >> Thanks Khushal! :) >> >> The breakage seems potentially significant (at worst, makes the site >> visually broken and unusable), and the percentage of breakage seems above >> the threshold we typically consider safe. >> At the same time this seems like a positive change, and our friends at >> Mozilla consider it "worth prototyping". >> >> Would it be possible to consider this as a deprecation of the old >> behavior, and run the console issue (+deprecation warnings and outreach to >> affected sites) for a few milestones, to try and drive the usage down >> before flipping this change to be on by default? Maybe also get some >> documentation out there and work with devrel folks to make sure folks are >> aware of this coming change? >> >> Does that sound reasonable? >> > > Thanks for the suggestion Yoav. This sounds reasonable. I've reached out > to the devrel folks to do more outreach about this change. I'll update this > thread with the plan for it. The console issue and deprecation warnings > have been added in M105. > > I looked into adding a use counter for sites which have real breakage, > since the current metric tracks whether the computed style *could* permit > allow but not whether there is actual overflow at paint time. And > unfortunately computing potential overflow is not easy to add. The CT > analysis I ran earlier did this by turning the feature on and tracking > actual overflow generated by the element. So a couple of questions for > moving forward: > > - Would it be okay to turn the feature on in beta and 1% stable (in M105) > to collect metrics for the sites with real breakage and the extent of this > breakage (how many pixels of overflow do we see). This should be lower than > the counter of 0.017%. > That sounds like a great way to gather data! (assuming the relevant Chrome processes are followed) Would be good to gather a histogram of overflowed pixels, to get a sense of "small breakage" vs. "large breakage". > > - What's the number (in terms of page loads affected) we should be > targeting before this would be safe? > >From my perspective, I'd be comfortable shipping this if we're seeing less than 0.003% of page loads in the "large breakage" bucket (say more than ~5000 overflowing pixels, assuming that number makes sense). +Andre Bandarra <andre...@google.com> - for devrel opinions on this. > > >> >> Cheers, >> Yoav >> >> On Thursday, July 14, 2022 at 5:03:54 PM UTC+2 Khushal Sagar wrote: >> >>> Hey folks, >>> >>> I'm summarizing the steps to mitigate the compat risk with this feature >>> based on the feedback: >>> >>> - Add a warning to the console when a developer style would permit >>> replaced elements to overflow. The patch to add that is here >>> <https://chromium-review.googlesource.com/c/chromium/src/+/3763640> and >>> documentation to help developers debug, which is referenced in the >>> console >>> warning, is here >>> <https://github.com/WICG/shared-element-transitions/pull/166/files>. >>> We can pre-emptively add this warning to M105 and ship the feature in >>> M106 >>> to have a one release window before the behaviour changes. >>> >>> - Send an email to the webmaster of sites surfaced in the CT >>> analysis which already have the styles that trigger the warning above. >>> >>> In addition to the above, the feature can be turned off with a >>> server-side config using finch if there is any severe breakage. >>> >>> Please let me know if the above suffices. >>> >>> Thanks. >>> Khushal >>> >>> On Wed, Jul 13, 2022 at 4:11 PM Khushal Sagar <khushalsa...@chromium.org> >>> wrote: >>> >>>> >>>> >>>> On Wed, Jul 13, 2022 at 3:44 PM Mike Taylor <miketa...@chromium.org> >>>> wrote: >>>> >>>>> On 7/13/22 3:04 PM, Khushal Sagar wrote: >>>>> >>>>> >>>>> >>>>> On Wed, Jul 13, 2022 at 6:12 AM Yoav Weiss <yoavwe...@chromium.org> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Wednesday, July 13, 2022 at 3:54:28 AM UTC+2 Khushal Sagar wrote: >>>>>> >>>>>>> On Mon, Jul 11, 2022 at 11:40 AM Yoav Weiss <yoavwe...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Jul 8, 2022 at 7:22 PM Khushal Sagar < >>>>>>>> khushalsa...@chromium.org> wrote: >>>>>>>> >>>>>>>>> Contact emails khushalsa...@chromium.org, vmp...@chromium.org >>>>>>>>> >>>>>>>>> Explainer >>>>>>>>> https://github.com/WICG/shared-element-transitions/blob/main/overflow-on-replaced-elements.md >>>>>>>>> https://github.com/w3c/csswg-drafts/issues/7058 >>>>>>>>> >>>>>>>>> Specification >>>>>>>>> https://drafts.csswg.org/css-overflow/#overflow-properties >>>>>>>>> >>>>>>>>> Summary >>>>>>>>> >>>>>>>>> This change allows developers to use the existing `overflow` >>>>>>>>> property with replaced elements that paint outside the content-box. >>>>>>>>> Paired >>>>>>>>> with `object-view-box` this can be used to create an image with a >>>>>>>>> custom >>>>>>>>> glow or shadow applied, with proper ink-overflow behavior like a CSS >>>>>>>>> shadow >>>>>>>>> would have. >>>>>>>>> >>>>>>>>> Blink component Blink>CSS >>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ECSS> >>>>>>>>> >>>>>>>>> TAG review https://github.com/w3ctag/design-reviews/issues/750 >>>>>>>>> >>>>>>>>> TAG review status Pending >>>>>>>>> >>>>>>>>> Risks >>>>>>>>> Interoperability and Compatibility >>>>>>>>> >>>>>>>>> This feature changes the behaviour of the existing overflow >>>>>>>>> property on replaced elements (img, video, canvas). Currently >>>>>>>>> `overflow:visible` in a developer stylesheet on such elements is >>>>>>>>> ignored >>>>>>>>> during paint and the content is clipped to the element's content-box. >>>>>>>>> With >>>>>>>>> this feature, `overflow:visible` will result in content outside the >>>>>>>>> element's content-box to paint as ink overflow. We've collected use >>>>>>>>> counter >>>>>>>>> data to measure the number of sites which could be affected by this. >>>>>>>>> The >>>>>>>>> use counter data collected over 1 week of a stable release (M102) is >>>>>>>>> as >>>>>>>>> follows. We collected 2 different counters explained below. * The >>>>>>>>> first >>>>>>>>> measures any instance where overflow is explicitly set from developer >>>>>>>>> styles to visible. The percentage of page loads with this is 2.16%. * >>>>>>>>> The >>>>>>>>> second measures the above instances but only includes the cases with >>>>>>>>> object-fit set to cover or none or object-position set to any value >>>>>>>>> other >>>>>>>>> than the default (50% 50%). The rationale behind this counter is to >>>>>>>>> exclude >>>>>>>>> cases which can not cause overflow (such as object-fit:contain), even >>>>>>>>> if >>>>>>>>> overflow is set to visible. The percentage of page loads with this is >>>>>>>>> 0.017%. >>>>>>>>> >>>>>>>> >>>>>>>> That's not nothing. Any idea what breakage may look like? >>>>>>>> Can we maybe collect histograms on *how much* overflow would occur >>>>>>>> in those cases? (maybe with ClusterTelemetry initially, to get a rough >>>>>>>> idea >>>>>>>> in the lab) >>>>>>>> >>>>>>> >>>>>>> I ran an analysis on CT using top 100k sites for desktop and top 10k >>>>>>> sites on mobile. The raw numbers are here: desktop >>>>>>> <https://docs.google.com/spreadsheets/d/1kKWq8kqZOfCXqiHaiamYNDdTs5x1_YJfDTnAgXOIwaE/edit#gid=0> >>>>>>> and mobile >>>>>>> <https://docs.google.com/spreadsheets/d/1SrNyrEe4yzCOIxqNOlNgCk8O58NqqoBlBTd4Wn_gKCc/edit#gid=0>, >>>>>>> and the rough patch >>>>>>> <https://chromium-review.googlesource.com/c/chromium/src/+/3749485> to >>>>>>> collect this data. The highlights from the analysis are below: >>>>>>> >>>>>>> - The number of sites which override the default CSS to allow >>>>>>> overflow *and* also had overflow during painting was 13 out of 10k on >>>>>>> mobile and 39 out of 63k on desktop (only 63k sites yielded results >>>>>>> out of >>>>>>> 100k). >>>>>>> >>>>>>> - I measured the percentage of area painted outside the content >>>>>>> box out of the total painted area. The highest was 88% on desktop >>>>>>> and 70% >>>>>>> on mobile. >>>>>>> >>>>>>> >>>>>> I'm not sure what that means in practice. Can you elaborate? Have you >>>>>> looked at extreme cases to see the impact there? >>>>>> >>>>> >>>>> Sorry, I should've added more details. :) I was looking for breakages >>>>> with 2 numbers: sites with the largest number of overflowing pixels (such >>>>> that other content could be occluded); sites with the largest percentage >>>>> of >>>>> image content outside the content box. But I realize the former is >>>>> probably >>>>> better to identify breakages. >>>>> >>>>> Looking at the top 10 sites, the worst affected is liveops.com. This >>>>> has cases which use object-fit:cover so the image scales to a size bigger >>>>> than its content rect and developer CSS overrides overflow to visible. >>>>> Unfortunately, interacting more with this site, I did see images which are >>>>> drawing above other content (screenshot attached) as you scroll down. This >>>>> pattern showed up on the rest of the sites with high overflow numbers too >>>>> (another example with screenshot attached). >>>>> >>>>> This kind of breakage is expected with this change. I'm not sure where >>>>> to put the cutoff to identify sites with significant breakage, but there >>>>> are at least 30 sites (out of 63k) that have images with more than 100px >>>>> of >>>>> overflow. The fix for the developer is to trace down the source of the >>>>> overflow override and remove it. >>>>> >>>>> I'm not sure what's the recommended way to progress with a behaviour >>>>> change like this given these numbers, the instances of affected sites >>>>> seems >>>>> low. Since the fix is simple, but hard to diagnose, one option could be to >>>>> add a warning to the console: "overflow:visible now causes images to draw >>>>> outside their bounds. Please make sure this style is intentional" for a >>>>> few >>>>> releases (credits to @Vladimir Levin <vmp...@chromium.org> for the >>>>> idea). Would that suffice? >>>>> >>>>> This feels like a fairly challenging bug to diagnose out without a >>>>> DevTools >>>>> issue <https://developer.chrome.com/docs/devtools/issues/> (or >>>>> similar console message that links to some useful docs, as you proposed). >>>>> Would we have the ability to conditionally create these for some overflow >>>>> threshold value? >>>>> >>>> Sure, we can do this conditionally based on the area of overflow. I'd >>>> be inclined to always do it if the UA style is overridden to allow overflow >>>> for at least a few releases. Since it's likely that existing sites are not >>>> overriding this style intentionally (because currently it's a no-op). Just >>>> to catch cases which don't show up in local testing because scaling of the >>>> image (with properties like object-fit) can depend on the form factor of >>>> the device. >>>> >>>>> >>>>> >>>>>> >>>>>>> I manually went through ~10 sites on both desktop and mobile. For >>>>>>> the ones which repro-ed, the breakage was losing rounded corners because >>>>>>> border-radius doesn't clip the content if 'overflow' is 'visible'. In >>>>>>> fact >>>>>>> a few sites had the same code, likely coming from customerly >>>>>>> <https://www.customerly.io/> based on class names and the UX. There >>>>>>> was one case where an image (used in the background) had >>>>>>> object-fit:cover >>>>>>> and overflowed outside the content box now. I've attached screenshots >>>>>>> for >>>>>>> both of these. >>>>>>> >>>>>>> Overall I didn't see any case where the overflow occluded any other >>>>>>> content on the page. >>>>>>> >>>>>> >>>>>> That's reassuring! :) >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> *Gecko*: No signal ( >>>>>>>>> https://github.com/mozilla/standards-positions/issues/659) >>>>>>>>> >>>>>>>>> *WebKit*: No signal ( >>>>>>>>> https://lists.webkit.org/pipermail/webkit-dev/2022-June/032317.html >>>>>>>>> ) >>>>>>>>> >>>>>>>>> *Web developers*: No signals >>>>>>>>> >>>>>>>>> *Other signals*: >>>>>>>>> >>>>>>>>> WebView application risks >>>>>>>>> >>>>>>>>> Does this intent deprecate or change behavior of existing APIs, >>>>>>>>> such that it has potentially high risk for Android WebView-based >>>>>>>>> applications? >>>>>>>>> >>>>>>>>> Debuggability >>>>>>>>> >>>>>>>>> This is a CSS property which can be debugged in the devtools style >>>>>>>>> panel similar to other CSS properties. >>>>>>>>> >>>>>>>>> Will this feature be supported on all six Blink platforms >>>>>>>>> (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)? >>>>>>>>> Yes >>>>>>>>> >>>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>>> ? Yes >>>>>>>>> >>>>>>>>> Flag name CSSOverflowForReplacedElements >>>>>>>>> >>>>>>>>> *Note: Because of the compat risk with this feature, this flag can >>>>>>>>> be controlled via Finch. This will allow us to rollback with a >>>>>>>>> server-side >>>>>>>>> config change if needed.* >>>>>>>>> >>>>>>>>> Requires code in //chrome? False >>>>>>>>> >>>>>>>>> Tracking bug >>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1321217 >>>>>>>>> >>>>>>>>> Estimated milestones >>>>>>>>> >>>>>>>>> M105 >>>>>>>>> >>>>>>>>> Anticipated spec changes >>>>>>>>> >>>>>>>>> N/A >>>>>>>>> >>>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>>> https://chromestatus.com/feature/5137515594383360 >>>>>>>>> >>>>>>>>> Links to previous Intent discussions Intent to prototype: >>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUykJWEAqVzcUy15fpBNdA68508Mny_1z--FCBKXRTZOFQ%40mail.gmail.com >>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/camluwuykjweaqvzcuy15fpbnda68508mny_1z--fcbkxrtz...@mail.gmail.com> >>>>>>>>> >>>>>>>>> >>>>>>>>> This intent message was generated by Chrome Platform Status >>>>>>>>> <https://chromestatus.com/>. >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "blink-dev" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to blink-dev+unsubscr...@chromium.org. >>>>>>>>> To view this discussion on the web visit >>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUze8JV6twLfhPBwkXj_UBMGApU048OdY33hYQn_KDj2rA%40mail.gmail.com >>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUze8JV6twLfhPBwkXj_UBMGApU048OdY33hYQn_KDj2rA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>>>> . >>>>>>>>> >>>>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "blink-dev" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to blink-dev+unsubscr...@chromium.org. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUz9cutp%2BinEc3%2B7sdv%2B2TPoBbEeFCZjZFExBHSOL1p47A%40mail.gmail.com >>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUz9cutp%2BinEc3%2B7sdv%2B2TPoBbEeFCZjZFExBHSOL1p47A%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> >>>>> -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUy5zyHePkt06pjbtAE_vu1VjbybK5VXURhuSETyR%2Bu54g%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMLuWUy5zyHePkt06pjbtAE_vu1VjbybK5VXURhuSETyR%2Bu54g%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfWgn%2BX-KL3Hjqo6tXA77x3W7CWFW31%3DZVBW%3D_6xt_ra7Q%40mail.gmail.com.