# Keep alphabetized. When adding new exclusions file a bug with the reason and
# include a link. If a test should never run on mash, add an early exit to the
# code instead of listing here. See Shell::GetAshConfig().
#
# Most new features are expected to work with mash, see //ash/README.md.
# If you need to disable more than ~10 tests, please contact someone on
# mustash-team@google.com to discuss.

# TODO: mash screenshot support: https://crbug.com/557397.
-AccessibilityHighlightControllerTest.TestCaretRingDrawsBluePixels
-AccessibilityHighlightControllerTest.TestFocusRingDrawsPixels

# TODO: AppList needs to respond to fullscreen and VKB: crbug.com/610874
-AppListPresenterDelegateTest.AppListViewDragHandler
-AppListPresenterDelegateTest.AppListViewDragHandlerTabletModeFromSearch
-AppListPresenterDelegateTest.BottomShelfAlignmentTextStateTransitions
-AppListPresenterDelegateTest.HalfToFullscreenWhenTabletModeIsActive
-AppListPresenterDelegateTest.HalfToPeekingByClickOrTap/0
-AppListPresenterDelegateTest.HalfToPeekingByClickOrTap/1
-AppListPresenterDelegateTest.KeyPressEnablesSearchBox
-AppListPresenterDelegateTest.LongUpwardDragInFullscreenShouldNotClose/1
-AppListPresenterDelegateTest.PeekingToFullscreenWhenTabletModeIsActive
-AppListPresenterDelegateTest.SearchBoxShownOnSmallDisplay
-AppListPresenterDelegateTest.SideShelfAlignmentTextStateTransitions
-AppListPresenterDelegateTest.StateTransitionsByTapAndClickingAppListBodyFromHalf/0
-AppListPresenterDelegateTest.StateTransitionsByTapAndClickingAppListBodyFromHalf/1
-AppListPresenterDelegateTest.StateTransitionsByTappingAppListBodyFromFullscreen/0
-AppListPresenterDelegateTest.StateTransitionsByTappingAppListBodyFromFullscreen/1
-AppListPresenterDelegateTest.TabletModeTextStateTransitions
-AppListPresenterDelegateTest.TapAndClickOutsideClosesHalfAppList/0
-AppListPresenterDelegateTest.TapAndClickOutsideClosesHalfAppList/1
-AppListPresenterDelegateTest.WhitespaceQuery

# TODO: CursorManagerTestApi. http://crbug.com/780637
-CursorWindowControllerTest.DSF
-CursorWindowControllerTest.MoveToDifferentDisplay
-CursorWindowControllerTest.ShouldEnableCursorCompositing
-CursorWindowControllerTest.VisibilityTest

# TODO: wire up mirroring and unified display. http://crbug.com/813978
-DisplayManagerTest.CompositingCursorInMultiSoftwareMirroring
-DisplayManagerTest.SoftwareMirroring
-DisplayManagerTest.SoftwareMirrorModeBasics
-DisplayManagerTest.UpdateMouseCursorAfterRotateZoom
-DisplayManagerTestDisableMultiMirroring.SoftwareMirroringWithCompositingCursor
-DisplayManagerTest.SoftwareMirrorRotationForTablet
-DisplayManagerTest.SoftwareMirrorRotationForNonTablet

# TODO: Docked magnifier needs reflector to work in mash.
# https://crbug.com/814481.
-AccessibilityControllerSigninTest.EnableOnLoginScreenAndLogin/0
-AccessibilityControllerSigninTest.EnableOnLoginScreenAndLogin/1
-AccessibilityControllerSigninTest.EnableOnLoginScreenAndLogin/2
-DockedMagnifierTest.AddRemoveDisplays
-DockedMagnifierTest.DisplaysWorkAreas
-DockedMagnifierTest.FocusChangeEvents
-DockedMagnifierTest.HighContrastMode
-DockedMagnifierTest.MutuallyExclusiveMagnifiers
-DockedMagnifierTest.TestEnableAndDisable
-DockedMagnifierTest.TestOutsidePrefsUpdates
-DockedMagnifierTest.TextInputFieldEvents
-DockedMagnifierTest.TouchEvents
-DockedMagnifierTest.TransformSimple
-MagnifiersAcceleratorsTester.TestToggleMagnifiers

