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

Side by Side Diff: chrome/browser/ui/panels/test_panel_active_state_observer.cc

Issue 10914242: Improve panel tests by properly waiting for expected conditions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Synced Created 8 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/panels/test_panel_active_state_observer.h" 5 #include "chrome/browser/ui/panels/test_panel_active_state_observer.h"
6 6
7 #include "chrome/browser/ui/panels/panel.h" 7 #include "chrome/browser/ui/panels/panel.h"
8 #include "chrome/common/chrome_notification_types.h" 8 #include "chrome/common/chrome_notification_types.h"
9 #include "content/public/browser/notification_source.h" 9 #include "content/public/browser/notification_source.h"
10 #include "content/public/test/test_utils.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 10
13 PanelActiveStateObserver::PanelActiveStateObserver( 11 PanelActiveStateObserver::PanelActiveStateObserver(
14 Panel* panel, 12 Panel* panel,
15 bool expect_active) 13 bool expect_active)
16 : panel_(panel), 14 : TestPanelNotificationObserver(
17 expect_active_(expect_active), 15 chrome::NOTIFICATION_PANEL_CHANGED_ACTIVE_STATUS,
18 seen_(false), 16 content::Source<Panel>(panel)),
19 running_(false) { 17 panel_(panel),
20 registrar_.Add(this, chrome::NOTIFICATION_PANEL_CHANGED_ACTIVE_STATUS, 18 expect_active_(expect_active) {
21 content::Source<Panel>(panel));
22 } 19 }
23 20
24 PanelActiveStateObserver::~PanelActiveStateObserver() {} 21 PanelActiveStateObserver::~PanelActiveStateObserver() {}
25 22
26 void PanelActiveStateObserver::Wait() {
27 if (seen_ || AtExpectedState())
28 return;
29
30 running_ = true;
31 message_loop_runner_ = new content::MessageLoopRunner;
32 message_loop_runner_->Run();
33 EXPECT_TRUE(seen_);
34 }
35
36 bool PanelActiveStateObserver::AtExpectedState() { 23 bool PanelActiveStateObserver::AtExpectedState() {
37 return panel_->IsActive() == expect_active_; 24 return panel_->IsActive() == expect_active_;
38 } 25 }
39
40 void PanelActiveStateObserver::Observe(
41 int type,
42 const content::NotificationSource& source,
43 const content::NotificationDetails& details) {
44 if (!running_)
45 return;
46
47 if (AtExpectedState()) {
48 seen_ = true;
49 message_loop_runner_->Quit();
50 running_ = false;
51 }
52 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698