# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# WARNING: if you wish to disable a tast test that runs in a ChromeOS SDK
# build, this is the wrong file to edit. You need to mark those tests as
# "informational" in their source .go files.

# To disable a specific test in chrome_all_tast_tests, add it the following
# list and cite a bug.
tast_disabled_tests_from_chrome_all = [
  # crbug.com/1184931
  "health.ProbeBatteryMetrics",

  # b/196705842
  "apps.LaunchGalleryLanguage",

  # crbug.com/1242415
  "hwsec.AttestationEnrollOnly",
  "hwsec.ChapsAttributePolicy",
  "hwsec.ChapsPKCS1V15",
  "policy.AccessibilityPolicies.sticky_keys",
  "policy.AllowDinosaurEasterEgg",
  "policy.DisableScreenshotsExtension",

  # crbug.com/1238654
  "lockscreen.KeyboardShortcut",
  "apps.SystemWebAppsReinstall.all_apps_stable",
  "apps.SystemWebAppsReinstall.default_enabled_apps_stable",
  "camera.EncodeAccelJPEG",

  # crbug.com/1247485
  "inputs.PhysicalKeyboardInputFields.us_en",
  "inputs.VirtualKeyboardAccent",

  # crbug.com/1247177
  "inputs.PhysicalKeyboardEnglishTyping",
  "inputs.PhysicalKeyboardEmoji",

  # https://crbug.com/1252352
  "quicksettings.SignInScreen.battery",
  "quicksettings.SignInScreen.noaudio_nobattery",
  "quicksettings.SignInScreen.audio",

  # crbug.com/1263234
  "quicksettings.ManagedDeviceInfo",

  # crbug.com/1273743
  "crostini.Launcher.local_wayland_bullseye_stable",
  "crostini.Launcher.local_wayland_buster_stable",
  "crostini.Launcher.local_x11_bullseye_stable",
  "crostini.Launcher.system_wayland_bullseye_stable",
  "crostini.Launcher.system_wayland_buster_stable",
  "crostini.Launcher.system_x11_bullseye_stable",
  "crostini.Launcher.system_x11_buster_stable",

  # crbug.com/1259127
  "ui.TabletOperations",

  # crbug.com/1257474
  "shelf.OpenCloseSwitchApps",

  # crbug.com/1239838
  "graphics.FPS",

  # crbug.com/1263233
  "security.SharedFilesystemState",

  # https://crbug.com/1269880: Flaky.
  "ui.ChromeCrashReporterMetrics.success_crashpad",

  # https://crbug.com/1276549: Flaky.
  "ui.ChromeCrashLoop.breakpad",
  "ui.ChromeCrashLoop.breakpad_mock_consent",
  "ui.ChromeCrashReporterMetrics.success_breakpad",
  "ui.ChromeCrashReporterMetrics.miss_breakpad",

  # https://crbug.com/1269075: Flaky.
  "shelf.AutoHideSmoke.clamshell_mode",

  # https://crbug.com/1269124: Flaky.
  "quicksettings.LockScreen.no_battery",

  # https://crbug.com/1273485: Flaky.
  "printer.ProxyAdd.epson_software_collate",
  "printer.ProxyAdd.epson_software_uncollated",

  # https://crbug.com/1279285: Flaky.
  "policy.AllowWakeLocks",

  # https://crbug.com/1285206
  "policy.DeveloperToolsAvailability",

  # https://crbug.com/1311242
  "policy.ImagesForURLCheck.allowlist",

  # https://crbug.com/1281645
  "quicksettings.LockScreen",

  # https://crbug.com/1282372
  "security.SELinuxFilesARC",
  "security.NetworkListenersARC",
  "security.SELinuxProcessesARC",

  # https://crbug.com/1282369
  "apps.LaunchHelpAppOffline",

  # https://crbug.com/1282366 and https://crbug.com/1311184
  "inputs.VirtualKeyboardChangeInput.a11y",
  "inputs.VirtualKeyboardDeadKeys.french",
  "inputs.VirtualKeyboardFloat.clamshell",
  "inputs.VirtualKeyboardGlideTyping.clamshell_a11y_floating",
  "inputs.VirtualKeyboardHandwriting.docked",
  "inputs.VirtualKeyboardHandwriting.floating",
  "inputs.VirtualKeyboardMultipaste",
  "inputs.VirtualKeyboardOOBE",
  "inputs.VirtualKeyboardSystemLanguages.es",

  # https://crbug.com/1282370
  "arc.Boot.vm_with_per_vcpu_core_scheduling",

  # https://crbug.com/1282481
  "quicksettings.OpenSettings",

  # http://b/212644512
  "security.SELinuxFilesDataDir",

  # https://crbug.com/1283300 (http://b/212637568)
  "inputs.PhysicalKeyboardCapsLock",
  "inputs.PhysicalKeyboardChangeInput",
  "inputs.PhysicalKeyboardAutocorrect.en_us_1",
  "inputs.PhysicalKeyboardDeadKeys.us_intl_acute",

  # https://crbug.com/1260046
  "wmp.WindowCycle",

  # b/217362120
  "security.SELinuxFilesARC.vm",

  # https://crbug.com/1297581
  "policy.ImagesForURLCheck.blocklist",
  "policy.ImagesForURLCheck.default",
  "policy.Disable3DAPIs",
  "policy.JavaScriptAllowedForUrls",
  "policy.JavaScriptBlockedForUrls",
  "policy.ImagesForURLCheck.default",

  # https://crbug.com/1302469 (http://b/222407003)
  "inputs.PhysicalKeyboardKoreanTyping",
  "inputs.PhysicalKeyboardAutocorrect.en_us_2",

  # https://crbug.com/1300941
  "ui.WebUIJSErrors",

  # https://crbug.com/1306441
  "policy.UserAvatarImage",

  # https://crbug.com/1308288
  "policy.BasicAuthOverHTTPEnabled",
  "policy.AllowCrossOriginAuthPrompt.lacros",
  "policy.BlockThirdPartyCookies.lacros",
  "policy.BookmarkBarEnabled.lacros",

  # https://crbug.com/1310619
  "policy.AutoOpenAllowedForURLs.lacros",

  # https://crbug.com/1307671
  "policy.SafeBrowsingProtectionLevel",

  # https://crbug.com/1309331
  "policy.CookiesAllowedForUrls",

  # https://crbug.com/1307582
  "policy.AccessibilityPolicies.docked_magnifier",

  # https://crbug.com/1307940
  "policy.URLCheck.blocklist",

  # https://crbug.com/1309114
  "policy.BlockThirdPartyCookies.lacros",

  # https://crbug.com/1309288
  "policy.AudioCaptureAllowed",
  "policy.AlternateErrorPagesEnabled",

  # https://crbug.com/1309289
  "policy.AllowDeletingBrowserHistory",

  # https://crbug.com/1307750
  "dlp.DataLeakPreventionRulesListPrinting.ash_blocked",
  "dlp.DataLeakPreventionRulesListPrinting.ash_allowed",

  # https://crbug.com/1309052
  "policy.ShowHomeButton",
  "policy.ShowLogoutButtonInTray",

  # https://crbug.com/1309075
  "policy.AccessibilityPolicies.virtual_keyboard",
  "policy.AccessibilityPolicies.spoken_feedback",

  # https://crbug.com/1309466
  "arc.StartStop.vm",

  # https://crbug.com/1309492
  "inputs.VirtualKeyboardGlideTyping.clamshell_a11y_floating",
  "inputs.VirtualKeyboardChangeInput.a11y",
  "arc.DragDrop.chrome_to_android",

  # https://crbug.com/1311081
  "policy.AutoOpenAllowedForURLs.lacros",

  # https://crbug.com/1312121
  "policy.DefaultJavaScriptSetting",
  "policy.CookiesBlockedForUrls",

  # https://crbug.com/1312965
  "policy.AllowDinosaurEasterEggEnrolled",

  # https://crbug.com/1312908
  "policy.DefaultNotificationsSetting",

  # https://crbug.com/1314935
  "dlp.DataLeakPreventionRulesListClipboardShelf",

  # https://crbug.com/1314923
  "dlp.DataLeakPreventionRulesListScreenshot.ash_allowed",
  "dlp.DataLeakPreventionRulesListClipboardOmni",

  # https://crbug.com/1315123
  "dlp.DataLeakPreventionRulesListScreenshot.ash_blocked",

  # https://crbug.com/1312069
  "apps.LaunchHelpAppFromSettings.stable",
  "apps.LaunchReleaseNotesFromSettings.stable",
  "arc.Clipboard",
  "arc.Gamepad",
  "arc.IMESwitchShortcut",
  "arc.StandardizedKeyboardCopyPaste",
  "arc.StandardizedKeyboardCopyPaste.tablet_mode",
  "arc.StandardizedKeyboardTyping",
  "arc.StandardizedKeyboardTyping.tablet_mode",

  # https://crbug.com/1315880
  "u2fd.WebauthnUsingPassword.tpm1",
]

# To create filters to be used on specific builders add them like this:
# tast_disabled_tests_from_lacros_example = [ "lacros.Basic" ]
# and add the name (i.e. 'tast_disabled_tests_from_lacros_example') to the
# test config as 'tast_expr_key'
# To disable a specific test in lacros_all_tast_tests, add it the following
# list and cite a bug.
tast_disabled_tests_from_lacros_all = []
