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

Unified Diff: content/browser/power_save_blocker_android.cc

Issue 2003803002: Remove dependency of power_save_blocker_android on various content bits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@power-save-task-runners
Patch Set: clear Created 4 years, 7 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
« no previous file with comments | « content/browser/media/media_web_contents_observer.cc ('k') | content/browser/power_save_blocker_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 4e4c6a2bca80fed568d52f742dc3b11f88a52827..c85eb49c85604fa9956319403bfc30bbd70ba54c 100644
--- a/content/browser/power_save_blocker_android.cc
+++ b/content/browser/power_save_blocker_android.cc
@@ -3,13 +3,11 @@
// found in the LICENSE file.
#include "base/android/jni_android.h"
+#include "base/bind.h"
+#include "base/location.h"
#include "base/logging.h"
#include "base/macros.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/web_contents_observer.h"
#include "jni/PowerSaveBlocker_jni.h"
#include "ui/android/view_android.h"
@@ -18,21 +16,22 @@ namespace content {
using base::android::AttachCurrentThread;
class PowerSaveBlockerImpl::Delegate
- : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate>,
- public WebContentsObserver {
+ : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> {
public:
- Delegate(WebContents* web_contents,
+ Delegate(ui::ViewAndroid* view_android,
scoped_refptr<base::SequencedTaskRunner> ui_task_runner);
// Does the actual work to apply or remove the desired power save block.
void ApplyBlock();
void RemoveBlock();
+ void ClearView() { view_android_ = nullptr; }
+
private:
friend class base::RefCountedThreadSafe<Delegate>;
- ~Delegate() override;
+ ~Delegate();
- base::android::ScopedJavaLocalRef<jobject> GetContentViewCore();
+ ui::ViewAndroid* view_android_;
base::android::ScopedJavaGlobalRef<jobject> java_power_save_blocker_;
@@ -42,9 +41,9 @@ class PowerSaveBlockerImpl::Delegate
};
PowerSaveBlockerImpl::Delegate::Delegate(
- WebContents* web_contents,
+ ui::ViewAndroid* view_android,
scoped_refptr<base::SequencedTaskRunner> ui_task_runner)
- : WebContentsObserver(web_contents), ui_task_runner_(ui_task_runner) {
+ : view_android_(view_android), ui_task_runner_(ui_task_runner) {
JNIEnv* env = AttachCurrentThread();
java_power_save_blocker_.Reset(Java_PowerSaveBlocker_create(env));
}
@@ -54,41 +53,23 @@ PowerSaveBlockerImpl::Delegate::~Delegate() {
void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
- 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();
- Java_PowerSaveBlocker_applyBlock(env, obj.obj(),
- java_content_view_core.obj());
+ if (view_android_ && !view_android_->GetViewAndroidDelegate().is_null()) {
boliu 2016/06/01 21:37:07 the is_null check isn't actually "safe". in theory
scottmg 2016/06/01 21:44:42 Thanks, removed.
+ Java_PowerSaveBlocker_applyBlock(
+ env, obj.obj(), view_android_->GetViewAndroidDelegate().obj());
+ }
}
void PowerSaveBlockerImpl::Delegate::RemoveBlock() {
DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
- 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();
- 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();
+ if (view_android_ && !view_android_->GetViewAndroidDelegate().is_null()) {
+ Java_PowerSaveBlocker_removeBlock(
+ env, obj.obj(), view_android_->GetViewAndroidDelegate().obj());
+ }
}
PowerSaveBlockerImpl::PowerSaveBlockerImpl(
@@ -109,15 +90,21 @@ PowerSaveBlockerImpl::~PowerSaveBlockerImpl() {
}
}
-void PowerSaveBlockerImpl::InitDisplaySleepBlocker(WebContents* web_contents) {
+void PowerSaveBlockerImpl::InitDisplaySleepBlocker(
+ ui::ViewAndroid* view_android) {
DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
- if (!web_contents)
+ if (!view_android)
return;
- delegate_ = new Delegate(web_contents, ui_task_runner_);
+ delegate_ = new Delegate(view_android, ui_task_runner_);
delegate_->ApplyBlock();
}
+void PowerSaveBlockerImpl::ClearViewForSleepBlocker() {
+ delegate_->RemoveBlock();
+ delegate_->ClearView();
+}
+
bool RegisterPowerSaveBlocker(JNIEnv* env) {
return RegisterNativesImpl(env);
}
« no previous file with comments | « content/browser/media/media_web_contents_observer.cc ('k') | content/browser/power_save_blocker_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698