Improve tab drag experience and fix reentrancy issues This CL has a lot of improvements but unfortunately can be hard to track due to state transitions. The main changes are focused on reentrancy problems with the move loop. Secondary changes are things like detecting single window drag better or determining active tab state during detaching/attaching. CL does the following: - Defer tab migration and target window transition until after the native window move loop has returned and unwound from the callstack. This prevents reentrancy issues during tab dragging operations. - Releases window capture before invoking `RunWindowMoveLoop` so the OS can take exclusive mouse capture. - Starts window drag immediately during session start when dragging an entire window (single tab in browser) - Introduce `CompleteReattachment()` to perform tab migration and target updates after the move loop finishes instead of right after. - Sets the active tab flag when inserting tabs into an empty target model or for the lead dragged tab. Bug: b:535810736,b:536801500 Change-Id: I1919e65e393daf5a46a18f5e4b72ad0cf1073ceb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8208322 Reviewed-by: Fred Shih <ffred@chromium.org> Commit-Queue: David Yeung <dayeung@chromium.org> Cr-Commit-Position: refs/heads/main@{#1675306}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.