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

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

Issue 1041823004: Remove java ViewAndroid class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: java PowerSaveBlocker Created 5 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
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"
6
7 #include "base/android/jni_android.h" 5 #include "base/android/jni_android.h"
8 #include "base/android/jni_weak_ref.h"
9 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "content/browser/android/content_view_core_impl.h"
10 #include "content/browser/power_save_blocker_impl.h" 8 #include "content/browser/power_save_blocker_impl.h"
9 #include "content/browser/web_contents/web_contents_impl.h"
11 #include "content/public/browser/android/content_view_core.h" 10 #include "content/public/browser/android/content_view_core.h"
12 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
12 #include "content/public/browser/web_contents_observer.h"
13 #include "jni/PowerSaveBlocker_jni.h" 13 #include "jni/PowerSaveBlocker_jni.h"
14 #include "ui/android/view_android.h" 14 #include "ui/android/view_android.h"
15 15
16 using base::android::AttachCurrentThread;
17 using base::android::ScopedJavaLocalRef;
18 using gfx::NativeView;
19
20 namespace content { 16 namespace content {
21 17
18 using base::android::AttachCurrentThread;
19
22 class PowerSaveBlockerImpl::Delegate 20 class PowerSaveBlockerImpl::Delegate
23 : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> { 21 : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate>,
22 public WebContentsObserver {
24 public: 23 public:
25 explicit Delegate(NativeView view_android) { 24 explicit Delegate(WebContents* web_contents);
26 j_view_android_ = JavaObjectWeakGlobalRef(
27 AttachCurrentThread(), view_android->GetJavaObject().obj());
28 }
29 25
30 // Does the actual work to apply or remove the desired power save block. 26 // Does the actual work to apply or remove the desired power save block.
31 void ApplyBlock(); 27 void ApplyBlock();
32 void RemoveBlock(); 28 void RemoveBlock();
33 29
34 private: 30 private:
35 friend class base::RefCountedThreadSafe<Delegate>; 31 friend class base::RefCountedThreadSafe<Delegate>;
36 ~Delegate() {} 32 ~Delegate() override;
37 33
38 JavaObjectWeakGlobalRef j_view_android_; 34 base::android::ScopedJavaLocalRef<jobject> GetContentViewCore();
35
36 base::android::ScopedJavaGlobalRef<jobject> java_power_save_blocker_;
39 37
40 DISALLOW_COPY_AND_ASSIGN(Delegate); 38 DISALLOW_COPY_AND_ASSIGN(Delegate);
41 }; 39 };
42 40
41 PowerSaveBlockerImpl::Delegate::Delegate(WebContents* web_contents)
42 : WebContentsObserver(web_contents) {
43 JNIEnv* env = AttachCurrentThread();
44 java_power_save_blocker_.Reset(Java_PowerSaveBlocker_create(env));
45 }
46
47 PowerSaveBlockerImpl::Delegate::~Delegate() {
48 }
49
43 void PowerSaveBlockerImpl::Delegate::ApplyBlock() { 50 void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
44 DCHECK_CURRENTLY_ON(BrowserThread::UI); 51 DCHECK_CURRENTLY_ON(BrowserThread::UI);
52 base::android::ScopedJavaLocalRef<jobject> java_content_view_core =
53 GetContentViewCore();
54 if (java_content_view_core.is_null())
55 return;
56
57 ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_);
45 JNIEnv* env = AttachCurrentThread(); 58 JNIEnv* env = AttachCurrentThread();
46 ScopedJavaLocalRef<jobject> j_object = j_view_android_.get(env); 59 Java_PowerSaveBlocker_applyBlock(env, obj.obj(),
47 if (j_object.obj()) 60 java_content_view_core.obj());
48 Java_PowerSaveBlocker_applyBlock(env, j_object.obj());
49 } 61 }
50 62
51 void PowerSaveBlockerImpl::Delegate::RemoveBlock() { 63 void PowerSaveBlockerImpl::Delegate::RemoveBlock() {
52 DCHECK_CURRENTLY_ON(BrowserThread::UI); 64 DCHECK_CURRENTLY_ON(BrowserThread::UI);
65 base::android::ScopedJavaLocalRef<jobject> java_content_view_core =
66 GetContentViewCore();
67 if (java_content_view_core.is_null())
68 return;
69
70 ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_);
53 JNIEnv* env = AttachCurrentThread(); 71 JNIEnv* env = AttachCurrentThread();
54 ScopedJavaLocalRef<jobject> j_object = j_view_android_.get(env); 72 Java_PowerSaveBlocker_removeBlock(env, obj.obj(),
55 if (j_object.obj()) 73 java_content_view_core.obj());
56 Java_PowerSaveBlocker_removeBlock(env, j_object.obj()); 74 }
75
76 base::android::ScopedJavaLocalRef<jobject>
77 PowerSaveBlockerImpl::Delegate::GetContentViewCore() {
78 if (!web_contents())
79 return base::android::ScopedJavaLocalRef<jobject>();
80
81 ContentViewCoreImpl* content_view_core_impl =
82 ContentViewCoreImpl::FromWebContents(web_contents());
83 if (!content_view_core_impl)
84 return base::android::ScopedJavaLocalRef<jobject>();
85
86 return content_view_core_impl->GetJavaObject();
57 } 87 }
58 88
59 PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type, 89 PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type,
60 Reason reason, 90 Reason reason,
61 const std::string& description) { 91 const std::string& description) {
62 // Don't support kPowerSaveBlockPreventAppSuspension 92 // Don't support kPowerSaveBlockPreventAppSuspension
63 } 93 }
64 94
65 PowerSaveBlockerImpl::~PowerSaveBlockerImpl() { 95 PowerSaveBlockerImpl::~PowerSaveBlockerImpl() {
66 if (delegate_.get()) { 96 if (delegate_.get()) {
67 BrowserThread::PostTask( 97 BrowserThread::PostTask(
68 BrowserThread::UI, FROM_HERE, 98 BrowserThread::UI, FROM_HERE,
69 base::Bind(&Delegate::RemoveBlock, delegate_)); 99 base::Bind(&Delegate::RemoveBlock, delegate_));
70 } 100 }
71 } 101 }
72 102
73 void PowerSaveBlockerImpl::InitDisplaySleepBlocker(NativeView view_android) { 103 void PowerSaveBlockerImpl::InitDisplaySleepBlocker(WebContents* web_contents) {
74 if (!view_android) 104 DCHECK_CURRENTLY_ON(BrowserThread::UI);
105 if (!web_contents)
75 return; 106 return;
76 107
77 delegate_ = new Delegate(view_android); 108 delegate_ = new Delegate(web_contents);
78 // This may be called on any thread. 109 delegate_->ApplyBlock();
79 BrowserThread::PostTask(
80 BrowserThread::UI, FROM_HERE,
81 base::Bind(&Delegate::ApplyBlock, delegate_));
82 } 110 }
83 111
84 bool RegisterPowerSaveBlocker(JNIEnv* env) { 112 bool RegisterPowerSaveBlocker(JNIEnv* env) {
85 return RegisterNativesImpl(env); 113 return RegisterNativesImpl(env);
86 } 114 }
87 115
88 } // namespace content 116 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698