shell_desktop_controller_unittest.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 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 "extensions/shell/browser/shell_desktop_controller.h"
6
7#include "base/macros.h"
8#include "base/memory/scoped_ptr.h"
9#include "base/time/time.h"
10#include "ui/aura/test/aura_test_base.h"
11
12#if defined(OS_CHROMEOS)
13#include "chromeos/dbus/dbus_thread_manager.h"
14#include "chromeos/dbus/fake_power_manager_client.h"
15#endif
16
17namespace extensions {
18
19class ShellDesktopControllerTest : public aura::test::AuraTestBase {
20 public:
21  ShellDesktopControllerTest()
22#if defined(OS_CHROMEOS)
23      : power_manager_client_(NULL)
24#endif
25      {
26  }
27  virtual ~ShellDesktopControllerTest() {}
28
29  virtual void SetUp() OVERRIDE {
30#if defined(OS_CHROMEOS)
31    scoped_ptr<chromeos::DBusThreadManagerSetter> dbus_setter =
32        chromeos::DBusThreadManager::GetSetterForTesting();
33    power_manager_client_ = new chromeos::FakePowerManagerClient();
34    dbus_setter->SetPowerManagerClient(make_scoped_ptr(power_manager_client_).
35        PassAs<chromeos::PowerManagerClient>());
36#endif
37    aura::test::AuraTestBase::SetUp();
38    controller_.reset(new ShellDesktopController());
39  }
40
41  virtual void TearDown() OVERRIDE {
42    controller_.reset();
43    aura::test::AuraTestBase::TearDown();
44#if defined(OS_CHROMEOS)
45    chromeos::DBusThreadManager::Shutdown();
46#endif
47  }
48
49 protected:
50  scoped_ptr<ShellDesktopController> controller_;
51
52#if defined(OS_CHROMEOS)
53  chromeos::FakePowerManagerClient* power_manager_client_;  // Not owned.
54#endif
55
56 private:
57  DISALLOW_COPY_AND_ASSIGN(ShellDesktopControllerTest);
58};
59
60#if defined(OS_CHROMEOS)
61// Tests that a shutdown request is sent to the power manager when the power
62// button is pressed.
63TEST_F(ShellDesktopControllerTest, PowerButton) {
64  // Ignore button releases.
65  power_manager_client_->SendPowerButtonEvent(false /* down */,
66                                              base::TimeTicks());
67  EXPECT_EQ(0, power_manager_client_->num_request_shutdown_calls());
68
69  // A button press should trigger a shutdown request.
70  power_manager_client_->SendPowerButtonEvent(true /* down */,
71                                              base::TimeTicks());
72  EXPECT_EQ(1, power_manager_client_->num_request_shutdown_calls());
73}
74#endif
75
76}  // namespace extensions
77