mirror of
https://github.com/electron/electron.git
synced 2026-02-19 03:14:51 -05:00
fix: restore AXDocument accessibility attribute for representedFilename on macOS (#49346)
Starting from Chromium 134.0.6989.0 (Electron 35.0.0-beta.5), the NativeWidgetMacNSWindow class overrides accessibilityDocument to return the web content URL from the accessibility tree, but doesn't fall back to NSWindow's default behavior when that URL is empty. This broke Electron's setRepresentedFilename() API - the file path was still set on the NSWindow, but no longer exposed via the AXDocument accessibility attribute that screen readers use. This fix adds an accessibilityDocument override in ElectronNSWindow that checks representedFilename first, falling back to Chromium's behavior for web content URLs. Fixes: https://github.com/electron/electron/issues/XXXXX Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -285,6 +285,19 @@ void SwizzleSwipeWithEvent(NSView* view, SEL swiz_selector) {
|
||||
return base::SysUTF8ToNSString(shell_ ? shell_->GetTitle() : "");
|
||||
}
|
||||
|
||||
- (NSString*)accessibilityDocument {
|
||||
// Prefer representedFilename set via Electron's setRepresentedFilename API.
|
||||
// This works around a Chromium change (https://crrev.com/c/6187085) where
|
||||
// NativeWidgetMacNSWindow's accessibilityDocument override doesn't fall back
|
||||
// to NSWindow's default behavior of returning the representedFilename.
|
||||
NSString* representedFilename = [self representedFilename];
|
||||
if (representedFilename.length > 0) {
|
||||
return [[NSURL fileURLWithPath:representedFilename] absoluteString];
|
||||
}
|
||||
// Fall back to Chromium's implementation for web content URLs.
|
||||
return [super accessibilityDocument];
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeMainWindow {
|
||||
return !self.disableKeyOrMainWindow;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user