chromium/chrome/browser/resources/chromeos/accessibility/definitions/windows.d.ts

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/**
 * @fileoverview Definitions for chrome.windows API
 * Generated from: chrome/common/extensions/api/windows.json
 * run `tools/json_schema_compiler/compiler.py
 * chrome/common/extensions/api/windows.json -g ts_definitions` to regenerate.
 */

import {ChromeEvent} from '../../../../../../tools/typescript/definitions/chrome_event.js';

declare global {
  export namespace chrome {

    export namespace windows {

      export const WINDOW_ID_NONE: number;

      export const WINDOW_ID_CURRENT: number;

      export enum WindowType {
        NORMAL = 'normal',
        POPUP = 'popup',
        PANEL = 'panel',
        APP = 'app',
        DEVTOOLS = 'devtools',
      }

      export enum WindowState {
        NORMAL = 'normal',
        MINIMIZED = 'minimized',
        MAXIMIZED = 'maximized',
        FULLSCREEN = 'fullscreen',
        LOCKED_FULLSCREEN = 'locked-fullscreen',
      }

      export interface Window {
        id?: number;
        focused: boolean;
        top?: number;
        left?: number;
        width?: number;
        height?: number;
        tabs?: tabs.Tab[];
        incognito: boolean;
        type?: WindowType;
        state?: WindowState;
        alwaysOnTop: boolean;
        sessionId?: string;
      }

      export enum CreateType {
        NORMAL = 'normal',
        POPUP = 'popup',
        PANEL = 'panel',
      }

      export interface QueryOptions {
        populate?: boolean;
        windowTypes?: WindowType[];
      }

      export function get(
          windowId: number, queryOptions?: QueryOptions,
          callback?: (window: Window) => void): void;

      export function getCurrent(
          queryOptions?: QueryOptions,
          callback?: (window: Window) => void): void;

      export function getLastFocused(
          queryOptions?: QueryOptions,
          callback?: (window: Window) => void): void;

      export function getAll(
          queryOptionsOrCallback?: QueryOptions|((windows: Window[]) => void),
          callback?: (windows: Window[]) => void): void;

      export function create(
          createData?: {
            url?: string|string[],
            tabId?: number,
            left?: number,
            top?: number,
            width?: number,
            height?: number,
            focused?: boolean,
            incognito?: boolean,
            type?: CreateType,
            state?: WindowState,
            setSelfAsOpener?: boolean,
          },
          callback?: (window: Window) => void): void;

      export function update(
          windowId: number, updateInfo: {
            left?: number,
            top?: number,
            width?: number,
            height?: number,
            focused?: boolean,
            drawAttention?: boolean,
            state?: WindowState,
          },
          callback?: (window: Window) => void): void;

      export function remove(windowId: number, callback?: () => void): void;

      export const onCreated: ChromeEvent<(window: Window) => void>;

      export const onRemoved: ChromeEvent<(windowId: number) => void>;

      export const onFocusChanged: ChromeEvent<(windowId: number) => void>;

      export const onBoundsChanged: ChromeEvent<(window: Window) => void>;

    }
  }
}