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

Side by Side Diff: content/browser/power_save_blocker_android.cc

Issue 20125004: Use ContentViewCore's container view to keep screen on (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 7 years, 4 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
« no previous file with comments | « no previous file | content/browser/power_save_blocker_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/power_save_blocker_android.h" 5 #include "content/browser/power_save_blocker_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_helper.h"
8 #include "base/logging.h" 9 #include "base/logging.h"
9 #include "content/browser/power_save_blocker_impl.h" 10 #include "content/browser/power_save_blocker_impl.h"
11 #include "content/public/browser/android/content_view_core.h"
10 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
11 #include "jni/PowerSaveBlocker_jni.h" 13 #include "jni/PowerSaveBlocker_jni.h"
12 #include "ui/android/window_android.h" 14 #include "ui/android/view_android.h"
13 15
14 using base::android::AttachCurrentThread; 16 using base::android::AttachCurrentThread;
15 using base::android::ScopedJavaLocalRef; 17 using base::android::ScopedJavaLocalRef;
18 using gfx::NativeView;
16 19
17 namespace content { 20 namespace content {
18 21
19 class PowerSaveBlockerImpl::Delegate 22 class PowerSaveBlockerImpl::Delegate
20 : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> { 23 : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> {
21 public: 24 public:
22 explicit Delegate(gfx::NativeWindow native_window) { 25 explicit Delegate(NativeView view_android) {
23 j_window_android_ = JavaObjectWeakGlobalRef(AttachCurrentThread(), 26 j_view_android_ = JavaObjectWeakGlobalRef(
24 static_cast<ui::WindowAndroid*>(native_window)->GetJavaObject().obj()); 27 AttachCurrentThread(), view_android->GetJavaObject().obj());
25 } 28 }
26 29
27 // Does the actual work to apply or remove the desired power save block. 30 // Does the actual work to apply or remove the desired power save block.
28 void ApplyBlock(); 31 void ApplyBlock();
29 void RemoveBlock(); 32 void RemoveBlock();
30 33
31 private: 34 private:
32 friend class base::RefCountedThreadSafe<Delegate>; 35 friend class base::RefCountedThreadSafe<Delegate>;
33 ~Delegate() {} 36 ~Delegate() {}
34 37
35 JavaObjectWeakGlobalRef j_window_android_; 38 JavaObjectWeakGlobalRef j_view_android_;
36 39
37 DISALLOW_COPY_AND_ASSIGN(Delegate); 40 DISALLOW_COPY_AND_ASSIGN(Delegate);
38 }; 41 };
39 42
40 void PowerSaveBlockerImpl::Delegate::ApplyBlock() { 43 void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
41 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
42 JNIEnv* env = AttachCurrentThread(); 45 JNIEnv* env = AttachCurrentThread();
43 ScopedJavaLocalRef<jobject> j_object = j_window_android_.get(env); 46 ScopedJavaLocalRef<jobject> j_object = j_view_android_.get(env);
44 if (j_object.obj()) 47 if (j_object.obj())
45 Java_PowerSaveBlocker_applyBlock(env, j_object.obj()); 48 Java_PowerSaveBlocker_applyBlock(env, j_object.obj());
46 } 49 }
47 50
48 void PowerSaveBlockerImpl::Delegate::RemoveBlock() { 51 void PowerSaveBlockerImpl::Delegate::RemoveBlock() {
49 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 52 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
50 JNIEnv* env = AttachCurrentThread(); 53 JNIEnv* env = AttachCurrentThread();
51 ScopedJavaLocalRef<jobject> j_object = j_window_android_.get(env); 54 ScopedJavaLocalRef<jobject> j_object = j_view_android_.get(env);
52 if (j_object.obj()) 55 if (j_object.obj())
53 Java_PowerSaveBlocker_removeBlock(env, j_object.obj()); 56 Java_PowerSaveBlocker_removeBlock(env, j_object.obj());
54 } 57 }
55 58
56 PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type, 59 PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type,
57 const std::string& reason) { 60 const std::string& reason) {
58 // Don't support kPowerSaveBlockPreventAppSuspension 61 // Don't support kPowerSaveBlockPreventAppSuspension
59 } 62 }
60 63
61 PowerSaveBlockerImpl::~PowerSaveBlockerImpl() { 64 PowerSaveBlockerImpl::~PowerSaveBlockerImpl() {
62 if (delegate_) { 65 if (delegate_) {
63 BrowserThread::PostTask( 66 BrowserThread::PostTask(
64 BrowserThread::UI, FROM_HERE, 67 BrowserThread::UI, FROM_HERE,
65 base::Bind(&Delegate::RemoveBlock, delegate_)); 68 base::Bind(&Delegate::RemoveBlock, delegate_));
66 } 69 }
67 } 70 }
68 71
69 void PowerSaveBlockerImpl::InitDisplaySleepBlocker( 72 void PowerSaveBlockerImpl::InitDisplaySleepBlocker(NativeView view_android) {
70 gfx::NativeWindow native_window) { 73 delegate_ = new Delegate(view_android);
71 delegate_ = new Delegate(native_window);
72 // This may be called on any thread. 74 // This may be called on any thread.
73 BrowserThread::PostTask( 75 BrowserThread::PostTask(
74 BrowserThread::UI, FROM_HERE, 76 BrowserThread::UI, FROM_HERE,
75 base::Bind(&Delegate::ApplyBlock, delegate_)); 77 base::Bind(&Delegate::ApplyBlock, delegate_));
76 } 78 }
77 79
78 bool RegisterPowerSaveBlocker(JNIEnv* env) { 80 bool RegisterPowerSaveBlocker(JNIEnv* env) {
79 return RegisterNativesImpl(env); 81 return RegisterNativesImpl(env);
80 } 82 }
81 83
82 } // namespace content 84 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/power_save_blocker_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698