Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / ui / panels / test_panel_notification_observer.cc
blobc685e2f891b09eb3c2f6ede0242e68da6c180e76
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
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/panels/test_panel_notification_observer.h"
7 #include "chrome/browser/chrome_notification_types.h"
8 #include "content/public/browser/notification_source.h"
9 #include "content/public/test/test_utils.h"
10 #include "testing/gtest/include/gtest/gtest.h"
12 TestPanelNotificationObserver::TestPanelNotificationObserver(
13 int notification,
14 const content::NotificationSource& source)
15 : seen_(false),
16 running_(false) {
17 registrar_.Add(this, notification, source);
20 TestPanelNotificationObserver::~TestPanelNotificationObserver() {}
22 void TestPanelNotificationObserver::Wait() {
23 if (seen_ || AtExpectedState())
24 return;
26 running_ = true;
27 message_loop_runner_ = new content::MessageLoopRunner;
28 message_loop_runner_->Run();
29 EXPECT_TRUE(seen_);
32 void TestPanelNotificationObserver::Observe(
33 int type,
34 const content::NotificationSource& source,
35 const content::NotificationDetails& details) {
36 if (!running_)
37 return;
39 if (AtExpectedState()) {
40 seen_ = true;
41 message_loop_runner_->Quit();
42 running_ = false;