blob: f0a261d13ef3cab11278bcbd2725f67ac8d96658 [file] [log] [blame]
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// API for integration testing. To be used on test images with a test component
// extension.
namespace autotestPrivate {
enum ShelfAlignmentType {
// BottomLocked not supported by shelf_prefs.
Bottom, Left, Right
// A mapping of ash::ShelfItemType.
enum ShelfItemType {
// A mapping of ash::ShelfItemStatus.
enum ShelfItemStatus {
// A mapping of apps::mojom::Type
enum AppType {
// A mapping of apps::mojom::InstallSource
enum AppInstallSource {
// A mapping of apps::mojom::Readiness
enum AppReadiness {
// A subset of Window State types in ash::WindowStateType. We may add more
// into the set in the future.
enum WindowStateType {
// A subset of WM event types in ash::WMEventType. We may add more in the
// set in the future.
enum WMEventType {
// Display orientation type.
enum RotationType {
// RotateAny is the auto-rotation status (not locked to a rotation) for
// tablet mode. Not working in clamshell mode.
enum LauncherStateType {
enum OverviewStateType {
enum MouseButton {
// A paramter used in setArcAppWindowState() function.
dictionary WindowStateChangeDict {
// The WM event to change the ARC window state.
WMEventType eventType;
// If the initial state is already same as the expected state, should we
// treat this case as a failure? Default value is false.
boolean? failIfNoChange;
dictionary LoginStatusDict {
// Are we logged in?
boolean isLoggedIn;
// Is the logged-in user the owner?
boolean isOwner;
// Is the screen locked?
boolean isScreenLocked;
// Is the wallpaper blur layer still animating in?
boolean isLockscreenWallpaperAnimating;
// Is the screen ready for password?
boolean isReadyForPassword;
// Are the avatar images loaded for all users?
boolean areAllUserImagesLoaded;
// Is the logged-in user a regular user? Set only if `isLoggedIn`.
boolean? isRegularUser;
// Are we logged into the guest account? Set only if `isLoggedIn`.
boolean? isGuest;
// Are we logged into kiosk-app mode? Set only if `isLoggedIn`.
boolean? isKiosk;
// User email. Set only if `isLoggedIn`.
DOMString? email;
// User display email. Set only if `isLoggedIn`.
DOMString? displayEmail;
// User display name. Set only if `isLoggedIn`.
DOMString? displayName;
// User image: 'file', 'profile' or a number. Set only if `isLoggedIn`.
DOMString? userImage;
// Whether the user has a valid oauth2 token. Only set for gaia user.
boolean? hasValidOauth2Token;
callback LoginStatusCallback = void (LoginStatusDict status);
// |all_policies| will be the full list of policies as returned by the
// DictionaryPolicyConversions.ToValue function.
callback AllEnterprisePoliciesCallback = void (any all_policies);
dictionary ExtensionInfoDict {
DOMString id;
DOMString version;
DOMString name;
DOMString publicKey;
DOMString description;
DOMString backgroundUrl;
DOMString optionsUrl;
DOMString[] hostPermissions;
DOMString[] effectiveHostPermissions;
DOMString[] apiPermissions;
boolean isComponent;
boolean isInternal;
boolean isUserInstalled;
boolean isEnabled;
boolean allowedInIncognito;
boolean hasPageAction;
dictionary ExtensionsInfoArray {
ExtensionInfoDict[] extensions;
callback ExtensionsInfoCallback = void (ExtensionsInfoArray info);
dictionary Notification {
DOMString id;
DOMString type;
DOMString title;
DOMString message;
long priority;
long progress;
callback NotificationArrayCallback = void (Notification[] notifications);
dictionary Printer {
DOMString printerName;
DOMString? printerId;
DOMString? printerType;
DOMString? printerDesc;
DOMString? printerMakeAndModel;
DOMString? printerUri;
DOMString? printerPpd;
callback PrinterArrayCallback = void (Printer[] printers);
callback ArcStartTimeCallback = void (double startTicks);
dictionary ArcState {
// Whether the ARC is provisioned.
boolean provisioned;
// Whether ARC Terms of Service needs to be shown.
boolean tosNeeded;
// ARC pre-start time (mini-ARC) or 0 if not pre-started.
double preStartTime;
// ARC start time or 0 if not started.
double startTime;
callback ArcStateCallback = void (ArcState result);
dictionary PlayStoreState {
// Whether the Play Store allowed for the current user.
boolean allowed;
// Whether the Play Store currently enabled.
boolean? enabled;
// Whether the Play Store managed by policy.
boolean? managed;
callback PlayStoreStateCallback = void (PlayStoreState result);
dictionary AssistantQueryResponse {
// Text response returned from server.
DOMString? text;
// HTML response returned from server.
DOMString? htmlResponse;
// Open URL response returned from server.
DOMString? openUrl;
// Open Android app response returned from server.
DOMString? openAppResponse;
dictionary AssistantQueryStatus {
// Indicates whether this might be a voice interaction.
boolean isMicOpen;
// Query text sent to Assistant. In the event of a voice interaction,
// this field will be same as the speech recognition final result.
DOMString queryText;
// Response for the current query.
AssistantQueryResponse queryResponse;
callback AssistantQueryStatusCallback = void (AssistantQueryStatus status);
callback IsAppShownCallback = void (boolean appShown);
callback IsArcProvisionedCallback = void (boolean arcProvisioned);
callback IsArcPackageListInitialRefreshedCallback = void (boolean refreshed);
// A mapping of crosapi::BrowserManager::State
enum LacrosState {
// A mapping of crosapi::browser_util::LacrosMode
enum LacrosMode {
dictionary LacrosInfo {
// The state of lacros.
LacrosState state;
// True iff keepalive is enabled for lacros.
boolean isKeepAlive;
// Path to lacros-chrome directory. Note that this may change over time if
// omaha is used. This also may be empty if lacros is not running.
DOMString lacrosPath;
// Specifies the mode Lacros is currently running.
// For a full list of supported mode, see LacrosMode enum definition.
LacrosMode mode;
callback GetLacrosInfoCallback = void (LacrosInfo info);
dictionary ArcAppDict {
DOMString name;
DOMString packageName;
DOMString activity;
DOMString intentUri;
DOMString iconResourceId;
double lastLaunchTime;
double installTime;
boolean sticky;
boolean notificationsEnabled;
boolean ready;
boolean suspended;
boolean showInLauncher;
boolean shortcut;
boolean launchable;
callback GetArcAppCallback = void (ArcAppDict package);
dictionary ArcAppKillsDict {
double oom;
double lmkdForeground;
double lmkdPerceptible;
double lmkdCached;
double pressureForeground;
double pressurePerceptible;
double pressureCached;
callback GetArcAppKillsCallback = void (ArcAppKillsDict counts);
dictionary ArcPackageDict {
DOMString packageName;
long packageVersion;
DOMString lastBackupAndroidId;
double lastBackupTime;
boolean shouldSync;
boolean vpnProvider;
callback GetArcPackageCallback = void (ArcPackageDict package);
dictionary Location {
double x;
double y;
dictionary Bounds {
double left;
double top;
double width;
double height;
dictionary ArcAppTracingInfo {
boolean success;
double fps;
double commitDeviation;
double renderQuality;
callback TakeScreenshotCallback = void (DOMString base64Png);
callback GetPrimaryDisplayScaleFactorCallback = void (double scaleFactor);
callback IsTabletModeEnabledCallback = void (boolean enabled);
callback SetTabletModeEnabledCallback = void(boolean enabled);
callback SetShelfIconPinCallback = void(DOMString[] results);
callback SetOverviewModeStateCallback = void(boolean finished);
enum ThemeStyle {
callback SendArcOverlayColorCallback = void (boolean result);
callback ArcAppTracingCallback = void(ArcAppTracingInfo info);
callback WaitForDisplayRotationCallback = void (boolean success);
callback InstallPWAForCurrentURLCallback = void (DOMString appId);
dictionary App {
DOMString appId;
DOMString name;
DOMString shortName;
DOMString publisherId;
AppType? type;
AppInstallSource? installSource;
AppReadiness? readiness;
DOMString[] additionalSearchTerms;
boolean? showInLauncher;
boolean? showInSearch;
dictionary SystemWebApp {
// App's internal name. This isn't user-visible and should only be used
// for logging.
DOMString internalName;
// App's install URL. This is a placeholder for installation pipeline,
// not used for anything else.
DOMString url;
// App's visible name. This is defined in the Web App manifest, and shown
// in Shelf and Launcher. This matches App's name attribute (see above).
DOMString name;
// App's default start_url. This is the default URL that the App will be
// launched to.
DOMString startUrl;
callback GetAllInstalledAppsCallback = void (App[] apps);
dictionary CryptohomeRecoveryDataDict {
DOMString reauthProofToken;
DOMString refreshToken;
callback GetCryptohomeRecoveryDataCallback = void (
CryptohomeRecoveryDataDict dict);
dictionary ShelfItem {
DOMString appId;
DOMString launchId;
DOMString title;
ShelfItemType? type;
ShelfItemStatus status;
boolean showsTooltip;
boolean pinnedByPolicy;
boolean pinStateForcedByType;
boolean hasNotification;
// A mapping of ash::AppType.
enum AppWindowType {
// A mapping of HotseatState in ash/public/cpp/shelf_types.h.
enum HotseatState {
// The frame mode of a window. None if the window is framesless.
enum FrameMode {
dictionary OverviewInfo {
// Bounds in screen of an OverviewItem.
Bounds bounds;
// Whether an OverviewItem is being dragged in overview.
boolean isDragged;
// Used to update an app's shelf pin state.
dictionary ShelfIconPinUpdateParam {
// The identifier of the target app.
DOMString appId;
// The target pin state for the app.
boolean pinned;
dictionary AppWindowInfo {
// The identifier of the window. This shouldn't change across the time.
long id;
// The name of the window object -- typically internal class name of the
// window (like 'BrowserFrame').
DOMString name;
AppWindowType windowType;
WindowStateType stateType;
// The bounds of the window, in the coordinate of the root window (i.e.
// relative to the display where this window resides).
Bounds boundsInRoot;
// The identifier of the display where this window resides.
DOMString displayId;
boolean isVisible;
boolean canFocus;
// The title of the window; this can be seen in the window caption, or in
// the overview mode. Typically, this provides the title of the webpage or
// the title supplied by the application.
DOMString title;
// Whether some animation is ongoing on the window or not.
boolean isAnimating;
// The final bounds of the window when the animation completes. This should
// be same as |boundsInRoot| when |isAnimating| is false.
Bounds targetBounds;
// Whether or not the window is going to be visible after the animation
// completes. This should be same as |isVisible| when |isAnimating| is
// false.
boolean targetVisibility;
// WM Releated states
boolean isActive;
boolean hasFocus;
boolean onActiveDesk;
boolean hasCapture;
boolean canResize;
// Stacking order of the window in relation to its siblings. 0 indicates
// that the window is topmost. -1 if stacking info is not available
long stackingOrder;
// Window frame info
FrameMode frameMode;
boolean isFrameVisible;
long captionHeight;
// The bitset of the enabled caption buttons. See
// ui/views/window/caption_button_types.h.
long captionButtonEnabledStatus;
// The bitset of the caption buttons which are visible on the frame.
long captionButtonVisibleStatus;
DOMString? arcPackageName;
OverviewInfo? overviewInfo;
// The identifier of the app associated with the window that was launched
// from full restore. This should be same as |appId| when the window was
// restored from full restore, otherwise null.
DOMString? fullRestoreWindowAppId;
// The identifier of the app associated with the window.
DOMString? appId;
dictionary Accelerator {
DOMString keyCode;
boolean shift;
boolean control;
boolean alt;
boolean search;
boolean pressed;
// Mapped to ScrollableShelfState in ash/public/cpp/shelf_ui_info.h.
// [deprecated="Use ShelfState"]
dictionary ScrollableShelfState {
double? scrollDistance;
// Mapped to ShelfState in ash/public/cpp/shelf_ui_info.h.
dictionary ShelfState {
double? scrollDistance;
// Mapped to ScrollableShelfInfo in ash/public/cpp/shelf_ui_info.h.
// |targetMainAxisOffset| is set when ShelfState used in query
// specifies the scroll distance.
dictionary ScrollableShelfInfo {
double mainAxisOffset;
double pageOffset;
double? targetMainAxisOffset;
Bounds leftArrowBounds;
Bounds rightArrowBounds;
boolean isAnimating;
boolean iconsUnderAnimation;
boolean isOverflow;
Bounds[] iconsBoundsInScreen;
boolean isShelfWidgetAnimating;
// Mapped to HotseatSwipeDescriptor in ash/public/cpp/shelf_ui_info.h.
dictionary HotseatSwipeDescriptor {
Location swipeStartLocation;
Location swipeEndLocation;
// Mapped to HotseatInfo in ash/public/cpp/shelf_ui_info.h.
dictionary HotseatInfo {
HotseatSwipeDescriptor swipeUp;
HotseatState state;
boolean isAnimating;
// Whether the shelf is hidden with auto-hide enabled.
boolean isAutoHidden;
// The ui information of shelf components, including hotseat and
// scrollable shelf.
dictionary ShelfUIInfo {
HotseatInfo hotseatInfo;
ScrollableShelfInfo scrollableShelfInfo;
// Information about all desks.
dictionary DesksInfo {
long activeDeskIndex;
long numDesks;
boolean isAnimating;
DOMString[] deskContainers;
// Information about launcher's search box.
dictionary LauncherSearchBoxState {
DOMString ghostText;
callback GetShelfItemsCallback = void (ShelfItem[] items);
callback GetDefaultPinnedAppIdsCallback = void (DOMString[] items);
callback GetShelfAutoHideBehaviorCallback = void (DOMString behavior);
callback GetLauncherSearchBoxStateCallback = void (
LauncherSearchBoxState state);
callback GetShelfAlignmentCallback = void (ShelfAlignmentType alignment);
callback WindowStateCallback = void (WindowStateType currentType);
callback VoidCallback = void ();
callback DOMStringCallback = void (DOMString data);
callback GetAppWindowListCallback = void (AppWindowInfo[] window_list);
callback AcceleratorCallback = void (boolean success);
callback DesksCallback = void (boolean success);
callback GetDeskCountCallback = void (long count);
callback GetDesksInfoCallback = void (DesksInfo desks);
callback GetScrollableShelfInfoForStateCallback = void (
ScrollableShelfInfo info);
callback GetShelfUIInfoForStateCallback = void (ShelfUIInfo info);
// Frame counting record for one frame sink/compositor.
dictionary FrameCountingPerSinkData {
// Type of the frame sink. This corresponds to CompositorFrameSinkType.
DOMString sinkType;
// Whether the frame sink is the root.
boolean isRoot;
// Debug label of the frame sink.
DOMString debugLabel;
// Number of presented frames grouped using `bucketSizeInSeconds` arg in
// startFrameCounting call. It would be fps if the `bucketSizeInSeconds` is
// 1s.
long[] presentedFrames;
callback StopFrameCountingCallback = void (FrameCountingPerSinkData[] data);
// Result of calling setWindowBounds, which returns the actual bounds and
// display the window was set to. This may be different than the requested
// bounds and display, for example if the window is showing an ARC app and
// Android modifies the bounds request. Further, this result may never be
// returned in some situations (e.g. Android ignoring a bounds request),
// causing a timeout.
dictionary SetWindowBoundsResult {
// Bounds of the window.
Bounds bounds;
// Display ID of the display the window is on.
DOMString displayId;
callback WindowBoundsCallback = void (SetWindowBoundsResult result);
// Collected DisplaySmoothness data between startSmoothnessTracking and
// stopSmoothnessTracking calls.
dictionary DisplaySmoothnessData {
// Number of frames expected to be shown for this animation.
long framesExpected;
// Number of frames actually shown for this animation.
long framesProduced;
// Number of janks during this animation. A jank is counted when the current
// frame latency is larger than previous ones.
long jankCount;
// Display throughput percentage at fixed intervals.
long[] throughput;
// Callback invoked to report the smoothness after StopSmoothnessTracking is
// called.
callback StopSmoothnessTrackingCallback = void
(DisplaySmoothnessData data);
// Collected ui::ThroughputTracker data for one animation. It is based on
// cc::FrameSequenceMetrics::ThroughputData.
dictionary ThroughputTrackerAnimationData {
// Animation start time in milliseconds, relative to when
// `startThroughputTrackerDataCollection` is called.
long startOffsetMs;
// Animation stop time in milliseconds, relative to when
// `startThroughputTrackerDataCollection` is called.
long stopOffsetMs;
// Number of frames expected to be shown for this animation.
long framesExpected;
// Number of frames actually shown for this animation.
long framesProduced;
// Number of janks during this animation. A jank is counted when the current
// frame latency is larger than previous ones.
long jankCount;
// Callback invoked to report the collection ui::ThroughputTracker data
// after stopThroughputTrackerDataCollection is called.
callback StopThroughputTrackerDataCollectionCallback = void
(ThroughputTrackerAnimationData[] data);
// Callback invoked to report the currently collected ui::ThroughputTracker
// animation data. Note that the data reported is removed to avoid reporting
// duplicated data.
callback GetThroughtputTrackerDataCallback = void
(ThroughputTrackerAnimationData[] data);
// Callback invoked to report the number of system web apps that should be
// installed.
callback GetRegisteredSystemWebAppsCallback = void
(SystemWebApp[] systemWebApps);
callback IsSystemWebAppOpenCallback = void (boolean isOpen);
// Callback invoked to return the smoothness percentage after
// getDisplaySmoothness is called.
callback GetDisplaySmoothnessCallback = void (long smoothness);
// Options for resetting the holding space.
dictionary ResetHoldingSpaceOptions {
// Whether to call `ash::holding_space_prefs::MarkTimeOfFirstAdd()` after
// reset. Used to show the holding space tray in tests, since it's otherwise
// hidden after OOBE.
boolean markTimeOfFirstAdd;
callback CouldAllowCrostiniCallback = void (boolean canBeAllowed);
// Collected ash::LoginEventRecorder data.
dictionary LoginEventRecorderData {
// Event name
DOMString name;
// Number of frames actually shown for this animation.
long microsecnods_since_unix_epoch;
// Callback invoked to report the collection ui::LoginEventRecorder data
// after getLoginEventRecorderLoginEvents is called.
callback GetLoginEventRecorderLoginEventsCallback = void
(LoginEventRecorderData[] data);
// Request parameters for <code>getAccessToken</code>.
dictionary GetAccessTokenParams {
// An email associated with the account to get a token for.
DOMString email;
// A list of OAuth scopes to request.
DOMString[] scopes;
// An optional timeout in milliseconds for the request.
// Default: 90 seconds
long? timeoutMs;
// Response data for <code>getAccessToken</code>.
dictionary GetAccessTokenData {
// The access token
DOMString accessToken;
// The time the access token will expire as a unix timestamp in
// milliseconds.
DOMString expirationTimeUnixMs;
// Reponse callback for <code>getAccessToken</code>.
callback GetAccessTokenCallback = void(GetAccessTokenData data);
// Callback invoked to report whether the current input method is ready to
// accept key events from the test.
callback IsInputMethodReadyForTestingCallback = void
(boolean isReady);
// Response data for <code>makeFuseboxTempDir</code>.
dictionary MakeFuseboxTempDirData {
DOMString fuseboxFilePath;
DOMString underlyingFilePath;
// Callback invoked when the temporary directory was made.
callback MakeFuseboxTempDirCallback = void(MakeFuseboxTempDirData data);
// Callback invoked when the temporary directory was removed.
callback RemoveFuseboxTempDirCallback = void();
callback IsFeatureEnabledCallback = void(boolean enabled);
// Response data for <code>getCurrentInputMethodDescriptor</code>.
// Add more fields from ash/input_method/InputMethodDescriptor as needed.
dictionary GetCurrentInputMethodDescriptorData {
DOMString keyboardLayout;
// Response callback for current input method keyboard layout.
callback GetCurrentInputMethodDescriptorCallback = void
(GetCurrentInputMethodDescriptorData data);
interface Functions {
// Must be called to allow autotestPrivateAPI events to be fired.
static void initializeEvents();
// Logout of a user session.
static void logout();
// Restart the browser.
static void restart();
// Shutdown the browser.
// |force|: if set, ignore ongoing downloads and onunbeforeunload handlers.
static void shutdown(boolean force);
// Get login status.
[supportsPromises] static void loginStatus(LoginStatusCallback callback);
// Locks the screen.
static void lockScreen();
// Get info about installed extensions.
[supportsPromises] static void getExtensionsInfo(
ExtensionsInfoCallback callback);
// Get state of the policies.
// Will contain device policies and policies from the active profile.
// The policy values are formatted as they would be for exporting in
// chrome://policy.
[supportsPromises] static void getAllEnterprisePolicies(
AllEnterprisePoliciesCallback callback);
// Refreshes the Enterprise Policies.
[supportsPromises] static void refreshEnterprisePolicies(
VoidCallback callback);
// Refreshes the remote commands.
[supportsPromises] static void refreshRemoteCommands(VoidCallback callback);
// Simulates a memory access bug for asan testing.
static void simulateAsanMemoryBug();
// Set the touchpad pointer sensitivity setting.
// |value|: the pointer sensitivity setting index.
static void setTouchpadSensitivity(long value);
// Turn on/off tap-to-click for the touchpad.
// |enabled|: if set, enable tap-to-click.
static void setTapToClick(boolean enabled);
// Turn on/off three finger click for the touchpad.
// |enabled|: if set, enable three finger click.
static void setThreeFingerClick(boolean enabled);
// Turn on/off tap dragging for the touchpad.
// |enabled|: if set, enable tap dragging.
static void setTapDragging(boolean enabled);
// Turn on/off Australian scrolling for devices other than wheel mouse.
// |enabled|: if set, enable Australian scrolling.
static void setNaturalScroll(boolean enabled);
// Set the mouse pointer sensitivity setting.
// |value|: the pointer sensitivity setting index.
static void setMouseSensitivity(long value);
// Swap the primary mouse button for left click.
// |right|: if set, swap the primary mouse button.
static void setPrimaryButtonRight(boolean right);
// Turn on/off reverse scrolling for mice.
// |enabled|: if set, enable reverse scrolling.
static void setMouseReverseScroll(boolean enabled);
// Get visible notifications on the system.
[supportsPromises] static void getVisibleNotifications(
NotificationArrayCallback callback);
// Remove all notifications.
[supportsPromises] static void removeAllNotifications(
VoidCallback callback);
// Get ARC start time in ticks.
[supportsPromises] static void getArcStartTime(
ArcStartTimeCallback callback);
// Get state of the ARC session.
[supportsPromises] static void getArcState(
ArcStateCallback callback);
// Get state of the Play Store.
[supportsPromises] static void getPlayStoreState(
PlayStoreStateCallback callback);
// Get list of available printers
[supportsPromises] static void getPrinterList(
PrinterArrayCallback callback);
// Returns true if requested app is shown in Chrome.
[supportsPromises] static void isAppShown(DOMString appId,
IsAppShownCallback callback);
// Returns true if ARC is provisioned.
// [deprecated="Use getArcState()"]
[supportsPromises] static void isArcProvisioned(
IsArcProvisionedCallback callback);
// Gets various information about the state of lacros on the system.
[supportsPromises] static void getLacrosInfo(
GetLacrosInfoCallback callback);
// Gets information about the requested ARC app.
[supportsPromises] static void getArcApp(DOMString appId,
GetArcAppCallback callback);
// Gets counts of how many ARC apps have been killed, by priority.
[supportsPromises] static void getArcAppKills(
GetArcAppKillsCallback callback);
// Gets information about requested ARC package.
[supportsPromises] static void getArcPackage(
DOMString packageName,
GetArcPackageCallback callback);
// Gets the data needed for Cryptohome Recovery.
[supportsPromises] static void getCryptohomeRecoveryData(
GetCryptohomeRecoveryDataCallback callback);
// Waits for system web apps to complete the installation.
[supportsPromises] static void waitForSystemWebAppsInstall(
VoidCallback callback);
// Gets all the default pinned shelf app IDs, these may not be installed.
[supportsPromises] static void getDefaultPinnedAppIds(
GetDefaultPinnedAppIdsCallback callback);
// Returns the number of system web apps that should be installed.
[supportsPromises] static void getRegisteredSystemWebApps(
GetRegisteredSystemWebAppsCallback callback);
// Returns whether the system web app is currently open or not.
[supportsPromises] static void isSystemWebAppOpen(
DOMString appId,
IsSystemWebAppOpenCallback callback);
// Launches an application from the launcher with the given appId.
[supportsPromises] static void launchApp(DOMString appId,
VoidCallback callback);
// Launches an system web app from the launcher with the given app name and
// url.
[supportsPromises] static void launchSystemWebApp(DOMString appName,
DOMString url,
VoidCallback callback);
// Launches Files app directly to absolutePath, if the path does not
// exist, it will launch to the default opening location (i.e. My files).
// If the supplied path is a file (and it exists) it will open Files app
// to the parent folder instead.
[supportsPromises] static void launchFilesAppToPath(
DOMString absolutePath,
VoidCallback callback);
// Closes an application the given appId in case it was running.
[supportsPromises] static void closeApp(DOMString appId,
VoidCallback callback);
// Update printer. Printer with empty ID is considered new.
static void updatePrinter(Printer printer);
// Remove printer.
static void removePrinter(DOMString printerId);
// Start ARC directly, note this differs from |setPlayStoreEnabled|. It is
// used to restart ARC in tests.
// |callback|: Called when the operation has completed.
[supportsPromises] static void startArc(VoidCallback callback);
// Stop ARC directly, note this differs from |setPlayStoreEnabled|. It is
// used to restart ARC in tests. Note, this preserves ARC data.
// |callback|: Called when the operation has completed.
[supportsPromises] static void stopArc(VoidCallback callback);
// Enable/disable the Play Store.
// |enabled|: if set, enable the Play Store.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setPlayStoreEnabled(boolean enabled,
VoidCallback callback);
// Get text from ui::Clipboard.
// |callback|: Called with result.
[supportsPromises] static void getClipboardTextData(
DOMStringCallback callback);
// Set text in ui::Clipbaord.
// |callback|: Called when operation is complete.
[supportsPromises] static void setClipboardTextData(DOMString data,
VoidCallback callback);
// Run the crostini installer GUI to install the default crostini
// vm / container and create sshfs mount. The installer launches the
// crostini terminal app on completion. The installer expects that
// crostini is not already installed.
// |callback|: Called when the operation has completed.
[supportsPromises] static void runCrostiniInstaller(VoidCallback callback);
// Run the crostini uninstaller GUI to remove the default crostini
// vm / container. The callback is invoked upon completion.
[supportsPromises] static void runCrostiniUninstaller(
VoidCallback callback);
// Enable/disable Crostini in preferences.
// |enabled|: Enable Crostini.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setCrostiniEnabled(boolean enabled,
VoidCallback callback);
// Export the crostini container.
// |path|: The path in Downloads to save the export.
// |callback|: Called when the operation has completed.
[supportsPromises] static void exportCrostini(DOMString path,
VoidCallback callback);
// Import the crostini container.
// |path|: The path in Downloads to read the import.
// |callback|: Called when the operation has completed.
[supportsPromises] static void importCrostini(DOMString path,
VoidCallback callback);
// Returns whether crostini could ever be allowed.
// |callback|: Called with a boolean indicating if crostini can ever be
// allowed in the current profile.
[supportsPromises] static void couldAllowCrostini(
CouldAllowCrostiniCallback callback);
// Sets mock Plugin VM policy.
// |imageUrl|: URL to the image to install.
// |imageHash|: Hash for the provided image.
// |licenseKey|: License key for Plugin VM.
static void setPluginVMPolicy(DOMString imageUrl,
DOMString imageHash,
DOMString licenseKey);
// Shows the Plugin VM installer. Does not start installation.
static void showPluginVMInstaller();
// Installs Borealis without showing the normal installer UI.
// |callback|: Called when the operation has completed.
[supportsPromises] static void installBorealis(VoidCallback callback);
// Register a component with CrOSComponentManager.
// |name|: The name of the component.
// |path|: Path to the component.
static void registerComponent(DOMString name, DOMString path);
// Takes a screenshot and returns the data in base64 encoded PNG format.
[supportsPromises] static void takeScreenshot(
TakeScreenshotCallback callback);
// Tasks a screenshot for a display.
// |display_id|: the display id of the display.
// |callback|: called when the operation has completed.
[supportsPromises] static void takeScreenshotForDisplay(
DOMString display_id,
TakeScreenshotCallback callback);
// Makes a basic request to ML Service, triggering 1. ML Service
// daemon startup, and 2. the initial D-Bus -> Mojo IPC bootstrap.
// |callback|: Called when the operation has completed.
[supportsPromises] static void bootstrapMachineLearningService(
VoidCallback callback);
// Triggers an on-demand update of smart dim component and checks whether
// it's successfully loaded by smart dim ml_agent.
// |callback|: Called when the operation has completed.
[supportsPromises] static void loadSmartDimComponent(VoidCallback callback);
// Enables/disables the Google Assistant.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setAssistantEnabled(boolean enabled,
long timeout_ms,
VoidCallback callback);
// Bring up the Assistant service, and wait for the ready signal.
// |callback|: Called when the operation has completed.
[supportsPromises] static void enableAssistantAndWaitForReady(
VoidCallback callback);
// Sends a text query via Google Assistant.
// |callback|: Called when response has been received.
[supportsPromises] static void sendAssistantTextQuery(
DOMString query,
long timeout_ms,
AssistantQueryStatusCallback callback);
// Invokes |callback| once the current text/voice interaction is completed.
// Responds with the the query status if any valid response was caught
// before the timeout. This API should be called before sending the query.
// To use it for testing a voice query via OKG in Autotest, for example,
// you can do:
// // Enable hotword setting for Assistant.
// assistant_util.enable_hotword();
// // Call this API with your callback function.
// chrome.autotestPrivate.waitForAssistantQueryStatus(timeout_s,
// function(status) {...});
// then start Assistant via OKG and send voice query before timeout.
// TODO(meilinw@): disable warmer welcome to avoid an unintended early
// return of this API when launching Assistant via hotkey.
// TODO(meilinw@): update the comment above to use Tast instead after
// adding API to enable hotword in Tast.
[supportsPromises] static void waitForAssistantQueryStatus(
long timeout_s,
AssistantQueryStatusCallback callback);
// Whether the local list of installed ARC packages has been refreshed for
// the first time after user login.
[supportsPromises] static void isArcPackageListInitialRefreshed(
IsArcPackageListInitialRefreshedCallback callback);
// Set value for the specified user pref in the pref tree.
[supportsPromises] static void setAllowedPref(DOMString pref_name,
any value,
VoidCallback callback);
// DEPRECATED: use SetAllowedPref instead, see crbug/1262034
// Set value for the specified user pref in the pref tree.
[supportsPromises] static void setWhitelistedPref(DOMString pref_name,
any value,
VoidCallback callback);
// Enable/disable a Crostini app's "scaled" property.
// |appId|: The Crostini application ID.
// |scaled|: The app is "scaled" when shown, which means it uses low display
// density.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setCrostiniAppScaled(DOMString appId,
boolean scaled,
VoidCallback callback);
// Get the primary display scale factor.
// |callback| is invoked with the scale factor.
[supportsPromises] static void getPrimaryDisplayScaleFactor(
GetPrimaryDisplayScaleFactorCallback callback);
// Get the tablet mode enabled status.
// |callback| is invoked with the tablet mode enablement status.
[supportsPromises] static void isTabletModeEnabled(
IsTabletModeEnabledCallback callback);
// Enable/disable tablet mode. After calling this function, it won't be
// possible to physically switch to/from tablet mode since that
// functionality will be disabled.
// |enabled|: if set, enable tablet mode.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setTabletModeEnabled(
boolean enabled,
SetTabletModeEnabledCallback callback);
// Get the list of all installed applications
[supportsPromises] static void getAllInstalledApps(
GetAllInstalledAppsCallback callback);
// Get the list of all shelf items
[supportsPromises] static void getShelfItems(
GetShelfItemsCallback callback);
// Get the launcher search box search state.
[supportsPromises] static void getLauncherSearchBoxState(
GetLauncherSearchBoxStateCallback callback);
// Get the shelf auto hide behavior.
// |displayId|: display that contains the shelf.
// |callback| is invoked with the shelf auto hide behavior. Possible
// behavior values are: "always", "never" or "hidden".
[supportsPromises] static void getShelfAutoHideBehavior(
DOMString displayId,
GetShelfAutoHideBehaviorCallback callback);
// Set the shelf auto hide behavior.
// |displayId|: display that contains the shelf.
// |behavior|: an enum of "always", "never" or "hidden".
// |callback|: Called when the operation has completed.
[supportsPromises] static void setShelfAutoHideBehavior(
DOMString displayId,
DOMString behavior,
VoidCallback callback);
// Get the shelf alignment.
// |displayId|: display that contains the shelf.
// |callback| is invoked with the shelf alignment type.
[supportsPromises] static void getShelfAlignment(
DOMString displayId,
GetShelfAlignmentCallback callback);
// Set the shelf alignment.
// |displayId|: display that contains the shelf.
// |alignment|: the type of alignment to set.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setShelfAlignment(
DOMString displayId,
ShelfAlignmentType alignment,
VoidCallback callback);
// Create a pin on shelf for the app specified by |appId|.
// Deprecated. Use setShelfIconPin() instead.
[supportsPromises] static void pinShelfIcon(DOMString appId,
VoidCallback callback);
// Update pin states of the shelf apps based on |updateParams|. Return a
// list of app ids whose pin state changed. Pin states will not be changed
// if the method fails.
[supportsPromises] static void setShelfIconPin(
ShelfIconPinUpdateParam[] updateParams,
optional SetShelfIconPinCallback callback);
// Enter or exit the overview mode.
// |start|: whether entering to or exiting from the overview mode.
// |callback|: called after the overview mode switch finishes.
[supportsPromises] static void setOverviewModeState(
boolean start,
SetOverviewModeStateCallback callback);
// Show virtual keyboard of the current input method if it's available.
static void showVirtualKeyboardIfEnabled();
// Sends the overlay color and theme to Android and changes the Android system color and theme to these values.
// |color|: the int color of the system ui.
// |theme|: the theme of the system ui.
// |callback|: callback to deliver sendArcOverlayColor result.
[supportsPromises] static void sendArcOverlayColor(
long color, ThemeStyle theme, SendArcOverlayColorCallback callback);
// Start ARC performance tracing for the active ARC app window.
// |callback|: Called when the operation has completed.
[supportsPromises] static void arcAppTracingStart(VoidCallback callback);
// Stop ARC performance tracing if it was started and analyze results.
// |callback|: callback to deliver tracing results.
[supportsPromises] static void arcAppTracingStopAndAnalyze(
ArcAppTracingCallback callback);
// Swap the windows in the split view.
// |callback|: Called when the operation has completed.
[supportsPromises] static void swapWindowsInSplitView(
VoidCallback callback);
// Set ARC app window focused.
// |packageName|: the package name of the ARC app window.
// |callback|: called when the operation has completed.
[supportsPromises] static void setArcAppWindowFocus(DOMString packageName,
VoidCallback callback);
// Invokes the callback when the display rotation animation is finished, or
// invokes it immediately if it is not animating. The callback argument
// is true if the display's rotation is same as |rotation|, or false otherwise.
// |displayId|: display that contains the shelf.
// |rotation|: the target rotation.
// |callback|: called when the operation has completed.
[supportsPromises] static void waitForDisplayRotation(
DOMString displayId,
RotationType rotation,
WaitForDisplayRotationCallback callback);
// Get information on all application windows. Callback will be called
// with the list of |AppWindowInfo| dictionary.
// |callback|: called with window list.
[supportsPromises] static void getAppWindowList(
GetAppWindowListCallback callback);
// Send WM event to change the app window's window state.
// |id|: the id of the window
// |change|: WM event type to send to the app window.
// |wait|: whether the method should wait for the window state to change before returning.
// |callback|: called when the window state is changed if |wait| is true.
// Otherwise, called right after the WM event is sent.
[supportsPromises] static void setAppWindowState(
long id,
WindowStateChangeDict change,
optional boolean wait,
WindowStateCallback callback);
// Activate app window given by "id".
// |id|: the id of the window
// |callback|: called when the window is requested to activate.
[supportsPromises] static void activateAppWindow(long id,
VoidCallback callback);
// Closes an app window given by "id".
// |id|: the id of the window
// |callback|: called when the window is requested to close.
[supportsPromises] static void closeAppWindow(long id,
VoidCallback callback);
// Installs the Progressive Web App (PWA) that is in the current URL.
// |timeout_ms|: Timeout in milliseconds for the operation to complete.
// |callback|: called when the operation has completed. Passes the app Id
// of the recently installed PWA as argument.
[supportsPromises] static void installPWAForCurrentURL(
long timeout_ms,
InstallPWAForCurrentURLCallback callback);
// Activates shortcut.
// |accelerator|: the accelerator to activate.
// |callback|: called when the operation has completed.
[supportsPromises] static void activateAccelerator(
Accelerator accelerator,
AcceleratorCallback callback);
// Wwait until the launcher is transitionto the |launcherState|, if it's not
// in that state.
// |launcherState|: the target launcher state.
// |callback|: called when the operation has completed.
[supportsPromises] static void waitForLauncherState(
LauncherStateType launcherState,
VoidCallback callback);
// Wait until overview has transitioned to |overviewState|, if it is not in
// that state.
// |overviewState|: the target overview state.
// |callback|: called when overview has reached |overviewState|.
[supportsPromises] static void waitForOverviewState(
OverviewStateType overviewState,
VoidCallback callback);
// Creates a new desk if the maximum number of desks has not been reached.
// |callback|: called to indicate success or failure.
[supportsPromises] static void createNewDesk(DesksCallback callback);
// Activates the desk at the given |index| triggering the activate-desk
// animation.
// |index|: the zero-based index of the desk desired to be activated.
// |callback|: called indicating success when the animation completes, or
// failure when the desk at |index| is already the active desk.
[supportsPromises] static void activateDeskAtIndex(long index,
DesksCallback callback);
// Removes the currently active desk and triggers the remove-desk animation.
// |callback|: called indicating success when the animation completes, or
// failure if the currently active desk is the last available desk which
// cannot be removed.
[supportsPromises] static void removeActiveDesk(DesksCallback callback);
// Activates the desk at the given |index| by chaining multiple
// activate-desk animations.
// |index|: the zero-based index of the desk desired to be activated.
// |callback|: called indicating success when the animation completes, or
// failure when the desk at |index| is already the active desk.
[supportsPromises] static void activateAdjacentDesksToTargetIndex(
long index,
DesksCallback callback);
// Fetches the number of open desks in the `DesksController` at the time of
// call.
// `callback`: callback that is passed the number of open desks.
[supportsPromises] static void getDeskCount(
GetDeskCountCallback callback
// Fetches info about the open desks at the time of the call.
// `callback`: callback that is passed desks information.
[supportsPromises] static void getDesksInfo(
GetDesksInfoCallback callback
// Create mouse events to cause a mouse click.
// |button|: the mouse button for the click event.
// |callback|: called after the mouse click finishes.
[supportsPromises] static void mouseClick(MouseButton button,
VoidCallback callback);
// Create a mouse event to cause mouse pressing. The mouse button stays
// in the pressed state.
// |button|: the mouse button to be pressed.
// |callback|: called after the mouse pressed event is handled.
[supportsPromises] static void mousePress(MouseButton button,
VoidCallback callback);
// Create a mouse event to release a mouse button. This does nothing and
// returns immediately if the specified button is not pressed.
// |button|: the mouse button to be released.
// |callback|: called after the mouse is released.
[supportsPromises] static void mouseRelease(MouseButton button,
VoidCallback callback);
// Create mouse events to move a mouse cursor to the location. This can
// cause a dragging if a button is pressed. It starts from the last mouse
// location.
// |location|: the target location (in screen coordinate).
// |duration_in_ms|: the duration (in milliseconds) for the mouse movement.
// The mouse will move linearly. 0 means moving immediately.
// |callback|: called after the mouse move finishes.
[supportsPromises] static void mouseMove(Location location,
double duration_in_ms,
VoidCallback callback);
// Enable/disable metrics reporting in preferences.
// |enabled|: Enable metrics reporting.
// |callback|: Called when the operation has completed.
[supportsPromises] static void setMetricsEnabled(boolean enabled,
VoidCallback callback);
// Sends ARC touch mode enabled or disabled.
// |enable|: whether enabled touch mode.
// |callback|: called when action performed.
[supportsPromises] static void setArcTouchMode(boolean enabled,
VoidCallback callback);
// Fetches ui information of scrollable shelf view for the given shelf
// state. This function does not change scrollable shelf.
// [deprecated="Use getShelfUIInfoForState()"]
[supportsPromises] static void getScrollableShelfInfoForState(
ScrollableShelfState state,
GetScrollableShelfInfoForStateCallback callback);
// Fetches UI information of shelf (including scrollable shelf and hotseat)
// for the given shelf state. This function does not change any shelf
// component.
[supportsPromises] static void getShelfUIInfoForState(
ShelfState state,
GetShelfUIInfoForStateCallback callback);
// Sends a WM event to change a window's bounds and/or the display it is on.
// |id|: the id of the window.
// |bounds|: bounds the window should be set to.
// |displayId|: id of display to move the window to.
// |callback|: called when the window bounds are changed.
[supportsPromises] static void setWindowBounds(
long id,
Bounds bounds,
DOMString displayId,
WindowBoundsCallback callback);
// Starts smoothness tracking for a display. If the display id is not
// specified, the primary display is used. Otherwise, the display specified
// by the display id is used. If `throughputIntervalMs` is not specified,
// default 5 seconds interval is used to collect throughput data.
[supportsPromises] static void startSmoothnessTracking(
optional DOMString displayId,
optional long throughputIntervalMs,
VoidCallback callback);
// Stops smoothness tracking for a display and report the smoothness. If
// the display id is not specified, the primary display is used. Otherwise,
// the display specified by the display id is used.
[supportsPromises] static void stopSmoothnessTracking(
optional DOMString displayId,
StopSmoothnessTrackingCallback callback);
// When neccesary, disables showing the dialog when Switch Access is disabled.
static void disableSwitchAccessDialog();
// Waits for the completion of photo transition animation in ambient mode.
// |numCompletions|: number of completions of the animation.
// |timeout|: the timeout in seconds.
// |callback|: Called when the operation has completed.
[supportsPromises] static void waitForAmbientPhotoAnimation(
long numCompletions,
long timeout,
VoidCallback callback);
// Waits for ambient video to successfully start playback.
// |timeout|: the timeout in seconds.
// |callback|: Called when the operation has completed.
[supportsPromises] static void waitForAmbientVideo(
long timeout,
VoidCallback callback);
// Disables the automation feature. Note that the event handlers and caches
// of automation nodes still remain in the test extension and so the next
// automation.getDesktop will miss initialization. The caller should ensure
// invalidation of those information (i.e. reloading the entire background
// page).
[supportsPromises] static void disableAutomation(VoidCallback callback);
// Starts to ui::ThroughputTracker data collection for tracked animations.
[supportsPromises] static void startThroughputTrackerDataCollection(
VoidCallback callback);
// Stops ui::ThroughputTracker data collection and reports the collected
// data since the start or the last GetThroughtputTrackerData call.
[supportsPromises] static void stopThroughputTrackerDataCollection(
StopThroughputTrackerDataCollectionCallback callback);
// Reports the currently collected animation data.
[supportsPromises] static void getThroughputTrackerData(
GetThroughtputTrackerDataCallback callback);
// Gets the smoothness of a display. If the display id is not specified,
// the primary display is used.
[supportsPromises] static void getDisplaySmoothness(
optional DOMString displayId,
GetDisplaySmoothnessCallback callback);
// Resets the holding space by removing all items and clearing the prefs.
[supportsPromises] static void resetHoldingSpace(
optional ResetHoldingSpaceOptions options,
VoidCallback callback);
// Starts collection of ui::LoginEventRecorder data.
[supportsPromises] static void startLoginEventRecorderDataCollection(
VoidCallback callback);
// Stops ui::LoginEventRecorder data collection and reports all the
// collected data.
[supportsPromises] static void getLoginEventRecorderLoginEvents(
GetLoginEventRecorderLoginEventsCallback callback);
// Adds login event to test LoginEventRecorderDataCollection API.
[supportsPromises] static void addLoginEventForTesting(
VoidCallback callback);
// Force auto theme mode in dark mode or light mode for testing.
[supportsPromises] static void forceAutoThemeMode(boolean darkModeEnabled, VoidCallback callback);
// Fetches an access token from Chrome.
[supportsPromises] static void getAccessToken(
GetAccessTokenParams accessTokenParams,
GetAccessTokenCallback callback);
// Returns whether the current input method is ready to accept key events.
[supportsPromises] static void isInputMethodReadyForTesting(
IsInputMethodReadyForTestingCallback callback);
// Creates a temporary directory visible under the Fusebox mount point.
[supportsPromises] static void makeFuseboxTempDir(
MakeFuseboxTempDirCallback callback);
// Removes a temporary directory visible under the Fusebox mount point. The
// fuseboxFilePath argument was returned by the MakeFuseboxTempDirCallback.
[supportsPromises] static void removeFuseboxTempDir(
DOMString fuseboxFilePath,
RemoveFuseboxTempDirCallback callback);
// Remove the specified component extension.
[supportsPromises] static void removeComponentExtension(
DOMString extensionId, VoidCallback callback);
// Starts frame counting in viz. `bucketSizeInSeconds` decides the bucket
// size of the frame count records. If it is X seconds, each record is
// the number of presented frames in X seconds.
[supportsPromises] static void startFrameCounting(long bucketSizeInSeconds,
VoidCallback callback);
// Ends frame counting in viz and return the collected data.
[supportsPromises] static void stopFrameCounting(
StopFrameCountingCallback callback);
// Install a bruschetta VM.
[supportsPromises] static void installBruschetta(
DOMString vm_name, VoidCallback callback);
// Delete a bruschetta VM.
[supportsPromises] static void removeBruschetta(
DOMString vm_name, VoidCallback callback);
// Returns whether a base::Feature is enabled. The state may change because
// a Chrome uprev into ChromeOS changed the default feature state.
[supportsPromises] static void isFeatureEnabled(
DOMString feature_name, IsFeatureEnabledCallback callback);
// Returns keyboard layout used for current input method.
[supportsPromises] static void getCurrentInputMethodDescriptor(
GetCurrentInputMethodDescriptorCallback callback);
// ARC set interactive enable/disable state.
// |enabled|: Enable ARC interactive.
// |callback|: Called when the operation sent to ARC by mojo.
[supportsPromises] static void setArcInteractiveState(
boolean enabled, VoidCallback callback);
interface Events {
// Fired when the data in ui::Clipboard is changed.
static void onClipboardDataChanged();