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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/power_save_blocker_android.cc
diff --git a/content/browser/power_save_blocker_android.cc b/content/browser/power_save_blocker_android.cc
index 1e91625e19c295a5544f1adfe7f0cffdbac33b16..20ea63ccc58e1c53a10bc036aff8f9008a3e50cc 100644
--- a/content/browser/power_save_blocker_android.cc
+++ b/content/browser/power_save_blocker_android.cc
@@ -2,30 +2,26 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/power_save_blocker_android.h"
-
#include "base/android/jni_android.h"
-#include "base/android/jni_weak_ref.h"
#include "base/logging.h"
+#include "content/browser/android/content_view_core_impl.h"
#include "content/browser/power_save_blocker_impl.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/android/content_view_core.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/web_contents_observer.h"
#include "jni/PowerSaveBlocker_jni.h"
#include "ui/android/view_android.h"
-using base::android::AttachCurrentThread;
-using base::android::ScopedJavaLocalRef;
-using gfx::NativeView;
-
namespace content {
+using base::android::AttachCurrentThread;
+
class PowerSaveBlockerImpl::Delegate
- : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> {
+ : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate>,
+ public WebContentsObserver {
public:
- explicit Delegate(NativeView view_android) {
- j_view_android_ = JavaObjectWeakGlobalRef(
- AttachCurrentThread(), view_android->GetJavaObject().obj());
- }
+ explicit Delegate(WebContents* web_contents);
// Does the actual work to apply or remove the desired power save block.
void ApplyBlock();
@@ -33,27 +29,61 @@ class PowerSaveBlockerImpl::Delegate
private:
friend class base::RefCountedThreadSafe<Delegate>;
- ~Delegate() {}
+ ~Delegate() override;
- JavaObjectWeakGlobalRef j_view_android_;
+ base::android::ScopedJavaLocalRef<jobject> GetContentViewCore();
+
+ base::android::ScopedJavaGlobalRef<jobject> java_power_save_blocker_;
DISALLOW_COPY_AND_ASSIGN(Delegate);
};
+PowerSaveBlockerImpl::Delegate::Delegate(WebContents* web_contents)
+ : WebContentsObserver(web_contents) {
+ JNIEnv* env = AttachCurrentThread();
+ java_power_save_blocker_.Reset(Java_PowerSaveBlocker_create(env));
+}
+
+PowerSaveBlockerImpl::Delegate::~Delegate() {
+}
+
void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ base::android::ScopedJavaLocalRef<jobject> java_content_view_core =
+ GetContentViewCore();
+ if (java_content_view_core.is_null())
+ return;
+
+ ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_);
JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> j_object = j_view_android_.get(env);
- if (j_object.obj())
- Java_PowerSaveBlocker_applyBlock(env, j_object.obj());
+ Java_PowerSaveBlocker_applyBlock(env, obj.obj(),
+ java_content_view_core.obj());
}
void PowerSaveBlockerImpl::Delegate::RemoveBlock() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ base::android::ScopedJavaLocalRef<jobject> java_content_view_core =
+ GetContentViewCore();
+ if (java_content_view_core.is_null())
+ return;
+
+ ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_);
JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> j_object = j_view_android_.get(env);
- if (j_object.obj())
- Java_PowerSaveBlocker_removeBlock(env, j_object.obj());
+ Java_PowerSaveBlocker_removeBlock(env, obj.obj(),
+ java_content_view_core.obj());
+}
+
+base::android::ScopedJavaLocalRef<jobject>
+PowerSaveBlockerImpl::Delegate::GetContentViewCore() {
+ if (!web_contents())
+ return base::android::ScopedJavaLocalRef<jobject>();
+
+ ContentViewCoreImpl* content_view_core_impl =
+ ContentViewCoreImpl::FromWebContents(web_contents());
+ if (!content_view_core_impl)
+ return base::android::ScopedJavaLocalRef<jobject>();
+
+ return content_view_core_impl->GetJavaObject();
}
PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type,
@@ -70,15 +100,13 @@ PowerSaveBlockerImpl::~PowerSaveBlockerImpl() {
}
}
-void PowerSaveBlockerImpl::InitDisplaySleepBlocker(NativeView view_android) {
- if (!view_android)
+void PowerSaveBlockerImpl::InitDisplaySleepBlocker(WebContents* web_contents) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ if (!web_contents)
return;
- delegate_ = new Delegate(view_android);
- // This may be called on any thread.
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&Delegate::ApplyBlock, delegate_));
+ delegate_ = new Delegate(web_contents);
+ delegate_->ApplyBlock();
}
bool RegisterPowerSaveBlocker(JNIEnv* env) {

Powered by Google App Engine
This is Rietveld 408576698