1ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos/* 2c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * Copyright (C) 2017 The Android Open Source Project 3ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * 4ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License"); 5ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * you may not use this file except in compliance with the License. 6ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * You may obtain a copy of the License at 7ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * 8ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * http://www.apache.org/licenses/LICENSE-2.0 9ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * 10ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * Unless required by applicable law or agreed to in writing, software 11ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS, 12ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos * See the License for the specific language governing permissions and 14c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * limitations under the License 15ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos */ 16ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 17c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roospackage com.android.systemui.util.wakelock; 18ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 19ff2c4563cdee60576847e161678549bc501e8d84Adrian Roosimport com.android.internal.util.Preconditions; 20ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 21c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roospublic class WakeLockFake implements WakeLock { 22ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 23ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos private int mAcquired = 0; 24ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 25ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos @Override 26ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos public void acquire() { 27ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos mAcquired++; 28ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos } 29ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 30ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos @Override 31ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos public void release() { 32ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos Preconditions.checkState(mAcquired > 0); 33ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos mAcquired--; 34ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos } 35ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 36ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos @Override 37ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos public Runnable wrap(Runnable runnable) { 38ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos acquire(); 39ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos return () -> { 40ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos try { 41ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos runnable.run(); 42ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos } finally { 43ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos release(); 44ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos } 45ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos }; 46ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos } 47ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos 48ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos public boolean isHeld() { 49ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos return mAcquired > 0; 50ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos } 51ff2c4563cdee60576847e161678549bc501e8d84Adrian Roos} 52