# TODO: CursorManagerTestApi. http://crbug.com/780637
-DragWindowResizerTest.CursorDeviceScaleFactor

# TODO: Implement DragWindowController for mash? crbug.com/633782
-DragWindowResizerTest.DragWindowController
-DragWindowResizerTest.DragWindowControllerAcrossThreeDisplays

# TODO: Implement/fix mouse warp in mash: crbug.com/747465
-DragWindowResizerTest.MoveWindowAcrossDisplays
-DragWindowResizerTest.WarpMousePointer
-DragWindowResizerTest.WindowDragWithMultiDisplays
-DragWindowResizerTest.WindowDragWithMultiDisplaysActiveRoot
-DragWindowResizerTest.WindowDragWithMultiDisplaysRightToLeft

# TODO: Extended desktop. http://crbug.com/695570
-ExtendedDesktopTest.Activation
-ExtendedDesktopTest.Basic
-ExtendedDesktopTest.Capture
-ExtendedDesktopTest.CaptureEventLocation
-ExtendedDesktopTest.CaptureEventLocationHighDPI
-ExtendedDesktopTest.CaptureEventLocationHighDPI_2
-ExtendedDesktopTest.ConvertPoint
-ExtendedDesktopTest.GetRootWindowAt
-ExtendedDesktopTest.GetRootWindowMatching
-ExtendedDesktopTest.KeyEventsOnLockScreen
-ExtendedDesktopTest.MoveWindow
-ExtendedDesktopTest.MoveWindowByMouseClick
-ExtendedDesktopTest.MoveWindowToDisplay
-ExtendedDesktopTest.MoveWindowWithTransient
-ExtendedDesktopTest.OpenSystemTray
-ExtendedDesktopTest.PassiveGrab
-ExtendedDesktopTest.PostMoveParentTransientChild
-ExtendedDesktopTest.StayInSameRootWindow
-ExtendedDesktopTest.SystemModal
-ExtendedDesktopTest.TestCursor
-ExtendedDesktopTest.TestCursorLocation

# Test is flaky. http://crbug.com/794703.
-HighlighterControllerTest.HighlighterGesturesScaled
# Test is flaky. http://crbug.com/817327.
-HighlighterControllerTest.HighlighterGesturesRotated

# TODO: Top-of-screen mouse reveal doesn't work, maybe problem with
# EventGenerator. http://crbug.com/698085
-ImmersiveFullscreenControllerTest.Bubbles
-ImmersiveFullscreenControllerTest.Delegate
-ImmersiveFullscreenControllerTest.DifferentModalityEnterExit
-ImmersiveFullscreenControllerTest.EndRevealViaGesture
-ImmersiveFullscreenControllerTest.EventsDoNotLeakToWindowUnderneath
-ImmersiveFullscreenControllerTest.Focus
-ImmersiveFullscreenControllerTest.Inactive
-ImmersiveFullscreenControllerTest.MouseEventsVerticalDisplayLayout
-ImmersiveFullscreenControllerTest.MouseHoveredWithoutMoving
-ImmersiveFullscreenControllerTest.OnMouseEvent
-ImmersiveFullscreenControllerTest.RevealViaGestureChildConsumesEvents
-ImmersiveFullscreenControllerTest.Transient
-CustomFrameViewAshTest.WideFrame

# Input event or IME problem, keystrokes not delivered to password field.
# http://crbug.com/725257
-LockScreenSanityTest.PasswordSubmitClearsPasswordAfterFailedAuthentication
-LoginPasswordViewTest.PasswordSubmitClearsPassword
-LoginPasswordViewTest.PasswordSubmitIncludesPasswordText
-LoginPasswordViewTest.PasswordSubmitViaButton
-LoginPasswordViewTest.SubmitButtonUpdatesUiState

