| OLD | NEW |
| (Empty) |
| 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 "athena/env/public/athena_env.h" | |
| 6 | |
| 7 #include "athena/test/base/athena_test_base.h" | |
| 8 #include "base/bind.h" | |
| 9 #include "ui/gfx/display.h" | |
| 10 #include "ui/gfx/screen.h" | |
| 11 | |
| 12 namespace athena { | |
| 13 | |
| 14 typedef test::AthenaTestBase AthenaEnvTest; | |
| 15 | |
| 16 namespace { | |
| 17 | |
| 18 class TerminatingCallback { | |
| 19 public: | |
| 20 TerminatingCallback() | |
| 21 : on_terminating_count_(0), | |
| 22 on_terminating_2_count_(0) { | |
| 23 } | |
| 24 | |
| 25 void OnTerminating() { | |
| 26 on_terminating_count_ ++; | |
| 27 } | |
| 28 | |
| 29 void OnTerminating2() { | |
| 30 on_terminating_2_count_ ++; | |
| 31 } | |
| 32 | |
| 33 int on_terminating_count() const { return on_terminating_count_; } | |
| 34 int on_terminating_2_count() const { return on_terminating_2_count_; } | |
| 35 | |
| 36 void Reset() { | |
| 37 on_terminating_count_ = 0; | |
| 38 on_terminating_2_count_ = 0; | |
| 39 } | |
| 40 | |
| 41 private: | |
| 42 int on_terminating_count_; | |
| 43 int on_terminating_2_count_; | |
| 44 | |
| 45 DISALLOW_COPY_AND_ASSIGN(TerminatingCallback); | |
| 46 }; | |
| 47 | |
| 48 } // namespace | |
| 49 | |
| 50 TEST_F(AthenaEnvTest, TerminatingCallback) { | |
| 51 TerminatingCallback callback_1; | |
| 52 TerminatingCallback callback_2; | |
| 53 AthenaEnv* env = AthenaEnv::Get(); | |
| 54 base::Closure cb_1_1 = | |
| 55 base::Bind(&TerminatingCallback::OnTerminating, | |
| 56 base::Unretained(&callback_1)); | |
| 57 base::Closure cb_1_2 = | |
| 58 base::Bind(&TerminatingCallback::OnTerminating2, | |
| 59 base::Unretained(&callback_1)); | |
| 60 base::Closure cb_2_1 = | |
| 61 base::Bind(&TerminatingCallback::OnTerminating, | |
| 62 base::Unretained(&callback_2)); | |
| 63 | |
| 64 env->AddTerminatingCallback(cb_1_1); | |
| 65 env->AddTerminatingCallback(cb_1_2); | |
| 66 env->AddTerminatingCallback(cb_2_1); | |
| 67 env->OnTerminating(); | |
| 68 | |
| 69 EXPECT_EQ(1, callback_1.on_terminating_count()); | |
| 70 EXPECT_EQ(1, callback_1.on_terminating_2_count()); | |
| 71 EXPECT_EQ(1, callback_2.on_terminating_count()); | |
| 72 | |
| 73 // Remove callbacks. | |
| 74 callback_1.Reset(); | |
| 75 callback_2.Reset(); | |
| 76 env->RemoveTerminatingCallback(cb_1_2); | |
| 77 env->OnTerminating(); | |
| 78 EXPECT_EQ(1, callback_1.on_terminating_count()); | |
| 79 EXPECT_EQ(0, callback_1.on_terminating_2_count()); | |
| 80 EXPECT_EQ(1, callback_2.on_terminating_count()); | |
| 81 | |
| 82 callback_1.Reset(); | |
| 83 callback_2.Reset(); | |
| 84 env->RemoveTerminatingCallback(cb_1_1); | |
| 85 env->OnTerminating(); | |
| 86 EXPECT_EQ(0, callback_1.on_terminating_count()); | |
| 87 EXPECT_EQ(0, callback_1.on_terminating_2_count()); | |
| 88 EXPECT_EQ(1, callback_2.on_terminating_count()); | |
| 89 | |
| 90 // Add removed callback. | |
| 91 callback_1.Reset(); | |
| 92 callback_2.Reset(); | |
| 93 env->AddTerminatingCallback(cb_1_2); | |
| 94 env->OnTerminating(); | |
| 95 EXPECT_EQ(0, callback_1.on_terminating_count()); | |
| 96 EXPECT_EQ(1, callback_1.on_terminating_2_count()); | |
| 97 EXPECT_EQ(1, callback_2.on_terminating_count()); | |
| 98 | |
| 99 // Adding empty callback should not fail. | |
| 100 env->AddTerminatingCallback(base::Closure()); | |
| 101 env->OnTerminating(); | |
| 102 env->RemoveTerminatingCallback(cb_1_2); | |
| 103 env->RemoveTerminatingCallback(cb_2_1); | |
| 104 } | |
| 105 | |
| 106 namespace { | |
| 107 | |
| 108 class AthenaShutdownTest : public test::AthenaTestBase { | |
| 109 public: | |
| 110 AthenaShutdownTest() {} | |
| 111 ~AthenaShutdownTest() override {} | |
| 112 | |
| 113 virtual void TearDown() { | |
| 114 test::AthenaTestBase::TearDown(); | |
| 115 ASSERT_NE( | |
| 116 gfx::Display::kInvalidDisplayID, | |
| 117 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id()); | |
| 118 } | |
| 119 | |
| 120 private: | |
| 121 DISALLOW_COPY_AND_ASSIGN(AthenaShutdownTest); | |
| 122 }; | |
| 123 | |
| 124 } // namespace | |
| 125 | |
| 126 // gfx::Screen should be accessible after shutdown. | |
| 127 TEST_F(AthenaShutdownTest, Shutdown) { | |
| 128 } | |
| 129 | |
| 130 } // namespace athena | |
| OLD | NEW |