OLD | NEW |
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 "device/power_save_blocker/power_save_blocker.h" | 5 #include "device/power_save_blocker/power_save_blocker.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 PowerSaveBlocker::Delegate::Delegate( | 41 PowerSaveBlocker::Delegate::Delegate( |
42 scoped_refptr<base::SequencedTaskRunner> ui_task_runner) | 42 scoped_refptr<base::SequencedTaskRunner> ui_task_runner) |
43 : ui_task_runner_(ui_task_runner) { | 43 : ui_task_runner_(ui_task_runner) { |
44 JNIEnv* env = AttachCurrentThread(); | 44 JNIEnv* env = AttachCurrentThread(); |
45 java_power_save_blocker_.Reset(Java_PowerSaveBlocker_create(env)); | 45 java_power_save_blocker_.Reset(Java_PowerSaveBlocker_create(env)); |
46 } | 46 } |
47 | 47 |
48 PowerSaveBlocker::Delegate::~Delegate() {} | 48 PowerSaveBlocker::Delegate::~Delegate() {} |
49 | 49 |
50 void PowerSaveBlocker::Delegate::ApplyBlock(ui::ViewAndroid* view_android) { | 50 void PowerSaveBlocker::Delegate::ApplyBlock(ui::ViewAndroid* view_android) { |
51 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); | 51 DCHECK(ui_task_runner_->RunsTasksInCurrentSequence()); |
52 DCHECK(view_android); | 52 DCHECK(view_android); |
53 | 53 |
54 ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_); | 54 ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_); |
55 ScopedJavaLocalRef<jobject> container_view(view_android->GetContainerView()); | 55 ScopedJavaLocalRef<jobject> container_view(view_android->GetContainerView()); |
56 if (container_view.is_null()) | 56 if (container_view.is_null()) |
57 return; | 57 return; |
58 | 58 |
59 Java_PowerSaveBlocker_applyBlock(AttachCurrentThread(), obj, container_view); | 59 Java_PowerSaveBlocker_applyBlock(AttachCurrentThread(), obj, container_view); |
60 } | 60 } |
61 | 61 |
62 void PowerSaveBlocker::Delegate::RemoveBlock() { | 62 void PowerSaveBlocker::Delegate::RemoveBlock() { |
63 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); | 63 DCHECK(ui_task_runner_->RunsTasksInCurrentSequence()); |
64 | 64 |
65 ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_); | 65 ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_); |
66 Java_PowerSaveBlocker_removeBlock(AttachCurrentThread(), obj); | 66 Java_PowerSaveBlocker_removeBlock(AttachCurrentThread(), obj); |
67 } | 67 } |
68 | 68 |
69 PowerSaveBlocker::PowerSaveBlocker( | 69 PowerSaveBlocker::PowerSaveBlocker( |
70 PowerSaveBlockerType type, | 70 PowerSaveBlockerType type, |
71 Reason reason, | 71 Reason reason, |
72 const std::string& description, | 72 const std::string& description, |
73 scoped_refptr<base::SequencedTaskRunner> ui_task_runner, | 73 scoped_refptr<base::SequencedTaskRunner> ui_task_runner, |
74 scoped_refptr<base::SingleThreadTaskRunner> blocking_task_runner) | 74 scoped_refptr<base::SingleThreadTaskRunner> blocking_task_runner) |
75 : ui_task_runner_(ui_task_runner), | 75 : ui_task_runner_(ui_task_runner), |
76 blocking_task_runner_(blocking_task_runner) { | 76 blocking_task_runner_(blocking_task_runner) { |
77 // Don't support kPowerSaveBlockPreventAppSuspension | 77 // Don't support kPowerSaveBlockPreventAppSuspension |
78 } | 78 } |
79 | 79 |
80 PowerSaveBlocker::~PowerSaveBlocker() { | 80 PowerSaveBlocker::~PowerSaveBlocker() { |
81 if (delegate_.get()) { | 81 if (delegate_.get()) { |
82 ui_task_runner_->PostTask(FROM_HERE, | 82 ui_task_runner_->PostTask(FROM_HERE, |
83 base::Bind(&Delegate::RemoveBlock, delegate_)); | 83 base::Bind(&Delegate::RemoveBlock, delegate_)); |
84 } | 84 } |
85 } | 85 } |
86 | 86 |
87 void PowerSaveBlocker::InitDisplaySleepBlocker(ui::ViewAndroid* view_android) { | 87 void PowerSaveBlocker::InitDisplaySleepBlocker(ui::ViewAndroid* view_android) { |
88 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); | 88 DCHECK(ui_task_runner_->RunsTasksInCurrentSequence()); |
89 DCHECK(view_android); | 89 DCHECK(view_android); |
90 | 90 |
91 delegate_ = new Delegate(ui_task_runner_); | 91 delegate_ = new Delegate(ui_task_runner_); |
92 delegate_->ApplyBlock(view_android); | 92 delegate_->ApplyBlock(view_android); |
93 } | 93 } |
94 | 94 |
95 } // namespace device | 95 } // namespace device |
OLD | NEW |