# Ash.Login.Lock.AuthMethod.Used.ClamShellMode histogram count is wrong,
# possible TabletModeController problem. http://crbug.com/814009
-LoginMetricsRecorderTest.UnlockAttempts

# Focus doesn't move. Possible EventGenerator problem. http://crbug.com/814011
-LoginShelfViewTest.TabGoesFromShelfToStatusAreaAndBackToShelf

# Needs to support one InputMethod per top-level widget. May also have issues
# with multiple displays. https://crbug.com/821551
-MagnificationControllerTest.CenterTextCaretInViewport
-MagnificationControllerTest.CenterTextCaretNotInsideViewport
-MagnificationControllerTest.FollowTextInputFieldFocus
-MagnificationControllerTest.FollowTextInputFieldKeyPress
-MagnificationControllerTest.MoveToSecondDisplayWithTouch
-MagnificationControllerTest.PanWindowToLeft
-MagnificationControllerTest.PanWindowToRight

# TODO: CursorManagerTestApi. http://crbug.com/780637
-MirrorWindowControllerTest.MirrorCursorBasic
-MirrorWindowControllerTest.MirrorCursorLocations
-MirrorWindowControllerTest.MirrorCursorMoveOnEnter
-MirrorWindowControllerTest.MirrorCursorRotate
-MouseCursorEventFilterTest.CursorDeviceScaleFactor

# TODO: Triage
-MultiMirroringTest.CompositingCursorInMultiSoftwareMirroring
-MultiMirroringTest.HardwareMirrorMode
-MultiMirroringTest.SoftwareMirrorModeBasics
-MultiMirroringTest.SourceAndDestinationInSoftwareMirrorMode
-MultiMirroringTest.SwitchToAndFromSoftwareMirrorMode

# TODO: MultiWindowResizeController. http://crbug.com/699172
-MultiWindowResizeControllerTest.BasicTests
-MultiWindowResizeControllerTest.ClickOutside
-MultiWindowResizeControllerTest.DeleteWindow
-MultiWindowResizeControllerTest.Drag
-MultiWindowResizeControllerTest.IsOverWindows
-MultiWindowResizeControllerTest.Three
-MultiWindowResizeControllerTest.TwoSnappedWindows
-MultiWindowResizeControllerTest.WindowStateChange
-NativeCursorManagerAshTest.FractionalScale
-NativeCursorManagerAshTest.LockCursor
-NativeCursorManagerAshTest.SetCursor
-NativeCursorManagerAshTest.SetCursorSize
-NativeCursorManagerAshTest.SetDeviceScaleFactorAndRotation
-NativeCursorManagerAshTest.UIScaleShouldNotChangeCursor

# TODO: NightLight and mirror mode in mash. https://crbug.com/836368
-NightLightTest.TestNightLightWithDisplayConfigurationChanges

# TODO: Maybe due to dragging across displays. http://crbug.com/698888
-NormalPanelPopup/PanelWindowResizerTransientTest.PanelWithTransientChild/0

# TODO: Triage
-OverviewGestureHandlerTest.HorizontalScrollInOverview
-OverviewGestureHandlerTest.ScrollUpDownWithoutReleasing
-OverviewGestureHandlerTest.VerticalScrolls

# TODO: Maybe due to dragging across displays. http://crbug.com/698888
-PanelWindowResizerTest.AttachToSecondDisplay
-PanelWindowResizerTest.AttachToSecondFullscreenDisplay
-PanelWindowResizerTest.DetachAcrossDisplays
-PanelWindowResizerTest.DetachThenAttachToSecondDisplay
-PanelWindowResizerTest.DetachThenDragAcrossDisplays

# "Host widget" for magnifier is null. http://crbug.com/814014
-PartialMagnificationControllerTest.ActiveOnPointerDown
-PartialMagnificationControllerTest.DisablingDisablesActive
-PartialMagnificationControllerTest.MagnifierFollowsPointer
-PartialMagnificationControllerTest.MultipleDisplays

