OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2013 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 "base/android/activity_status.h" | |
6 | |
7 #include <jni.h> | |
8 | |
9 #include "base/memory/singleton.h" | |
10 #include "jni/ActivityStatus_jni.h" | |
11 | |
12 namespace base { | |
13 namespace android { | |
14 | |
15 ActivityStatus::Listener::Listener( | |
16 const ActivityStatus::StateChangeCallback& callback) | |
17 : callback_(callback) { | |
joth
2013/04/26 20:29:10
nit: indent
digit1
2013/04/29 12:22:10
I've applied clang-format to the new sources.
| |
18 ActivityStatus::GetInstance()->RegisterListener(this); | |
19 } | |
20 | |
21 ActivityStatus::Listener::~Listener() { | |
22 ActivityStatus::GetInstance()->UnregisterListener(this); | |
23 } | |
24 | |
25 void ActivityStatus::Listener::Notify(ActivityState state) { | |
26 callback_.Run(state); | |
27 } | |
28 | |
29 // static | |
30 ActivityStatus* ActivityStatus::GetInstance() { | |
31 return Singleton | |
32 <ActivityStatus, LeakySingletonTraits<ActivityStatus> >::get(); | |
33 } | |
34 | |
35 static void OnActivityStateChange( | |
36 JNIEnv* env, jclass clazz, int new_state) { | |
37 ActivityStatus* activity_status = ActivityStatus::GetInstance(); | |
38 ActivityState activity_state = static_cast<ActivityState>(new_state); | |
39 activity_status->OnActivityStateChange(activity_state); | |
40 } | |
41 | |
42 bool ActivityStatus::RegisterBindings(JNIEnv* env) { | |
43 return RegisterNativesImpl(env); | |
44 } | |
45 | |
46 ActivityStatus::ActivityStatus() | |
47 : observers_(new ObserverListThreadSafe<Listener>()) { | |
48 Java_ActivityStatus_registerThreadSafeNativeStateListener( | |
49 base::android::AttachCurrentThread()); | |
50 } | |
51 | |
52 ActivityStatus::~ActivityStatus() { | |
53 } | |
54 | |
55 void ActivityStatus::RegisterListener(Listener* listener) { | |
56 observers_->AddObserver(listener); | |
57 } | |
58 | |
59 void ActivityStatus::UnregisterListener(Listener* listener) { | |
60 observers_->RemoveObserver(listener); | |
61 } | |
62 | |
63 void ActivityStatus::OnActivityStateChange(ActivityState new_state) { | |
64 observers_->Notify(&ActivityStatus::Listener::Notify, new_state); | |
65 } | |
66 | |
67 } // namespace android | |
68 } // namespace base | |
OLD | NEW |