tablet: Call CanSnapInSplitview() before transferring snap from desktop.

CanSnapInSplitview() checks stricter requirements than
WindowState::CanSnap(), meaning that a window snapped in clamshell mode
might not be appropriate to carry over to split view on entering tablet
mode. Now the tablet mode window manager shall seek approval from
CanSnapInSplitview() before attempting to carry over a snapped window to
split view on entering tablet mode.
TabletModeWindowState::TabletModeWindowState() shall no longer call
TabletModeWindowState::GetSnappedWindowStateType(), because the whole
purpose of that function is to check CanSnapInSplitview() which shall
have already been checked in the tablet mode window manager.

Test: ash_unittests TabletModeControllerTest.StartTablet*DesktopOnly*
Bug: 936478
Change-Id: If4f732d7276d7cae438fe08a919a13f170986f7d
Commit-Queue: Avery Musbach <>
Reviewed-by: Xiyuan Xia <>
Cr-Commit-Position: refs/heads/master@{#636556}
3 files changed