refactor: use WidgetDelegate::SetAccessibleTitle() (#46765)

* refactor: use WidgetDelegate::SetAccessibleTitle()

* test: add window.accessibleTitle tests
This commit is contained in:
Charles Kerr 2025-05-07 10:44:53 -05:00 committed by GitHub
commit 924a8da940
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 33 additions and 14 deletions

View file

@ -781,14 +781,6 @@ const views::Widget* NativeWindow::GetWidget() const {
return widget();
}
std::u16string NativeWindow::GetAccessibleWindowTitle() const {
if (accessible_title_.empty()) {
return views::WidgetDelegate::GetAccessibleWindowTitle();
}
return accessible_title_;
}
std::string NativeWindow::GetTitle() const {
return base::UTF16ToUTF8(WidgetDelegate::GetWindowTitle());
}
@ -802,11 +794,11 @@ void NativeWindow::SetTitle(const std::string_view title) {
}
void NativeWindow::SetAccessibleTitle(const std::string& title) {
accessible_title_ = base::UTF8ToUTF16(title);
WidgetDelegate::SetAccessibleTitle(base::UTF8ToUTF16(title));
}
std::string NativeWindow::GetAccessibleTitle() {
return base::UTF16ToUTF8(accessible_title_);
return base::UTF16ToUTF8(GetAccessibleWindowTitle());
}
void NativeWindow::HandlePendingFullscreenTransitions() {

View file

@ -447,7 +447,6 @@ class NativeWindow : public base::SupportsUserData,
// views::WidgetDelegate:
views::Widget* GetWidget() override;
const views::Widget* GetWidget() const override;
std::u16string GetAccessibleWindowTitle() const override;
void set_content_view(views::View* view) { content_view_ = view; }
@ -532,9 +531,6 @@ class NativeWindow : public base::SupportsUserData,
absl::flat_hash_set<BackgroundThrottlingSource*>
background_throttling_sources_;
// Accessible title.
std::u16string accessible_title_;
std::string vibrancy_;
std::string background_material_;

View file

@ -16,6 +16,7 @@ import { setTimeout } from 'node:timers/promises';
import * as nodeUrl from 'node:url';
import { emittedUntil, emittedNTimes } from './lib/events-helpers';
import { randomString } from './lib/net-helpers';
import { HexColors, hasCapturableScreen, ScreenCapture } from './lib/screen-helpers';
import { ifit, ifdescribe, defer, listen, waitUntil } from './lib/spec-helpers';
import { closeWindow, closeAllWindows } from './lib/window-helpers';
@ -232,6 +233,36 @@ describe('BrowserWindow module', () => {
});
});
describe('window.accessibleTitle', () => {
const title = 'Window Title';
let w: BrowserWindow;
beforeEach(() => {
w = new BrowserWindow({ show: false, title, webPreferences: { nodeIntegration: true, contextIsolation: false } });
});
afterEach(async () => {
await closeWindow(w);
w = null as unknown as BrowserWindow;
});
it('should default to the window title', async () => {
expect(w.accessibleTitle).to.equal(title);
});
it('should be mutable', async () => {
const accessibleTitle = randomString(20);
w.accessibleTitle = accessibleTitle;
expect(w.accessibleTitle).to.equal(accessibleTitle);
});
it('should be clearable', async () => {
const accessibleTitle = randomString(20);
w.accessibleTitle = accessibleTitle;
expect(w.accessibleTitle).to.equal(accessibleTitle);
w.accessibleTitle = '';
expect(w.accessibleTitle).to.equal(title);
});
});
describe('window.close()', () => {
let w: BrowserWindow;
beforeEach(() => {