 Chromium Code Reviews
 Chromium Code Reviews 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
    
  
    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| 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..e5cb362ac1a310ab7fd080499af2378f3bd200eb 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" | 
| 
boliu
2016/05/31 17:23:43
is this needed?
 
ncarter (slow)
2016/05/31 17:43:08
yes, for FROM_HERE. It was missing.
 | 
| #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,10 +16,9 @@ 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. | 
| @@ -30,9 +27,9 @@ class PowerSaveBlockerImpl::Delegate | 
| 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 +39,10 @@ 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 +52,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()); | 
| + ScopedJavaLocalRef<jobject> view_delegate = | 
| + view_android_->GetViewAndroidDelegate(); | 
| + if (view_delegate.obj()) | 
| + Java_PowerSaveBlocker_applyBlock(env, obj.obj(), view_delegate.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(); | 
| + ScopedJavaLocalRef<jobject> view_delegate = | 
| + view_android_->GetViewAndroidDelegate(); | 
| + if (view_delegate.obj()) | 
| + Java_PowerSaveBlocker_removeBlock(env, obj.obj(), view_delegate.obj()); | 
| } | 
| PowerSaveBlockerImpl::PowerSaveBlockerImpl( | 
| @@ -109,12 +89,13 @@ 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(); | 
| } |