// 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.
// This file was generated by:
// tools/json_schema_compiler/compiler.py.
// NOTE: The format of types has changed. 'FooType' is now
// 'chrome.inputMethodPrivate.FooType'.
// Please run the closure compiler before committing changes.
// See https://chromium.googlesource.com/chromium/src/+/main/docs/closure_compilation.md
/**
* @fileoverview Externs generated from namespace: inputMethodPrivate
* @externs
*/
/** @const */
chrome.inputMethodPrivate = {};
/**
* @enum {string}
*/
chrome.inputMethodPrivate.MenuItemStyle = {
CHECK: 'check',
RADIO: 'radio',
SEPARATOR: 'separator',
};
/**
* A menu item used by an input method to interact with the user from the
* language menu.
* @typedef {{
* id: string,
* label: (string|undefined),
* style: (!chrome.inputMethodPrivate.MenuItemStyle|undefined),
* visible: (boolean|undefined),
* checked: (boolean|undefined),
* enabled: (boolean|undefined)
* }}
*/
chrome.inputMethodPrivate.MenuItem;
/**
* @enum {string}
*/
chrome.inputMethodPrivate.UnderlineStyle = {
UNDERLINE: 'underline',
DOUBLE_UNDERLINE: 'doubleUnderline',
NO_UNDERLINE: 'noUnderline',
};
/**
* @enum {string}
*/
chrome.inputMethodPrivate.FocusReason = {
MOUSE: 'mouse',
TOUCH: 'touch',
PEN: 'pen',
OTHER: 'other',
};
/**
* @enum {string}
*/
chrome.inputMethodPrivate.InputModeType = {
NO_KEYBOARD: 'noKeyboard',
TEXT: 'text',
TEL: 'tel',
URL: 'url',
EMAIL: 'email',
NUMERIC: 'numeric',
DECIMAL: 'decimal',
SEARCH: 'search',
};
/**
* @enum {string}
*/
chrome.inputMethodPrivate.InputContextType = {
TEXT: 'text',
SEARCH: 'search',
TEL: 'tel',
URL: 'url',
EMAIL: 'email',
NUMBER: 'number',
PASSWORD: 'password',
NULL: 'null',
};
/**
* @enum {string}
*/
chrome.inputMethodPrivate.AutoCapitalizeType = {
OFF: 'off',
CHARACTERS: 'characters',
WORDS: 'words',
SENTENCES: 'sentences',
};
/**
* @enum {string}
*/
chrome.inputMethodPrivate.LanguagePackStatus = {
UNKNOWN: 'unknown',
NOT_INSTALLED: 'notInstalled',
IN_PROGRESS: 'inProgress',
INSTALLED: 'installed',
ERROR_OTHER: 'errorOther',
ERROR_NEEDS_REBOOT: 'errorNeedsReboot',
};
/**
* Object returned by callbacks when the status of language packs change.
* @typedef {{
* engineIds: !Array<string>,
* status: !chrome.inputMethodPrivate.LanguagePackStatus
* }}
*/
chrome.inputMethodPrivate.LanguagePackStatusChange;
/**
* Describes an input Context
* @typedef {{
* contextID: number,
* type: !chrome.inputMethodPrivate.InputContextType,
* mode: !chrome.inputMethodPrivate.InputModeType,
* autoCorrect: boolean,
* autoComplete: boolean,
* autoCapitalize: !chrome.inputMethodPrivate.AutoCapitalizeType,
* spellCheck: boolean,
* shouldDoLearning: boolean,
* focusReason: !chrome.inputMethodPrivate.FocusReason,
* appKey: (string|undefined)
* }}
*/
chrome.inputMethodPrivate.InputContext;
/**
* User preference settings for a specific input method. Japanese input methods
* are not included because they are managed separately by Mozc module.
* @typedef {{
* enableCompletion: (boolean|undefined),
* enableDoubleSpacePeriod: (boolean|undefined),
* enableGestureTyping: (boolean|undefined),
* enablePrediction: (boolean|undefined),
* enableSoundOnKeypress: (boolean|undefined),
* physicalKeyboardAutoCorrectionEnabledByDefault: (boolean|undefined),
* physicalKeyboardAutoCorrectionLevel: (number|undefined),
* physicalKeyboardEnableCapitalization: (boolean|undefined),
* physicalKeyboardEnableDiacriticsOnLongpress: (boolean|undefined),
* physicalKeyboardEnablePredictiveWriting: (boolean|undefined),
* virtualKeyboardAutoCorrectionLevel: (number|undefined),
* virtualKeyboardEnableCapitalization: (boolean|undefined),
* xkbLayout: (string|undefined),
* koreanEnableSyllableInput: (boolean|undefined),
* koreanKeyboardLayout: (string|undefined),
* koreanShowHangulCandidate: (boolean|undefined),
* pinyinChinesePunctuation: (boolean|undefined),
* pinyinDefaultChinese: (boolean|undefined),
* pinyinEnableFuzzy: (boolean|undefined),
* pinyinEnableLowerPaging: (boolean|undefined),
* pinyinEnableUpperPaging: (boolean|undefined),
* pinyinFullWidthCharacter: (boolean|undefined),
* pinyinFuzzyConfig: ({
* an_ang: (boolean|undefined),
* c_ch: (boolean|undefined),
* en_eng: (boolean|undefined),
* f_h: (boolean|undefined),
* ian_iang: (boolean|undefined),
* in_ing: (boolean|undefined),
* k_g: (boolean|undefined),
* l_n: (boolean|undefined),
* r_l: (boolean|undefined),
* s_sh: (boolean|undefined),
* uan_uang: (boolean|undefined),
* z_zh: (boolean|undefined)
* }|undefined),
* zhuyinKeyboardLayout: (string|undefined),
* zhuyinPageSize: (number|undefined),
* zhuyinSelectKeys: (string|undefined),
* vietnameseVniAllowFlexibleDiacritics: (boolean|undefined),
* vietnameseVniNewStyleToneMarkPlacement: (boolean|undefined),
* vietnameseVniInsertDoubleHornOnUo: (boolean|undefined),
* vietnameseVniShowUnderline: (boolean|undefined),
* vietnameseTelexAllowFlexibleDiacritics: (boolean|undefined),
* vietnameseTelexNewStyleToneMarkPlacement: (boolean|undefined),
* vietnameseTelexInsertDoubleHornOnUo: (boolean|undefined),
* vietnameseTelexInsertUHornOnW: (boolean|undefined),
* vietnameseTelexShowUnderline: (boolean|undefined)
* }}
*/
chrome.inputMethodPrivate.InputMethodSettings;
/**
* Gets configurations for input methods.
* @param {function({
* isPhysicalKeyboardAutocorrectEnabled: boolean,
* isImeMenuActivated: boolean
* }): void} callback Callback which is called with the config object.
*/
chrome.inputMethodPrivate.getInputMethodConfig = function(callback) {};
/**
* Gets all enabled input methods, sorted in ascending order of their localized
* full display names, according to the lexicographical order defined by the
* current system locale aka. display language.
* @param {function(!Array<{
* id: string,
* name: string,
* indicator: string
* }>): void} callback Callback which is called with the input method objects.
*/
chrome.inputMethodPrivate.getInputMethods = function(callback) {};
/**
* Gets the current input method.
* @param {function(string): void} callback Callback which is called with the
* current input method.
*/
chrome.inputMethodPrivate.getCurrentInputMethod = function(callback) {};
/**
* Sets the current input method.
* @param {string} inputMethodId The input method ID to be set as current input
* method.
* @param {function(): void=} callback Callback which is called once the current
* input method is set. If unsuccessful $(ref:runtime.lastError) is set.
*/
chrome.inputMethodPrivate.setCurrentInputMethod = function(inputMethodId, callback) {};
/**
* Switches to the last used input method. If no last used input method, this is
* a no-op.
* @param {function(): void=} callback Callback which is called once the input
* method is swapped (if applicable). If unsuccessful
* $(ref:runtime.lastError) is set.
*/
chrome.inputMethodPrivate.switchToLastUsedInputMethod = function(callback) {};
/**
* Fetches a list of all the words currently in the dictionary.
* @param {function(!Array<string>): void} callback Callback which is called
* once the list of dictionary words are ready.
*/
chrome.inputMethodPrivate.fetchAllDictionaryWords = function(callback) {};
/**
* Adds a single word to be stored in the dictionary.
* @param {string} word A new word to add to the dictionary.
* @param {function(): void=} callback Callback which is called once the word is
* added. If unsuccessful $(ref:runtime.lastError) is set.
*/
chrome.inputMethodPrivate.addWordToDictionary = function(word, callback) {};
/**
* Sets the XKB layout for the given input method.
* @param {string} xkb_name The XKB layout name.
* @param {function(): void=} callback Callback which is called when the layout
* is set.
*/
chrome.inputMethodPrivate.setXkbLayout = function(xkb_name, callback) {};
/**
* Commits the text currently being composed without moving the selected text
* range. This is a no-op if the context is incorrect.
* @param {{
* contextID: number
* }} parameters
* @param {function(): void=} callback Called when the operation completes.
*/
chrome.inputMethodPrivate.finishComposingText = function(parameters, callback) {};
/**
* Shows the input view window. If the input view window is already shown, this
* function will do nothing.
* @param {function(): void=} callback Called when the operation completes.
*/
chrome.inputMethodPrivate.showInputView = function(callback) {};
/**
* Hides the input view window. If the input view window is already hidden, this
* function will do nothing.
* @param {function(): void=} callback Called when the operation completes.
*/
chrome.inputMethodPrivate.hideInputView = function(callback) {};
/**
* Opens the options page for the input method extension. If the input method
* does not have options, this function will do nothing.
* @param {string} inputMethodId ID of the input method to open options for.
*/
chrome.inputMethodPrivate.openOptionsPage = function(inputMethodId) {};
/**
* Gets the surrounding text of the current selection. WARNING: This could
* return a stale cache that doesn't reflect reality, due to async between IMF
* and TextInputClient.
* @param {number} beforeLength The number of characters before the current
* selection.
* @param {number} afterLength The number of characters after the current
* selection.
* @param {function({
* before: string,
* selected: string,
* after: string
* }): void} callback Callback which is called to provide the result
*/
chrome.inputMethodPrivate.getSurroundingText = function(beforeLength, afterLength, callback) {};
/**
* Gets the current values of all settings for a particular input method
* @param {string} engineID The ID of the engine (e.g. 'zh-t-i0-pinyin',
* 'xkb:us::eng')
* @param {function((!chrome.inputMethodPrivate.InputMethodSettings|undefined)): void}
* callback Callback to receive the settings
*/
chrome.inputMethodPrivate.getSettings = function(engineID, callback) {};
/**
* Sets the value of all settings for a particular input method
* @param {string} engineID The ID of the engine (e.g. 'zh-t-i0-pinyin',
* 'xkb:us::eng')
* @param {!chrome.inputMethodPrivate.InputMethodSettings} settings The settings
* to set
* @param {function(): void=} callback Callback to notify that the new value has
* been set
*/
chrome.inputMethodPrivate.setSettings = function(engineID, settings, callback) {};
/**
* (Deprecated) Set the composition range. If this extension does not own the
* active IME, this fails. Use setComposingRange instead.
* @param {{
* contextID: number,
* selectionBefore: number,
* selectionAfter: number,
* segments: (!Array<{
* start: number,
* end: number,
* style: !chrome.inputMethodPrivate.UnderlineStyle
* }>|undefined)
* }} parameters
* @param {function(boolean): void=} callback Called when the operation
* completes with a boolean indicating if the text was accepted or not. On
* failure, $(ref:runtime.lastError) is set.
*/
chrome.inputMethodPrivate.setCompositionRange = function(parameters, callback) {};
/**
* Resets the current engine to its initial state. Fires an OnReset event.
*/
chrome.inputMethodPrivate.reset = function() {};
/**
* Called after a word has been autocorrected to show some UI for autocorrect.
* @param {{
* contextID: number,
* typedWord: string,
* correctedWord: string,
* startIndex: number
* }} parameters
*/
chrome.inputMethodPrivate.onAutocorrect = function(parameters) {};
/**
* Notifies Chrome that the current input method is ready to accept key events
* from Tast.
*/
chrome.inputMethodPrivate.notifyInputMethodReadyForTesting = function() {};
/**
* Gets the aggregate status of all language packs for a given input method.
* @param {string} inputMethodId Fully qualified ID of the input method
* @param {function(!chrome.inputMethodPrivate.LanguagePackStatus): void}
* callback Called with a LanguagePackStatus when the operation completes.
*/
chrome.inputMethodPrivate.getLanguagePackStatus = function(inputMethodId, callback) {};
/**
* Fired when the caret bounds change.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onCaretBoundsChanged;
/**
* Fired when the input method is changed.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onChanged;
/**
* Fired when the custom spelling dictionary is loaded.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onDictionaryLoaded;
/**
* Fired when words are added or removed from the custom spelling dictionary.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onDictionaryChanged;
/**
* Fired when the IME menu is activated or deactivated.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onImeMenuActivationChanged;
/**
* Fired when the input method or the list of active input method IDs is
* changed.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onImeMenuListChanged;
/**
* Fired when the input.ime.setMenuItems or input.ime.updateMenuItems API is
* called.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onImeMenuItemsChanged;
/**
* This event is sent when focus enters a text box. It is sent to all extensions
* that are listening to this event, and enabled by the user.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onFocus;
/**
* This event is sent when the settings for any input method changed. It is sent
* to all extensions that are listening to this event, and enabled by the user.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onSettingsChanged;
/**
* This event is sent when the screen is being mirrored or the desktop is being
* cast.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onScreenProjectionChanged;
/**
* This event is sent when a new set of suggestions has been generated
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onSuggestionsChanged;
/**
* This event is sent when input method options are changed.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onInputMethodOptionsChanged;
/**
* This event is sent when any IME's language pack status is changed.
* @type {!ChromeEvent}
*/
chrome.inputMethodPrivate.onLanguagePackStatusChanged;