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

Unified Diff: chrome/browser/ui/webui/options/options_ui_browsertest.cc

Issue 217043003: Move OptionsUI browsertest away from listening for Signin notifications. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/options/options_ui_browsertest.cc
diff --git a/chrome/browser/ui/webui/options/options_ui_browsertest.cc b/chrome/browser/ui/webui/options/options_ui_browsertest.cc
index ace30bff9825c177c20d00bdd201cb7b7842173e..4f7e4b85d4d420469ea445b3fdb023be308bdd8b 100644
--- a/chrome/browser/ui/webui/options/options_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/options/options_ui_browsertest.cc
@@ -5,9 +5,9 @@
#include "chrome/browser/ui/webui/options/options_ui_browsertest.h"
#include "base/prefs/pref_service.h"
+#include "base/scoped_observer.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/signin/signin_manager.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/ui/browser.h"
@@ -17,7 +17,6 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/ui_test_utils.h"
-#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
@@ -47,6 +46,40 @@ namespace options {
namespace {
+class SignOutWaiter : public SigninManagerBase::Observer {
+ public:
+ SignOutWaiter(SigninManagerBase* signin_manager)
+ : seen_(false), running_(false), scoped_observer_(this) {
+ scoped_observer_.Add(signin_manager);
+ }
+ virtual ~SignOutWaiter() {}
+
+ void Wait() {
+ if (seen_)
+ return;
+
+ running_ = true;
+ message_loop_runner_ = new MessageLoopRunner;
+ message_loop_runner_->Run();
+ EXPECT_TRUE(seen_);
+ }
+
+ virtual void GoogleSignedOut(const std::string& username) OVERRIDE {
+ seen_ = true;
+ if (!running_)
+ return;
+
+ message_loop_runner_->Quit();
+ running_ = false;
+ }
+
+ private:
+ bool seen_;
+ bool running_;
+ ScopedObserver<SigninManagerBase, SignOutWaiter> scoped_observer_;
+ scoped_refptr<MessageLoopRunner> message_loop_runner_;
+};
+
#if !defined(OS_CHROMEOS)
void RunClosureWhenProfileInitialized(const base::Closure& closure,
Profile* profile,
@@ -136,15 +169,13 @@ IN_PROC_BROWSER_TEST_F(OptionsUIBrowserTest, VerifyUnmanagedSignout) {
EXPECT_TRUE(result);
- content::WindowedNotificationObserver wait_for_signout(
- chrome::NOTIFICATION_GOOGLE_SIGNED_OUT,
- content::NotificationService::AllSources());
+ SignOutWaiter sign_out_waiter(signin);
ASSERT_TRUE(content::ExecuteScript(
browser()->tab_strip_model()->GetActiveWebContents(),
"$('stop-syncing-ok').click();"));
- wait_for_signout.Wait();
+ sign_out_waiter.Wait();
EXPECT_TRUE(browser()->profile()->GetProfileName() != user);
EXPECT_TRUE(signin->GetAuthenticatedUsername().empty());
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698