Chromium Code Reviews| 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 |