Home | History | Annotate | Download | only in panels
      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 
     12 TestPanelNotificationObserver::TestPanelNotificationObserver(
     13     int notification,
     14     const content::NotificationSource& source)
     15     : seen_(false),
     16       running_(false) {
     17   registrar_.Add(this, notification, source);
     18 }
     19 
     20 TestPanelNotificationObserver::~TestPanelNotificationObserver() {}
     21 
     22 void 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 
     32 void 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