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
195ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport android.os.Bundle;
205ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport android.os.IBinder;
215ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport android.os.RemoteException;
2225190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport android.util.Slog;
23caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Millerimport android.view.MotionEvent;
245ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
258ae65aecc81d5a3ccf2320b88a8324e82b46fda4Jorim Jaggiimport com.android.internal.policy.IKeyguardServiceConstants;
2625190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport com.android.internal.policy.IKeyguardShowCallback;
2725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport com.android.internal.policy.IKeyguardExitCallback;
285ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport com.android.internal.policy.IKeyguardService;
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 {
365ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    private IKeyguardService mService;
3725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    private String TAG = "KeyguardServiceWrapper";
385ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
395ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public KeyguardServiceWrapper(IKeyguardService service) {
405ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        mService = service;
415ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
425ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
435ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isShowing() {
445ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
455ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isShowing();
465ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
4725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
485ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
495ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false;
505ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
515ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
525ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isSecure() {
535ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
545ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isSecure();
555ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
5625190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
575ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
585ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false; // TODO cache state
595ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
605ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
615cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi    public boolean isShowingAndNotOccluded() {
625ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
635cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi            return mService.isShowingAndNotOccluded();
645ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
6525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
665ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
675ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false; // TODO cache state
685ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
695ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
705ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isInputRestricted() {
715ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
725ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isInputRestricted();
735ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
7425190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
755ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
765ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false; // TODO cache state
775ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
785ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
795ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isDismissable() {
805ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
815ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isDismissable();
825ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
8325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
845ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
855ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return true; // TODO cache state
865ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
875ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
8825190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    public void verifyUnlock(IKeyguardExitCallback callback) {
895ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
9025190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            mService.verifyUnlock(callback);
915ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
9225190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
935ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
945ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
955ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
965ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void keyguardDone(boolean authenticated, boolean wakeup) {
975ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
985ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.keyguardDone(authenticated, wakeup);
995ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
10025190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1015ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1025ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1035ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1045cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi    public int setOccluded(boolean isOccluded) {
1055ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1065cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi            return mService.setOccluded(isOccluded);
1075ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
10825190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1095cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi            return IKeyguardServiceConstants.KEYGUARD_SERVICE_SET_OCCLUDED_RESULT_NONE;
1105ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1115ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1125ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1135ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void dismiss() {
1145ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1155ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.dismiss();
1165ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
11725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1185ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1195ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1205ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1215ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onDreamingStarted() {
1225ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1235ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onDreamingStarted();
1245ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
12525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1265ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1275ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1285ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1295ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onDreamingStopped() {
1305ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1315ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onDreamingStopped();
1325ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
13325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1345ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1355ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1365ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1375ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onScreenTurnedOff(int reason) {
1385ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1395ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onScreenTurnedOff(reason);
1405ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
14125190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1425ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1435ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1445ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
14525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    public void onScreenTurnedOn(IKeyguardShowCallback result) {
1465ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1475ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onScreenTurnedOn(result);
1485ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
14925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1505ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1515ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1525ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1535ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setKeyguardEnabled(boolean enabled) {
1545ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1555ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setKeyguardEnabled(enabled);
1565ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
15725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1585ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1595ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1605ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1615ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onSystemReady() {
1625ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1635ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onSystemReady();
1645ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
16525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1665ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1675ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1685ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1695ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void doKeyguardTimeout(Bundle options) {
1705ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1715ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.doKeyguardTimeout(options);
1725ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
17325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1745ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1755ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1765ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1775ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setCurrentUser(int userId) {
1785ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1795ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setCurrentUser(userId);
1805ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
18125190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1825ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1835ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1845ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
185e5f910a667088ab63e017d5851f0956c77b823daJim Miller    public void onBootCompleted() {
186e5f910a667088ab63e017d5851f0956c77b823daJim Miller        try {
187e5f910a667088ab63e017d5851f0956c77b823daJim Miller            mService.onBootCompleted();
188e5f910a667088ab63e017d5851f0956c77b823daJim Miller        } catch (RemoteException e) {
189e5f910a667088ab63e017d5851f0956c77b823daJim Miller            Slog.w(TAG , "Remote Exception", e);
190e5f910a667088ab63e017d5851f0956c77b823daJim Miller        }
191e5f910a667088ab63e017d5851f0956c77b823daJim Miller    }
192e5f910a667088ab63e017d5851f0956c77b823daJim Miller
193e29b2dbc762bfa66093d76f5a65f55328d8753c9Jorim Jaggi    public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
1940d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi        try {
195e29b2dbc762bfa66093d76f5a65f55328d8753c9Jorim Jaggi            mService.startKeyguardExitAnimation(startTime, fadeoutDuration);
1960d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi        } catch (RemoteException e) {
1970d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi            Slog.w(TAG , "Remote Exception", e);
1980d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi        }
1990d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi    }
2000d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi
2018de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi    public void onActivityDrawn() {
2028de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi        try {
2038de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi            mService.onActivityDrawn();
2048de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi        } catch (RemoteException e) {
2058de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi            Slog.w(TAG , "Remote Exception", e);
2068de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi        }
2078de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi    }
2088de4311c51229efbe2f2d0afbf298982c5cadd96Jorim Jaggi
2095ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void showAssistant() {
2106c9df5054a25f179ea7359a1a5e59e7d5d8da122Jim Miller        // Not used by PhoneWindowManager
2115ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
2125ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
213caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller    public void dispatch(MotionEvent event) {
214caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller        // Not used by PhoneWindowManager.  See code in {@link NavigationBarView}
215caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller    }
216caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller
217138f25d75665bd07d34294364c5b6f530b33503fJim Miller    public void launchCamera() {
218138f25d75665bd07d34294364c5b6f530b33503fJim Miller        // Not used by PhoneWindowManager.  See code in {@link NavigationBarView}
219138f25d75665bd07d34294364c5b6f530b33503fJim Miller    }
220138f25d75665bd07d34294364c5b6f530b33503fJim Miller
2215ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    @Override
2225ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public IBinder asBinder() {
2235ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return mService.asBinder();
2245ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
2255ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
2265ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller}