Ash: Improvements to split view resizing in tablet mode.

This change adds the feature PerformantSplitViewResizing. Normally,
snapped windows are resized as the split view divider is moved. When
this feature is enabled, the windows may instead be moved. The
implementation switches between resizing and moving windows based on
how fast the divider is moved.

Additionally, bounds of managed windows are now monitored more
closely. This fixes issues with windows whose bounds are updated
asynchronously. The net effect of this is that the split view divider
now always neatly divides the managed windows. Previously, it was
possible to have the divider drawn on top of windows.

Tested: unit tests, manual testing in the emulator as well as testing
on low-end Android P devices and high-end Android R devices.

Bug: 1203046,1208616,934616
Change-Id: Ie66269e673f7072955a76afdaebd56acfdd2ed2b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2993064
Reviewed-by: Xiaoqian Dai <[email protected]>
Reviewed-by: Sammie Quon <[email protected]>
Commit-Queue: Daniel Andersson <[email protected]>
Cr-Commit-Position: refs/heads/master@{#902137}
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 273053d..b469bd4 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -4985,6 +4985,11 @@
 const char kNearbySharingWebRtcDescription[] =
     "Enables use of WebRTC in Nearby Share.";
 
+const char kPerformantSplitViewResizing[] = "Performant Split View Resizing";
+const char kPerformantSplitViewResizingDescription[] =
+    "If enabled, windows may be moved instead of scaled when resizing split "
+    "view in tablet mode.";
+
 const char kPhoneHubCameraRollName[] = "Camera Roll in Phone Hub";
 const char kPhoneHubCameraRollDescription[] =
     "Enables the Camera Roll feature in Phone Hub, which allows users to "