Currently, the API UAZoomChangeFocus is called in the WebContent process when Universal Access zoom is enabled. To enable us to block the HI service com.apple.hiservices-xpcservice in the WebContent process, this call should be performed in the UI process.
Created attachment 415625 [details] Patch
Comment on attachment 415625 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=415625&action=review I think we are moving too much of the code from shared between WebKit and WebKitLegacy to have two copies. > Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:717 > +void WebPageProxy::changeUniversalAccessZoomFocus(const WebCore::IntRect& viewRect, const WebCore::IntRect& selectionRect) Can we find a way to share this code between WebKit and WebKitLegacy? Maybe put a function in WebCore they both call? It’s annoying to have two copies. > Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:727 > + NSRect nsCaretRect = NSMakeRect(selectionRect.x(), selectionRect.y(), selectionRect.width(), selectionRect.height()); > + NSRect nsViewRect = NSMakeRect(viewRect.x(), viewRect.y(), viewRect.width(), viewRect.height()); > + nsCaretRect = toUserSpaceForPrimaryScreen(nsCaretRect); > + nsViewRect = toUserSpaceForPrimaryScreen(nsViewRect); > + CGRect cgCaretRect = NSRectToCGRect(nsCaretRect); > + CGRect cgViewRect = NSRectToCGRect(nsViewRect); I know this is just moved code, but I suggest this alternative way of writing it: auto cgCaretRect = NSRectToCGRect(toUserSpaceForPrimaryScreen(selectionRect)); auto cgViewRect = NSRectToCGRect(toUserSpaceForPrimaryScreen(viewRect)); This should compile and do the same as the code above. If not, I’d like to know why not. > Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm:1185 > + NSRect nsCaretRect = NSMakeRect(selectionRect.x(), selectionRect.y(), selectionRect.width(), selectionRect.height()); > + NSRect nsViewRect = NSMakeRect(viewRect.x(), viewRect.y(), viewRect.width(), viewRect.height()); > + nsCaretRect = toUserSpaceForPrimaryScreen(nsCaretRect); > + nsViewRect = toUserSpaceForPrimaryScreen(nsViewRect); > + CGRect cgCaretRect = NSRectToCGRect(nsCaretRect); > + CGRect cgViewRect = NSRectToCGRect(nsViewRect); Ditto.
Created attachment 415744 [details] Patch
Created attachment 415745 [details] Patch
Committed r270577: <https://trac.webkit.org/changeset/270577> All reviewed patches have been landed. Closing bug and clearing flags on attachment 415745 [details].
<rdar://problem/72134245>