| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /** |
| * @fileoverview An interface to control the ChromeVox Panel. |
| */ |
| import {PanelMode} from './panel_mode.js'; |
| |
| // TODO(a11y): Convert to an interface once TypeScript migration is done. |
| export abstract class PanelInterface { |
| static instance?: PanelInterface; |
| |
| /** |
| * Close the menus and restore focus to the page. If a menu item's callback |
| * was queued, execute it once focus is restored. |
| */ |
| abstract closeMenusAndRestoreFocus(): Promise<void>; |
| |
| abstract get mode(): PanelMode; |
| |
| abstract setMode(mode: PanelMode): void; |
| |
| abstract get sessionState(): string; |
| |
| abstract onClose(): void; |
| |
| /** |
| * A callback function to be executed to perform the action from selecting |
| * a menu item after the menu has been closed and focus has been restored |
| * to the page or wherever it was previously. |
| */ |
| abstract setPendingCallback(callback: (() => Promise<void>) | null): void; |
| } |