We have UseCounter data from M105 stable to quantify the large breakage for this feature. Large is a page load where any image, video or canvas drawn on the page paints over 5k CSS pixels outside its content-box. The precise numbers (with page load count) are here <https://docs.google.com/document/d/1GC2wanCPtoboSujQVr5xoCDlpzzhspr0PHA-OBgGbEY/edit> (sorry can't share the details externally).
In terms of percentage, Windows/Mac had ~0.006% page loads fall in the large breakage category and Android had ~0.007%. On Tue, Aug 2, 2022 at 3:14 PM Khushal Sagar <khushalsa...@chromium.org> wrote: > > > On Mon, Aug 1, 2022 at 12:11 PM Yoav Weiss <yoavwe...@chromium.org> wrote: > >> >> >> 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. >> > > Currently we're recording a UseCounter when any breakage would happen, > i.e, there is any pixel overflow. If it helps to have a UseCounter for > overflow above a threshold, I'm happy to add that too. > > We do have an UMA metric which measures the number of overflowing pixels > when there is overflow but it's for all images rendered. I can tie it to > the UseCounter so we can also know the number of affected page loads with > large breakage. I'll wait till the end of the week for more feedback, > otherwise assume 5k is a good threshold for large breakage. > > >> >> >>> >>> >>>> >>>> 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/CAMLuWUyMripzxp%2Bjn_3_-UVuXXHdjqg_HgOwGHKbrDjMH0fg6A%40mail.gmail.com.