[ios] Clear Browser's UserData at the end of the destructor Most of Browser's UserData objects have a pointer back to the Browser. As base::SupportUserData is a super class of Browser the base::SupportUserData::UserData were being destroyed after the vtable of Browser cleared. This made calling methods on Browser really risky in Browser's UserData destructors. To make this safer, call ClearAllUserData() at the end of the destructor of BrowserImpl, ensuring that all the UserData are destroyed before the object itself becomes invalid. This means that the UserData object can keep a simple raw_ptr<Browser> and be sure that it will be valid for their whole lifetime. Bug: 409299519 Change-Id: I9c4b59180dd7993df9b969d4a5d4b8069c0351c5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6516292 Reviewed-by: Mark Cogan <marq@chromium.org> Commit-Queue: Mark Cogan <marq@chromium.org> Auto-Submit: Sylvain Defresne <sdefresne@chromium.org> Cr-Commit-Position: refs/heads/main@{#1456260}
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.