15ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller/*
25ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * Copyright (C) 2013 The Android Open Source Project
35ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller *
45ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * Licensed under the Apache License, Version 2.0 (the "License");
55ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * you may not use this file except in compliance with the License.
65ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * You may obtain a copy of the License at
75ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller *
85ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller *      http://www.apache.org/licenses/LICENSE-2.0
95ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller *
105ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * Unless required by applicable law or agreed to in writing, software
115ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * distributed under the License is distributed on an "AS IS" BASIS,
125ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * See the License for the specific language governing permissions and
145ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * limitations under the License.
155ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller */
165ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
17e51cf7aeb6157017801a802b4c1d74cbf51b7a01Jim Millerpackage com.android.internal.policy.impl.keyguard;
185ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
19ab954546dc49e1070ed8513efbddc8954b529c23Jim Millerimport android.content.Context;
205ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport android.os.Bundle;
215ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport android.os.IBinder;
225ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport android.os.RemoteException;
2325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport android.util.Slog;
245ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
2525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport com.android.internal.policy.IKeyguardExitCallback;
265ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport com.android.internal.policy.IKeyguardService;
27ab954546dc49e1070ed8513efbddc8954b529c23Jim Millerimport com.android.internal.policy.IKeyguardShowCallback;
28ab954546dc49e1070ed8513efbddc8954b529c23Jim Millerimport com.android.internal.policy.IKeyguardStateCallback;
295ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
305ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller/**
315ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * A wrapper class for KeyguardService.  It implements IKeyguardService to ensure the interface
325ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * remains consistent.
335ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller *
345ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller */
355ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerpublic class KeyguardServiceWrapper implements IKeyguardService {
36ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    private KeyguardStateMonitor mKeyguardStateMonitor;
375ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    private IKeyguardService mService;
3825190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    private String TAG = "KeyguardServiceWrapper";
395ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
40ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public KeyguardServiceWrapper(Context context, IKeyguardService service) {
415ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        mService = service;
42ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller        mKeyguardStateMonitor = new KeyguardStateMonitor(context, service);
435ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
445ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
45ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
46ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public void verifyUnlock(IKeyguardExitCallback callback) {
475ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
48ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller            mService.verifyUnlock(callback);
495ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
5025190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
515ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
525ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
535ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
54ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
55ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public void keyguardDone(boolean authenticated, boolean wakeup) {
565ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
57ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller            mService.keyguardDone(authenticated, wakeup);
585ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
5925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
605ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
615ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
625ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
63ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
64ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public void setOccluded(boolean isOccluded) {
655ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
66ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller            mService.setOccluded(isOccluded);
675ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
6825190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
695ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
705ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
715ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
72ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override
73ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public void addStateMonitorCallback(IKeyguardStateCallback callback) {
745ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
75ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller            mService.addStateMonitorCallback(callback);
765ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
7725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
785ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
795ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
805ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
81ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
825ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void dismiss() {
835ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
845ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.dismiss();
855ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
8625190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
875ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
885ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
895ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
90ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
915ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onDreamingStarted() {
925ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
935ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onDreamingStarted();
945ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
9525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
965ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
975ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
985ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
99ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1005ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onDreamingStopped() {
1015ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1025ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onDreamingStopped();
1035ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
10425190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1055ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1065ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1075ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
108ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1095ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onScreenTurnedOff(int reason) {
1105ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1115ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onScreenTurnedOff(reason);
1125ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
11325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1145ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1155ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1165ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
117ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
11825190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    public void onScreenTurnedOn(IKeyguardShowCallback result) {
1195ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1205ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onScreenTurnedOn(result);
1215ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
12225190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1235ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1245ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1255ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
126ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1275ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setKeyguardEnabled(boolean enabled) {
1285ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1295ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setKeyguardEnabled(enabled);
1305ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
13125190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1325ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1335ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1345ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
135ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1365ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onSystemReady() {
1375ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1385ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onSystemReady();
1395ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
14025190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1415ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1425ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1435ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
144ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1455ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void doKeyguardTimeout(Bundle options) {
1465ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1475ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.doKeyguardTimeout(options);
1485ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
14925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1505ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1515ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1525ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
153ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1545ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setCurrentUser(int userId) {
155ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller        mKeyguardStateMonitor.setCurrentUser(userId);
1565ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1575ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setCurrentUser(userId);
1585ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
15925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1605ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1615ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1625ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
163ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
164e5f910a667088ab63e017d5851f0956c77b823daJim Miller    public void onBootCompleted() {
165e5f910a667088ab63e017d5851f0956c77b823daJim Miller        try {
166e5f910a667088ab63e017d5851f0956c77b823daJim Miller            mService.onBootCompleted();
167e5f910a667088ab63e017d5851f0956c77b823daJim Miller        } catch (RemoteException e) {
168e5f910a667088ab63e017d5851f0956c77b823daJim Miller            Slog.w(TAG , "Remote Exception", e);
169e5f910a667088ab63e017d5851f0956c77b823daJim Miller        }
170e5f910a667088ab63e017d5851f0956c77b823daJim Miller    }
171e5f910a667088ab63e017d5851f0956c77b823daJim Miller
172ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
173e29b2dbc762bfa66093d76f5a65f55328d8753c9Jorim Jaggi    public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
1740d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi        try {
175e29b2dbc762bfa66093d76f5a65f55328d8753c9Jorim Jaggi            mService.startKeyguardExitAnimation(startTime, fadeoutDuration);
1760d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi        } catch (RemoteException e) {
1770d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi            Slog.w(TAG , "Remote Exception", e);
1780d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi        }
1790d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi    }
1800d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi
181ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
1828de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi    public void onActivityDrawn() {
1838de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi        try {
1848de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi            mService.onActivityDrawn();
1858de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi        } catch (RemoteException e) {
1868de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi            Slog.w(TAG , "Remote Exception", e);
1878de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi        }
1888de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi    }
1898de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi
190ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    @Override // Binder interface
191ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public IBinder asBinder() {
192ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller        return mService.asBinder();
1935ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1945ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
195ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public boolean isShowing() {
196ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller        return mKeyguardStateMonitor.isShowing();
197caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller    }
198caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller
199ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public boolean isSecure() {
200ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller        return mKeyguardStateMonitor.isSecure();
201138f25d75665bd07d34294364c5b6f530b33503fJim Miller    }
202138f25d75665bd07d34294364c5b6f530b33503fJim Miller
203ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller    public boolean isInputRestricted() {
204ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller        return mKeyguardStateMonitor.isInputRestricted();
2055ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
2065ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller}