commit | 674bf1c02eed35bb7b2b3dd960836081c2c0e59a | [log] [tgz] |
---|---|---|
author | danakj <[email protected]> | Fri May 01 18:37:51 2020 |
committer | Commit Bot <[email protected]> | Fri May 01 18:37:51 2020 |
tree | db4ab58275c5b53442a615da6d77e3144acd05d9 | |
parent | 1146fbc27fd1e12f3a46d33541b3cb234b70717e [diff] |
Remove web-test-specific code for focusing. Drops the SetFocusAndActivate() test code from RenderViewImpl and the plumbing over to it. Instead, pretend to receive the focus/activate IPCs that the browser sends in production. window.focus() on another window goes through the browser process in production, but had a synchronous override in web tests, that allowed tests to pass even though we should need to wait to see the focus occur asynchronously in chrome. It also denies the request unless there is a user action present, but in web tests we dropped that requirement. This CL removes the web test override there, and adds user gestures to the tests that are performing a window.focus() on another window. Drop the focus of the main frame when navigating to about:blank between tests. The browser already sends a Focus() IPC to the main frame of the about:blank at the start of a test. This was causing the test windows to lie about being focused - they would all claim to be focused! It caused an error in one sensor test, where it runs code in the secondary inspector window that expects the window to be focused. So a mojom method is added to mojom::WebTestControlHost to move focus to that window for the test. Remove all the other extraneous focus-moving that was happening in the WebTestControlHost and friends browser code. That code was moving focus on Linux but does nothing on Mac, because on Mac headless mode the RenderWidgetHostView::Focus() method asks the OS to focus a window that isn't visible so it does nothing. Rename the testRunner.setWindowIsKey(bool) to setWindowFocus(bool) and remove comments explaining that the method is actually setting window focus. It would be nice to remove this entirely and use a separate window to move focus around, but that doesn't work for some tests, which is a bit interesting but not addressed by this CL. Drop the "previously focused window" tracking in TestRunner, which would keep around invalid (UAF-prone) pointers. Instead, iterate through the windows (actually, RenderViews) and blur the focused one there. The http/tests/serviceworker/clients-openwindow.html test expectations are adjusted as the renderer no longer marks the main frame as focused on navigation, so the service worker no longer reports the opened window as focused. Filed bug 1074482 and bug 1076129 for WPT tests that fail after this change. The former because it's either/both expecting run_web_tests.py to focus newly recreated windows and we don't, and it was calling window.focus() of another window, which had test-only synchronous code which we have removed. The latter because it seems to have a bug in how its written that this CL has uncovered. [email protected] Bug: 866140, 1069111, 1074482, 1076129 Change-Id: I9d7ed8f9c41a75fc8afaf6bb0bfc3e5772e1297c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2165248 Commit-Queue: danakj <[email protected]> Reviewed-by: Elly Fong-Jones <[email protected]> Reviewed-by: Mustaq Ahmed <[email protected]> Reviewed-by: Nasko Oskov <[email protected]> Cr-Commit-Position: refs/heads/master@{#764725}
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.
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.