// Copyright 2021 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.settingsPrivate API */
// TODO(crbug.com/40179454): Auto-generate this file.
import {ChromeEvent} from './chrome_event.js';
declare global {
export namespace chrome {
export namespace settingsPrivate {
export enum PrefType {
BOOLEAN = 'BOOLEAN',
NUMBER = 'NUMBER',
STRING = 'STRING',
URL = 'URL',
LIST = 'LIST',
DICTIONARY = 'DICTIONARY',
}
export enum ControlledBy {
DEVICE_POLICY = 'DEVICE_POLICY',
USER_POLICY = 'USER_POLICY',
OWNER = 'OWNER',
PRIMARY_USER = 'PRIMARY_USER',
EXTENSION = 'EXTENSION',
PARENT = 'PARENT',
CHILD_RESTRICTION = 'CHILD_RESTRICTION',
}
export enum Enforcement {
ENFORCED = 'ENFORCED',
RECOMMENDED = 'RECOMMENDED',
PARENT_SUPERVISED = 'PARENT_SUPERVISED',
}
// TODO(crbug.com/40242259) Update existing usages of PrefObject to be
// typed, removing the need to use any here.
export interface PrefObject<T = any> {
key: string;
type:
// clang-format off
T extends boolean ? PrefType.BOOLEAN :
T extends number ? PrefType.NUMBER :
T extends string ? PrefType.STRING | PrefType.URL :
T extends unknown[] ? PrefType.LIST :
T extends Record<string|number, unknown> ? PrefType.DICTIONARY :
never;
// clang-format on
value: T;
controlledBy?: ControlledBy;
controlledByName?: string;
enforcement?: Enforcement;
recommendedValue?: T;
userSelectableValues?: T[];
userControlDisabled?: boolean;
extensionId?: string;
extensionCanBeDisabled?: boolean;
}
export function getAllPrefs(): Promise<PrefObject[]>;
export function getPref(name: string): Promise<PrefObject>;
export function setPref(name: string, value: any, pageId?: string):
Promise<boolean>;
export function getDefaultZoom(): Promise<number>;
export function setDefaultZoom(zoom: number): void;
type PrefsCallback = (prefs: PrefObject[]) => void;
export const onPrefsChanged: ChromeEvent<PrefsCallback>;
}
}
}