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. 4 5#include "chrome/browser/ui/panels/test_panel_notification_observer.h" 6 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" 11 12TestPanelNotificationObserver::TestPanelNotificationObserver( 13 int notification, 14 const content::NotificationSource& source) 15 : seen_(false), 16 running_(false) { 17 registrar_.Add(this, notification, source); 18} 19 20TestPanelNotificationObserver::~TestPanelNotificationObserver() {} 21 22void TestPanelNotificationObserver::Wait() { 23 if (seen_ || AtExpectedState()) 24 return; 25 26 running_ = true; 27 message_loop_runner_ = new content::MessageLoopRunner; 28 message_loop_runner_->Run(); 29 EXPECT_TRUE(seen_); 30} 31 32void TestPanelNotificationObserver::Observe( 33 int type, 34 const content::NotificationSource& source, 35 const content::NotificationDetails& details) { 36 if (!running_) 37 return; 38 39 if (AtExpectedState()) { 40 seen_ = true; 41 message_loop_runner_->Quit(); 42 running_ = false; 43 } 44} 45