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

Side by Side Diff: base/android/activity_status.cc

Issue 14373019: Add base/android/activity_status.cc (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix bug Created 7 years, 8 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 unified diff | Download patch
OLDNEW
(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"
gavinp 2013/04/26 07:37:53 Not needed, the header already has this.
digit1 2013/04/26 12:32:40 Done.
10 #include "jni/ActivityStatus_jni.h"
11
12 namespace base {
13 namespace android {
14
15 ActivityStatus::StateListener::StateListener() {
16 ActivityStatus::GetInstance()->RegisterStateListener(this);
17 }
18
19 ActivityStatus::StateListener::~StateListener() {
20 ActivityStatus::GetInstance()->UnregisterStateListener(this);
21 }
22
23 // static
24 ActivityStatus* ActivityStatus::GetInstance() {
25 return Singleton
26 <ActivityStatus, LeakySingletonTraits<ActivityStatus> >::get();
27 }
28
29 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.
30 : observers_(new ObserverListThreadSafe<StateListener>()) {
31 Java_ActivityStatus_registerThreadSafeNativeStateListener(
32 base::android::AttachCurrentThread());
33 }
34
35 void ActivityStatus::RegisterStateListener(StateListener* state_listener) {
36 observers_->AddObserver(state_listener);
37 }
38
39 void ActivityStatus::UnregisterStateListener(StateListener* state_listener) {
40 observers_->RemoveObserver(state_listener);
41 }
42
43 void ActivityStatus::OnActivityStateChange(ActivityState new_state) {
44 observers_->Notify(
45 &ActivityStatus::StateListener::OnActivityStateChange,
46 new_state);
47 }
48
49 static void OnActivityStateChange(JNIEnv* env, jclass clazz, int new_state) {
50 ActivityStatus* activity_status = ActivityStatus::GetInstance();
51 ActivityState activity_state = static_cast<ActivityState>(new_state);
52 activity_status->OnActivityStateChange(activity_state);
53 }
54
55 bool ActivityStatus::RegisterBindings(JNIEnv* env) {
56 return RegisterNativesImpl(env);
57 }
58
59 } // namespace android
60 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698