RESOLVED FIXED Bug 219635
[macOS] Change Universal Access zoom in the UI process
https://bugs.webkit.org/show_bug.cgi?id=219635
Summary [macOS] Change Universal Access zoom in the UI process
Per Arne Vollan
Reported 2020-12-08 02:32:35 PST
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.
Attachments
Patch (11.47 KB, patch)
2020-12-08 02:45 PST, Per Arne Vollan
darin: review+
Patch (19.52 KB, patch)
2020-12-09 04:30 PST, Per Arne Vollan
ews-feeder: commit-queue-
Patch (19.62 KB, patch)
2020-12-09 04:52 PST, Per Arne Vollan
no flags
Per Arne Vollan
Comment 1 2020-12-08 02:45:26 PST
Darin Adler
Comment 2 2020-12-08 12:10:44 PST
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.
Per Arne Vollan
Comment 3 2020-12-09 04:30:56 PST
Per Arne Vollan
Comment 4 2020-12-09 04:52:44 PST
EWS
Comment 5 2020-12-09 05:48:01 PST
Committed r270577: <https://trac.webkit.org/changeset/270577> All reviewed patches have been landed. Closing bug and clearing flags on attachment 415745 [details].
Radar WebKit Bug Importer
Comment 6 2020-12-09 05:48:16 PST
Note You need to log in before you can comment on or make changes to this bug.