Commit f61cedaf authored by Alex Ilin's avatar Alex Ilin Committed by Commit Bot

Unflake ProfileHelperTest.DeleteSoleProfile

The test removes the sole profile, waits for the browser removal from
the BrowserList and then expects that the new browser is already added.
This seems not to be always true, since the new profile/browser is
created asynchronously.

This CL modifies ProfileHelperTest.DeleteSoleProfile to wait for
BrowserListObserver::OnBrowserAdded() event before checking that the
BrowserList isn't empty.

Bug: 1008238
Change-Id: Ie7b6a705d7cba5a03e943ed6ec0ab4c3ea08c36a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863294
Auto-Submit: Alex Ilin <alexilin@chromium.org>
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#706499}
parent 32289f7f
...@@ -69,6 +69,31 @@ class ExpectBrowserActivationForProfile : public BrowserListObserver { ...@@ -69,6 +69,31 @@ class ExpectBrowserActivationForProfile : public BrowserListObserver {
base::RunLoop loop_; base::RunLoop loop_;
}; };
// An observer that returns back to test code after a new browser is added to
// the BrowserList.
class BrowserAddedObserver : public BrowserListObserver {
public:
BrowserAddedObserver() { BrowserList::AddObserver(this); }
~BrowserAddedObserver() override { BrowserList::RemoveObserver(this); }
Browser* Wait() {
run_loop_.Run();
return browser_;
}
protected:
// BrowserListObserver:
void OnBrowserAdded(Browser* browser) override {
browser_ = browser;
run_loop_.Quit();
}
private:
Browser* browser_;
base::RunLoop run_loop_;
};
} // namespace } // namespace
using ProfileHelperTest = InProcessBrowserTest; using ProfileHelperTest = InProcessBrowserTest;
...@@ -114,13 +139,7 @@ IN_PROC_BROWSER_TEST_F(ProfileHelperTest, OpenNewWindowForProfile) { ...@@ -114,13 +139,7 @@ IN_PROC_BROWSER_TEST_F(ProfileHelperTest, OpenNewWindowForProfile) {
#endif #endif
} }
#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) && \ IN_PROC_BROWSER_TEST_F(ProfileHelperTest, DeleteSoleProfile) {
defined(NDEBUG)
#define MAYBE_DeleteSoleProfile DISABLED_DeleteSoleProfile
#else
#define MAYBE_DeleteSoleProfile DeleteSoleProfile
#endif
IN_PROC_BROWSER_TEST_F(ProfileHelperTest, MAYBE_DeleteSoleProfile) {
content::TestWebUI web_ui; content::TestWebUI web_ui;
Browser* original_browser = browser(); Browser* original_browser = browser();
ProfileAttributesStorage& storage = ProfileAttributesStorage& storage =
...@@ -132,12 +151,15 @@ IN_PROC_BROWSER_TEST_F(ProfileHelperTest, MAYBE_DeleteSoleProfile) { ...@@ -132,12 +151,15 @@ IN_PROC_BROWSER_TEST_F(ProfileHelperTest, MAYBE_DeleteSoleProfile) {
EXPECT_EQ(1u, storage.GetNumberOfProfiles()); EXPECT_EQ(1u, storage.GetNumberOfProfiles());
// Original browser will be closed, and browser with the new profile created. // Original browser will be closed, and browser with the new profile created.
BrowserAddedObserver added_observer;
webui::DeleteProfileAtPath(original_browser->profile()->GetPath(), webui::DeleteProfileAtPath(original_browser->profile()->GetPath(),
ProfileMetrics::DELETE_PROFILE_SETTINGS); ProfileMetrics::DELETE_PROFILE_SETTINGS);
ui_test_utils::WaitForBrowserToClose(original_browser); ui_test_utils::WaitForBrowserToClose(original_browser);
Browser* new_browser = added_observer.Wait();
EXPECT_EQ(1u, browser_list->size()); EXPECT_EQ(1u, browser_list->size());
EXPECT_FALSE(base::Contains(*browser_list, original_browser)); EXPECT_FALSE(base::Contains(*browser_list, original_browser));
EXPECT_NE(new_browser, original_browser);
EXPECT_EQ(1u, storage.GetNumberOfProfiles()); EXPECT_EQ(1u, storage.GetNumberOfProfiles());
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment