Thank you Philip. Since this accessibility support function is called for all renderer types (in ChromeOS including Arc++ and Ash), there would be a better consistency if we have the snapshotting code in the renderer. Therefore I am trying to avoid using the browser side ui::GrabViewSnapshot (as in DevTools), unless the alternative approach proves to be too complicated or unnecessarily heavy.
I tried using DataTransfer::NodeImage in this draft CL <http://crrev.com/c/3370381>, but my understanding is that since it triggers a repaint, we should make sure it is not in the middle of a lifecycle update to avoid conflicts. Is there a notification of a signal that tells when it's safe to request it? I assume it's the same for the SpoolSinglePage as it also redraws the image. And performance wise, can we say that as this approach triggers a repaint, it's heavier than the browser based snapshotting (using ui::GrabViewSnapshot), as the latter is using the already painted output and does not require a repaint? Best, Ramin On Fri, Jan 7, 2022 at 11:06 PM Philip Rogers <[email protected]> wrote: > This is a deceptively difficult problem in general. Our paint system uses > the CSS definition of paint order which starts painting at stacking > contexts and it is challenging to exclude non-stacked siblings of a > non-stacked target element. Some other complications are whether ancestor > effects/clips should be applied, and whether content behind the target > should be included. > > DataTransfer::NodeImage is an attempt at this. Another option is to get > the entire page painted (examples: devtools uses > PageHandler::CaptureScreenshot and printing uses SpoolSinglePage), then > crop it to the target element. > > On Fri, Jan 7, 2022 at 7:01 AM 'Ramin Halavati' via blink-dev < > [email protected]> wrote: > >> Hi, >> >> I am trying to find a way to get pixels for any general node in >> *third_party/blink/renderer/modules/accessibility. *We already have >> AXNodeObject::ImageDataUrl >> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/accessibility/ax_node_object.cc;drc=a3ae56ec162fcbf9ee400e9ff80f1ae572957fd3;bpv=1;bpt=1;l=2355?gsn=ImageDataUrl&gs=kythe%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%3Flang%3Dc%252B%252B%3Fpath%3Dsrc%2Fthird_party%2Fblink%2Frenderer%2Fmodules%2Faccessibility%2Fax_node_object.cc%23rau1_dUeeJHt__0C5nqtyH5ouOMnhdEN55IRAHfVRMk&gs=kythe%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%3Flang%3Dc%252B%252B%3Fpath%3Dsrc%2Fthird_party%2Fblink%2Frenderer%2Fmodules%2Faccessibility%2Fax_node_object.h%23z0USMj0KE_TnmxgTOdb4D-K1NmRUt1i1gyvtbSdYs5w> >> function >> to return the bitmap of a certain node, but it is only supporting HTML >> element types that already include a picture (namely image, canvas, video) >> and I am trying to expand to to any general element type. >> >> So far I've been looking for a way to get access to a painter or >> compositor, but I did not find any promising solution yet. Can you point me >> in the right direction? Is it even expected at this abstraction level? >> >> Thanks, >> Ramin >> >> P.S., Sorry for naive questions and please point me to the right email >> thread if this is not. >> >> -- >> 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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAORodQi_LSUFXWxpfAKQKKVhRzK1UvGVz%2B4unQUN2qskFSSafw%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAORodQi_LSUFXWxpfAKQKKVhRzK1UvGVz%2B4unQUN2qskFSSafw%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 [email protected]. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAORodQiA7D5iGYMpD-eFNUbD3TFboi3oH6VZSdqQJANuqbYgbQ%40mail.gmail.com.
