Index: base/android/activity_status.cc |
diff --git a/base/android/activity_status.cc b/base/android/activity_status.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7dad6813fcf32a57a79b1fe474cf7e6e879e174c |
--- /dev/null |
+++ b/base/android/activity_status.cc |
@@ -0,0 +1,60 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/android/activity_status.h" |
+ |
+#include <jni.h> |
+ |
+#include "base/memory/singleton.h" |
gavinp
2013/04/26 07:37:53
Not needed, the header already has this.
digit1
2013/04/26 12:32:40
Done.
|
+#include "jni/ActivityStatus_jni.h" |
+ |
+namespace base { |
+namespace android { |
+ |
+ActivityStatus::StateListener::StateListener() { |
+ ActivityStatus::GetInstance()->RegisterStateListener(this); |
+} |
+ |
+ActivityStatus::StateListener::~StateListener() { |
+ ActivityStatus::GetInstance()->UnregisterStateListener(this); |
+} |
+ |
+// static |
+ActivityStatus* ActivityStatus::GetInstance() { |
+ return Singleton |
+ <ActivityStatus, LeakySingletonTraits<ActivityStatus> >::get(); |
+} |
+ |
+ActivityStatus::ActivityStatus() |
gavinp
2013/04/26 07:37:53
Method order: methods in .cc files should be in th
digit1
2013/04/26 12:32:40
Done.
|
+ : observers_(new ObserverListThreadSafe<StateListener>()) { |
+ Java_ActivityStatus_registerThreadSafeNativeStateListener( |
+ base::android::AttachCurrentThread()); |
+} |
+ |
+void ActivityStatus::RegisterStateListener(StateListener* state_listener) { |
+ observers_->AddObserver(state_listener); |
+} |
+ |
+void ActivityStatus::UnregisterStateListener(StateListener* state_listener) { |
+ observers_->RemoveObserver(state_listener); |
+} |
+ |
+void ActivityStatus::OnActivityStateChange(ActivityState new_state) { |
+ observers_->Notify( |
+ &ActivityStatus::StateListener::OnActivityStateChange, |
+ new_state); |
+} |
+ |
+static void OnActivityStateChange(JNIEnv* env, jclass clazz, int new_state) { |
+ ActivityStatus* activity_status = ActivityStatus::GetInstance(); |
+ ActivityState activity_state = static_cast<ActivityState>(new_state); |
+ activity_status->OnActivityStateChange(activity_state); |
+} |
+ |
+bool ActivityStatus::RegisterBindings(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |
+ |
+} // namespace android |
+} // namespace base |