Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Unified Diff: chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_browsertest.cc

Issue 2591783002: Wait visibility changes with RunLoop. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_browsertest.cc
diff --git a/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_browsertest.cc b/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_browsertest.cc
index 405d6de24494cd88b429ad357e8b63254747f228..6bbbd3061e0ff77d294609cf01c3123564e4dd4d 100644
--- a/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_browsertest.cc
+++ b/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_browsertest.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer.h"
#include "base/memory/singleton.h"
+#include "base/run_loop.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
@@ -16,17 +17,38 @@
// Mock class for |ChromeVisibilityObserver| for testing.
class MockChromeVisibilityObserver : public metrics::ChromeVisibilityObserver {
public:
- MockChromeVisibilityObserver() : is_active_(false) {}
+ MockChromeVisibilityObserver() : is_active_(false) {
+ ResetRunLoop();
+ }
+
+ void Wait() {
+ run_loop_->Run();
+ }
+
+ void ResetRunLoop() {
+ run_loop_.reset(new base::RunLoop());
+ }
bool is_active() const { return is_active_; }
+ void set_is_active(bool is_active) { is_active_ = is_active; }
private:
void SendVisibilityChangeEvent(bool active,
base::TimeDelta time_ago) override {
is_active_ = active;
+ // In this test browser became inactive after browser is removed, thus
+ // in this case quit runloop in OnBrowserRemoved().
+ if (is_active_)
+ run_loop_->Quit();
+ }
+
+ void OnBrowserRemoved(Browser* browser) override {
+ metrics::ChromeVisibilityObserver::OnBrowserRemoved(browser);
+ run_loop_->Quit();
}
bool is_active_;
+ std::unique_ptr<base::RunLoop> run_loop_;
DISALLOW_COPY_AND_ASSIGN(MockChromeVisibilityObserver);
};
@@ -38,15 +60,27 @@ IN_PROC_BROWSER_TEST_F(ChromeVisibilityObserverBrowserTest, VisibilityTest) {
EXPECT_FALSE(observer.is_active());
Browser* new_browser = CreateBrowser(browser()->profile());
+ observer.Wait();
EXPECT_TRUE(observer.is_active());
+ observer.ResetRunLoop();
+ observer.set_is_active(false);
Browser* incognito_browser = CreateIncognitoBrowser();
+ observer.Wait();
EXPECT_TRUE(observer.is_active());
+ observer.ResetRunLoop();
CloseBrowserSynchronously(incognito_browser);
+ observer.Wait();
EXPECT_TRUE(observer.is_active());
+ observer.ResetRunLoop();
CloseBrowserSynchronously(new_browser);
+ observer.Wait();
+ EXPECT_TRUE(observer.is_active());
+
+ observer.ResetRunLoop();
CloseBrowserSynchronously(browser());
+ observer.Wait();
EXPECT_FALSE(observer.is_active());
}
« no previous file with comments | « chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698