# TODO: Needs cursor manager support. http://crbug.com/698033
-PartialScreenshotControllerTest.CursorVisibilityTest
-PartialScreenshotControllerTest.LargeCursor
-PowerButtonControllerTest.HideCursorAfterShowMenu

# TODO: Needs LockStateController. http://crbug.com/632189.
-PreferredReservedAcceleratorsTest.AcceleratorsWithFullscreen
-PreferredReservedAcceleratorsTest.AcceleratorsWithPinned

# TODO: CursorManagerTestApi. http://crbug.com/780637
-ResizeShadowAndCursorTest.MaximizeRestore
-ResizeShadowAndCursorTest.Minimize
-ResizeShadowAndCursorTest.MouseDrag
-ResizeShadowAndCursorTest.MouseHover
-ResizeShadowAndCursorTest.Touch

# TODO: Triage
-ShelfLayoutManagerTest.SwipingUpOnShelfInLaptopModeForFullscreenAppList
-ShelfLayoutManagerTest.SwipingUpOnShelfInTabletModeForFullscreenAppList
-ShelfLayoutManagerTest.AutoHide
-ShelfLayoutManagerTest.AutoHideShelfOnScreenBoundary
-ShelfLayoutManagerTest.GestureDrag

# TODO: Probably event filter problem. http://crbug.com/695758
-ShellTest.TestPreTargetHandlerOrder

# TODO: ShellPortMash::CreateTabletModeEventHandler. http://crbug.com/698093
-SplitViewWindowSelectorTest.DragToClose
-SplitViewWindowSelectorTest.FlingToClose

# Focus traversal problem. http://crbug.com/814019
-StatusAreaWidgetFocusTest.FocusOutObserver

# TODO: Needs virtual keyboard. http://crbug.com/698892
-SystemModalContainerLayoutManagerTest.SystemModalDialogGetPushedButNotCroppedFromKeyboard
-SystemModalContainerLayoutManagerTest.SystemModalDialogGetPushedButNotCroppedFromKeyboardIfNotCentered
-SystemModalContainerLayoutManagerTest.SystemModalDialogGetPushedFromKeyboard

# TODO: ShellPortMash::CreateTabletModeEventHandler. http://crbug.com/698093
-TabletModeWindowManagerTest.ExitFullScreenWithEdgeSwipeFromBottom
-TabletModeWindowManagerTest.ExitFullScreenWithEdgeSwipeFromTop
-TabletModeWindowManagerTest.ExitFullScreenWithEdgeTouchAtBottom
-TabletModeWindowManagerTest.ExitFullScreenWithEdgeTouchAtTop

# TODO: Needs CursorManager. http://crbug.com/631103
-TooltipControllerTest.HideTooltipWhenCursorHidden

# TODO: Touch HUD. http://crbug.com/698032
-TouchHudDebugTest.DualDisplays
-TouchHudDebugTest.Headless
-TouchHudDebugTest.MirrorDisplays
-TouchHudDebugTest.RemovePrimaryDisplay
-TouchHudDebugTest.RemoveSecondaryDisplay
-TouchHudDebugTest.SingleDisplay
-TouchHudDebugTest.SwapPrimaryDisplay
-TouchHudDebugTest.SwapPrimaryThenMirrorDisplays

# TODO: Needs virtual keyboard. http://crbug.com/616909
-TrayIMETest.HidesOnA11yEnabled
-TrayIMETest.PerformActionOnDetailedView

# TODO: Wire up mirroring and unified display: http://crbug.com/770243.
-UnifiedMouseWarpControllerTest.BoundaryTest
-UnifiedMouseWarpControllerTest.BoundaryAndWarpSimpleTest
-UnifiedMouseWarpControllerTest.BoundaryTestGrid
-UnifiedMouseWarpControllerTest.WarpMouse

# TODO: Needs virtual keyboard. http://crbug.com/616909
-VirtualKeyboardControllerAutoTest.DisabledIfInternalKeyboardPresent
-VirtualKeyboardControllerAutoTest.DisabledIfNoTouchScreen
-VirtualKeyboardControllerAutoTest.EnabledDuringTabletMode
-VirtualKeyboardControllerAutoTest.SuppressedIfExternalKeyboardPresent
-VirtualKeyboardControllerAutoTest.SuppressedInMaximizedMode

# TODO: Needs virtual keyboard, but different issue. http://crbug.com/695640
-VirtualKeyboardRootWindowControllerTest.EnsureCaretInWorkAreaWithMultipleDisplays
-VirtualKeyboardRootWindowControllerTest.FollowInputFocus
-VirtualKeyboardRootWindowControllerTest.VirtualKeyboardOnTouchableDisplayOnly
-VirtualKeyboardRootWindowControllerTest.VirtualKeyboardShowOnSpecifiedDisplay

# TODO: http://crbug.com/698894
-WindowCycleControllerTest.MouseEventsCaptured
-WindowCycleControllerTest.TabKeyNotLeaked

# TODO: Needs CursorManager. http://crbug.com/631103
-WindowManagerTest.ActivateOnMouse
-WindowManagerTest.ActivateOnPointerWindowProperty
-WindowManagerTest.ActivateOnTouch
-WindowManagerTest.AdditionalFilters
-WindowManagerTest.Focus
-WindowManagerTest.MouseEventCursors
-WindowManagerTest.PanelActivation
-WindowManagerTest.TestCursorClientObserver
-WindowManagerTest.TransformActivate
-WindowManagerTest.UpdateCursorVisibility
-WindowManagerTest.UpdateCursorVisibilityAccelerator
-WindowManagerTest.UpdateCursorVisibilityOnKeyEvent

# TODO: Crashes in bounds_animator.cc. http://crbug.com/730759
-WindowSelectorTest.MultipleDisplays
-WindowSelectorTest.OverviewNoWindowsIndicatorMultiDisplay
-WindowSelectorTest.RemoveDisplay
-WindowSelectorTest.RemoveDisplayWithAnimation

# Needs CursorManager/CursorManagerTestApi. http://crbug.com/780637
-WindowTreeHostManagerTest.DontUpdateInvisibleCursorLocationAfterDisplayChange
-WindowTreeHostManagerTest.UpdateMouseLocationAfterDisplayChange
-WindowTreeHostManagerTest.UpdateMouseLocationAfterDisplayChange_2ndOnLeft
-WindowTreeHostManagerTest.UpdateMouseLocationAfterDisplayChange_PrimaryDisconnected
-WindowTreeHostManagerTest.UpdateNonVisibleMouseLocationAfterDisplayChange_PrimaryDisconnected
-WindowTreeHostManagerTest.UpdateMouseLocationAfterDisplayChange_SwapPrimary

# TODO: Panel focus is broken. http://crbug.com/780936
-WorkspaceControllerTest.WindowEdgeMouseHitTestPanel

# TODO: Possible event filter problem. http://crbug.com/699175
-WorkspaceEventHandlerTest.DoubleClickCaptionTogglesMaximize
-WorkspaceEventHandlerTest.DoubleClickSingleAxisResizeEdge
-WorkspaceEventHandlerTest.DoubleClickSingleAxisWhenSideSnapped
-WorkspaceEventHandlerTest.DoubleTapCaptionTogglesMaximize

# TODO: Needs virtual keyboard. http://crbug.com/616909
-WorkspaceLayoutManagerKeyboardTest.AdjustWindowForA11yKeyboard
-WorkspaceLayoutManagerKeyboardTest.ChildWindowFocused
-WorkspaceLayoutManagerKeyboardTest.IgnoreKeyboardBoundsChange
-WorkspaceLayoutManagerKeyboardTest.IgnoreWorkAreaChangeinNonStickyMode

# TODO: Possible display config issue. http://crbug.com/793101
-WorkspaceLayoutManagerTest.KeepMinimumVisibilityInDisplays

# TODO: Needs CursorManager. http://crbug.com/631103
-WorkspaceWindowResizerTest.MouseMoveWithTouchDrag

# Keep alphabetized. See comment at top of file.

