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