chromium/chrome/test/data/webui/chromeos/settings/test_api.test-mojom

// 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.

module ash.settings.mojom;

import "chrome/test/data/webui/chromeos/settings/os_people_page/password_settings_api.test-mojom";
import "chrome/test/data/webui/chromeos/settings/os_people_page/pin_settings_api.test-mojom";

// This file contains the definition of the mojo service that can be used in
// C++ browser tests to manipulate the settings UI. Browser tests that want to
// use this test api should instantiate OSSettingsBrowserTestMixin.

// The interface to control the lock screen page.
interface LockScreenSettings {

  enum RecoveryDialogAction {
    CancelDialog = 0,
    ConfirmDisabling,
  };

  // Checks whether the lock screen is unlocked or not.
  AssertAuthenticated(bool is_authenticated) => ();

  // Unlocks the lock screen page. The page should be locked before calling
  // this. Crashes if authentication fails.
  Authenticate(string password) => ();

  // Tries to unlock the lock screen page, but expects authentication to fail.
  // Crashes if authentication succeeds.
  AuthenticateIncorrectly(string password) => ();

  // Checks whether a control for changing passwords is visible or not.
  AssertPasswordControlVisibility(bool is_visible) => ();

  // Navigates to password settings. Crashes if no password settings control is
  // visible. The return value can be used to interact with password settings.
  GoToPasswordSettings() =>
      (pending_remote<PasswordSettingsApi> password_settings);

  // Checks whether a control for recovery is available or not.
  AssertRecoveryControlAvailability(bool is_available) => ();

  // Checks whether a control for recovery is visible or not.
  AssertRecoveryControlVisibility(bool is_visible) => ();

  // Checks whether recovery is configured or not according to the recovery
  // control.
  AssertRecoveryConfigured(bool is_configured) => ();

  // Checks wheter a control for recovery is focused or not.
  AssertRecoveryControlFocused() => ();

  // Enables the cryptohome recovery configuration.
  // Crashes if it is already on or after a click on the recovery toggle
  // the recovery is still disabled.
  EnableRecoveryConfiguration() => ();

  // Try to enable data recovery. Data recovery must not be configured before
  // calling this. Does not assume that the action is successful.
  TryEnableRecoveryConfiguration() => ();

  // Try to enable data recovery. Data recovery must be configured before
  // calling this. Does not assume that the action is successful.
  TryDisableRecoveryConfiguration() => ();

  // The following function expects the cryptohome recovery toggle is on.
  // Clicks on the recovery toggle, expecting the recovery dialog to show up.
  // if the param is CancelDialog:
  // - expects the recovery toggle still enabled state
  // if the param is ConfirmDisabling:
  // - expects the recovery toggle changed to disable state
  // In both cases the function expects the recovery dialog to disappear.
  // If any of the expectations fail the function crashes.
  DisableRecoveryConfiguration(RecoveryDialogAction dialogAction) => ();

  // Navigates PIN settings. The return value can be used to interace with PIN
  // settings.
  GoToPinSettings() => (pending_remote<PinSettingsApi> pin_settings);

  // Asserts that automatic screen lock is enabled or disabled.
  AssertAutoLockScreenEnabled(bool is_enabled) => ();

  // Enables automatic screen lock. Assumes that it is currently disabled.
  EnableAutoLockScreen() => ();

  // Disables automatic screen lock. Assumes that it is currently enabled.
  DisableAutoLockScreen() => ();

  // Asserts that the auto screen lock control is currently focused.
  AssertAutoLockScreenFocused() => ();

  // Asserts when lock screen notification setting is not in focus.
  AssertLockScreenNotificationFocused() => ();
};

// The interface used to control Google drive settings.
interface GoogleDriveSettings {
  // Asserts that the values returned from the Google drive PageHandler match
  // the supplied values.
  AssertBulkPinningSpace(string required_space,
      string free_space) => ();

  // Asserts the values returned from the Google drive PageHandler match the
  // values returned on the JS element.
  AssertContentCacheSize(string content_cache_size) => ();

  // Click the clear offline files button and then wait until the new size has
  // updated correctly.
  ClickClearOfflineFilesAndAssertNewSize(string new_size) => ();
};

// An interface that allows clients to manipulate the os settings ui. Served by
// Javascript injected into the os settings page. Consumed by C++ running in
// the browser process during tests.
interface OSSettingsDriver {
  // Asserts that the lock screen settings page is open. On success, returns a
  // remote that can be used to operate the lock screen settings page.
  AssertOnLockScreenSettings() =>
      (pending_remote<LockScreenSettings> lock_screen_settings);

  // Navigate to lock screen settings. The settings page must be in its initial
  // state before calling this. The return value can be used to manipulate lock
  // screen settings.
  GoToLockScreenSettings() =>
      (pending_remote<LockScreenSettings> lock_screen_settings);

  // Navigate to Google drive settings subpage. The settings page must be in its
  // initial state before calling this. The return value can be used to
  // manipulate Google drive settings.
  AssertOnGoogleDriveSettings() =>
      (pending_remote<GoogleDriveSettings> google_drive_settings);
};

// The interface served from within the browser process in tests. Consumed by
// the os settings webui.
interface OSSettingsBrowserProcess {
  // The Javascript code injected into the os-settings page calls this to pass
  // a driver remote to the browser process. Can only be called once.
  RegisterOSSettingsDriver(pending_remote<OSSettingsDriver> driver) => ();
};