1/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.internal.policy.impl.keyguard;
18
19import android.content.Context;
20import android.os.Bundle;
21import android.os.IBinder;
22import android.os.RemoteException;
23import android.util.Slog;
24
25import com.android.internal.policy.IKeyguardExitCallback;
26import com.android.internal.policy.IKeyguardService;
27import com.android.internal.policy.IKeyguardShowCallback;
28import com.android.internal.policy.IKeyguardStateCallback;
29
30/**
31 * A wrapper class for KeyguardService.  It implements IKeyguardService to ensure the interface
32 * remains consistent.
33 *
34 */
35public class KeyguardServiceWrapper implements IKeyguardService {
36    private KeyguardStateMonitor mKeyguardStateMonitor;
37    private IKeyguardService mService;
38    private String TAG = "KeyguardServiceWrapper";
39
40    public KeyguardServiceWrapper(Context context, IKeyguardService service) {
41        mService = service;
42        mKeyguardStateMonitor = new KeyguardStateMonitor(context, service);
43    }
44
45    @Override // Binder interface
46    public void verifyUnlock(IKeyguardExitCallback callback) {
47        try {
48            mService.verifyUnlock(callback);
49        } catch (RemoteException e) {
50            Slog.w(TAG , "Remote Exception", e);
51        }
52    }
53
54    @Override // Binder interface
55    public void keyguardDone(boolean authenticated, boolean wakeup) {
56        try {
57            mService.keyguardDone(authenticated, wakeup);
58        } catch (RemoteException e) {
59            Slog.w(TAG , "Remote Exception", e);
60        }
61    }
62
63    @Override // Binder interface
64    public void setOccluded(boolean isOccluded) {
65        try {
66            mService.setOccluded(isOccluded);
67        } catch (RemoteException e) {
68            Slog.w(TAG , "Remote Exception", e);
69        }
70    }
71
72    @Override
73    public void addStateMonitorCallback(IKeyguardStateCallback callback) {
74        try {
75            mService.addStateMonitorCallback(callback);
76        } catch (RemoteException e) {
77            Slog.w(TAG , "Remote Exception", e);
78        }
79    }
80
81    @Override // Binder interface
82    public void dismiss() {
83        try {
84            mService.dismiss();
85        } catch (RemoteException e) {
86            Slog.w(TAG , "Remote Exception", e);
87        }
88    }
89
90    @Override // Binder interface
91    public void onDreamingStarted() {
92        try {
93            mService.onDreamingStarted();
94        } catch (RemoteException e) {
95            Slog.w(TAG , "Remote Exception", e);
96        }
97    }
98
99    @Override // Binder interface
100    public void onDreamingStopped() {
101        try {
102            mService.onDreamingStopped();
103        } catch (RemoteException e) {
104            Slog.w(TAG , "Remote Exception", e);
105        }
106    }
107
108    @Override // Binder interface
109    public void onScreenTurnedOff(int reason) {
110        try {
111            mService.onScreenTurnedOff(reason);
112        } catch (RemoteException e) {
113            Slog.w(TAG , "Remote Exception", e);
114        }
115    }
116
117    @Override // Binder interface
118    public void onScreenTurnedOn(IKeyguardShowCallback result) {
119        try {
120            mService.onScreenTurnedOn(result);
121        } catch (RemoteException e) {
122            Slog.w(TAG , "Remote Exception", e);
123        }
124    }
125
126    @Override // Binder interface
127    public void setKeyguardEnabled(boolean enabled) {
128        try {
129            mService.setKeyguardEnabled(enabled);
130        } catch (RemoteException e) {
131            Slog.w(TAG , "Remote Exception", e);
132        }
133    }
134
135    @Override // Binder interface
136    public void onSystemReady() {
137        try {
138            mService.onSystemReady();
139        } catch (RemoteException e) {
140            Slog.w(TAG , "Remote Exception", e);
141        }
142    }
143
144    @Override // Binder interface
145    public void doKeyguardTimeout(Bundle options) {
146        try {
147            mService.doKeyguardTimeout(options);
148        } catch (RemoteException e) {
149            Slog.w(TAG , "Remote Exception", e);
150        }
151    }
152
153    @Override // Binder interface
154    public void setCurrentUser(int userId) {
155        mKeyguardStateMonitor.setCurrentUser(userId);
156        try {
157            mService.setCurrentUser(userId);
158        } catch (RemoteException e) {
159            Slog.w(TAG , "Remote Exception", e);
160        }
161    }
162
163    @Override // Binder interface
164    public void onBootCompleted() {
165        try {
166            mService.onBootCompleted();
167        } catch (RemoteException e) {
168            Slog.w(TAG , "Remote Exception", e);
169        }
170    }
171
172    @Override // Binder interface
173    public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
174        try {
175            mService.startKeyguardExitAnimation(startTime, fadeoutDuration);
176        } catch (RemoteException e) {
177            Slog.w(TAG , "Remote Exception", e);
178        }
179    }
180
181    @Override // Binder interface
182    public void onActivityDrawn() {
183        try {
184            mService.onActivityDrawn();
185        } catch (RemoteException e) {
186            Slog.w(TAG , "Remote Exception", e);
187        }
188    }
189
190    @Override // Binder interface
191    public IBinder asBinder() {
192        return mService.asBinder();
193    }
194
195    public boolean isShowing() {
196        return mKeyguardStateMonitor.isShowing();
197    }
198
199    public boolean isSecure() {
200        return mKeyguardStateMonitor.isSecure();
201    }
202
203    public boolean isInputRestricted() {
204        return mKeyguardStateMonitor.isInputRestricted();
205    }
206}