Fix test bug in RegistryOverrideManager when using MOCK_TIME. This CL fixed test bug in RegistryOverrideManager by using base::subtle::TimeNowIgnoringOverride() instead of base::Time::Now() to resolve RegistryOverrideManager test failure when using MOCK_TIME. Background: In base/test/test_reg_util_win.h, RegistryOverrideManager redirects part of the registry to a temporary key. The temporary key contains a time stamp, which "is used to delete stale keys left over from crashed tests." This causes problems when MOCK_TIME is enabled, because base::Time::Now() returns a timestamp from 1970. When multiple tests run at the same time using RegistryOverrideManager, new instances of RegistryOverrideManager will clean up any redirected registry paths that have the timestamp from 1970, which then cause the currently running tests to fail since their expected reg keys were deleted by the other test. Solution: Use base::subtle::TimeNowIgnoringOverride() instead of base::Time::Now() can give us the real current time instead of the mock time in 1970. This can resolve related RegistryOverrideManager test failure when using MOCK_TIME. Test: Corresponding test are added to verify the behavior, explanations listed below: We first create RegKey with mock time (1970), also create another RegKey with GenerateTempKeyPath() - which is based on real time using base::subtle::TimeNowIgnoringOverride(). Then we create RegistryOverrideManager with current time using base::subtle::TimeNowIgnoringOverride(), after this, the key created with mock time (1970) should be deleted, while the key created with base::subtle::TimeNowIgnoringOverride() should still present. Key created with mock time (1970) gets deleted represent the current bug we found, the key created by calling GenerateTempKeyPath() represent the new approach we are going for, and its presence after a new RegistryOverrideManager being created validated that this key will not get invalidated due to past time (1970) issue. Thus validated that this test bug is resolved. Bug: 1488676 Change-Id: I65a8f15872d84d82c39e939aba679d36e979d38c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4917628 Reviewed-by: Will Harris <wfh@chromium.org> Auto-Submit: Qiaofei Ye <qiaye@microsoft.com> Commit-Queue: Qiaofei Ye <qiaye@microsoft.com> Cr-Commit-Position: refs/heads/main@{#1206653}
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.