Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7327)

Unified Diff: athena/env/athena_env_unittest.cc

Issue 544953003: Supprot V2 app: step1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: athena/env/athena_env_unittest.cc
diff --git a/athena/env/athena_env_unittest.cc b/athena/env/athena_env_unittest.cc
index a4a4bf6824fb7848af54af3a8377f6e8bd8b58c2..e852f45fcee972632ffb77b1aef4ee028e2d95b9 100644
--- a/athena/env/athena_env_unittest.cc
+++ b/athena/env/athena_env_unittest.cc
@@ -11,6 +11,96 @@
namespace athena {
+typedef test::AthenaTestBase AthenaEnvTest;
+
+namespace {
+
+class TerminatingCallback {
+ public:
+ TerminatingCallback()
+ : on_terminating_count_(0),
+ on_terminating_2_count_(0) {
+ }
+
+ void OnTerminating() {
+ on_terminating_count_ ++;
+ }
+
+ void OnTerminating2() {
+ on_terminating_2_count_ ++;
+ }
+
+ int on_terminating_count() const { return on_terminating_count_; }
+ int on_terminating_2_count() const { return on_terminating_2_count_; }
+
+ void Reset() {
+ on_terminating_count_ = 0;
+ on_terminating_2_count_ = 0;
+ }
+
+ private:
+ int on_terminating_count_;
+ int on_terminating_2_count_;
+
+ DISALLOW_COPY_AND_ASSIGN(TerminatingCallback);
+};
+
+} // namespace
+
+TEST_F(AthenaEnvTest, TerminatingCallback) {
+ TerminatingCallback callback_1;
+ TerminatingCallback callback_2;
+ AthenaEnv* env = AthenaEnv::Get();
+ base::Closure cb_1_1 =
+ base::Bind(&TerminatingCallback::OnTerminating,
+ base::Unretained(&callback_1));
+ base::Closure cb_1_2 =
+ base::Bind(&TerminatingCallback::OnTerminating2,
+ base::Unretained(&callback_1));
+ base::Closure cb_2_1 =
+ base::Bind(&TerminatingCallback::OnTerminating,
+ base::Unretained(&callback_2));
+
+ env->AddTerminatingCallback(cb_1_1);
+ env->AddTerminatingCallback(cb_1_2);
+ env->AddTerminatingCallback(cb_2_1);
+ env->OnTerminating();
+
+ EXPECT_EQ(1, callback_1.on_terminating_count());
+ EXPECT_EQ(1, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ // Remove callbacks.
+ callback_1.Reset();
+ callback_2.Reset();
+ env->RemoveTerminatingCallback(cb_1_2);
+ env->OnTerminating();
+ EXPECT_EQ(1, callback_1.on_terminating_count());
+ EXPECT_EQ(0, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ callback_1.Reset();
+ callback_2.Reset();
+ env->RemoveTerminatingCallback(cb_1_1);
+ env->OnTerminating();
+ EXPECT_EQ(0, callback_1.on_terminating_count());
+ EXPECT_EQ(0, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ // Add removed callback.
+ callback_1.Reset();
+ callback_2.Reset();
+ env->AddTerminatingCallback(cb_1_2);
+ env->OnTerminating();
+ EXPECT_EQ(0, callback_1.on_terminating_count());
+ EXPECT_EQ(1, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ // Adding empty callback should not fail.
+ env->AddTerminatingCallback(base::Closure());
+ env->OnTerminating();
+}
+
namespace {
class AthenaShutdownTest : public test::AthenaTestBase {
@@ -29,7 +119,7 @@ class AthenaShutdownTest : public test::AthenaTestBase {
DISALLOW_COPY_AND_ASSIGN(AthenaShutdownTest);
};
-} // namespace athena
+} // namespace
// gfx::Screen should be accessible after shutdown.
TEST_F(AthenaShutdownTest, Shutdown) {

Powered by Google App Engine
This is Rietveld 408576698