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
2525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport com.android.internal.policy.IKeyguardShowCallback;
2625190577cc69eaa5930c6fbdc2fcca03afc84982Jim Millerimport com.android.internal.policy.IKeyguardExitCallback;
275ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerimport com.android.internal.policy.IKeyguardService;
285ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
295ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller/**
305ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * A wrapper class for KeyguardService.  It implements IKeyguardService to ensure the interface
315ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller * remains consistent.
325ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller *
335ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller */
345ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerpublic class KeyguardServiceWrapper implements IKeyguardService {
355ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    private IKeyguardService mService;
3625190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    private String TAG = "KeyguardServiceWrapper";
375ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
385ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public KeyguardServiceWrapper(IKeyguardService service) {
395ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        mService = service;
405ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
415ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
425ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isShowing() {
435ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
445ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isShowing();
455ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
4625190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
475ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
485ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false;
495ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
505ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
515ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isSecure() {
525ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
535ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isSecure();
545ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
5525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
565ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
575ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false; // TODO cache state
585ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
595ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
605ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isShowingAndNotHidden() {
615ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
625ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isShowingAndNotHidden();
635ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
6425190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
655ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
665ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false; // TODO cache state
675ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
685ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
695ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isInputRestricted() {
705ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
715ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isInputRestricted();
725ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
7325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
745ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
755ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return false; // TODO cache state
765ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
775ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
785ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public boolean isDismissable() {
795ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
805ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            return mService.isDismissable();
815ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
8225190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
835ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
845ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return true; // TODO cache state
855ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
865ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
8725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    public void verifyUnlock(IKeyguardExitCallback callback) {
885ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
8925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            mService.verifyUnlock(callback);
905ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
9125190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
925ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
935ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
945ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
955ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void keyguardDone(boolean authenticated, boolean wakeup) {
965ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
975ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.keyguardDone(authenticated, wakeup);
985ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
9925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1005ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1015ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1025ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1035ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setHidden(boolean isHidden) {
1045ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1055ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setHidden(isHidden);
1065ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
10725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1085ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1095ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1105ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1115ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void dismiss() {
1125ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1135ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.dismiss();
1145ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
11525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1165ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1175ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1185ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1195ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onDreamingStarted() {
1205ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1215ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onDreamingStarted();
1225ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
12325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1245ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1255ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1265ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1275ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onDreamingStopped() {
1285ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1295ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onDreamingStopped();
1305ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
13125190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1325ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1335ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1345ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1355ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onScreenTurnedOff(int reason) {
1365ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1375ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onScreenTurnedOff(reason);
1385ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
13925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1405ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1415ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1425ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
14325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller    public void onScreenTurnedOn(IKeyguardShowCallback result) {
1445ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1455ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onScreenTurnedOn(result);
1465ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
14725190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1485ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1495ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1505ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1515ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setKeyguardEnabled(boolean enabled) {
1525ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1535ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setKeyguardEnabled(enabled);
1545ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
15525190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1565ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1575ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1585ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1595ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void onSystemReady() {
1605ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1615ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.onSystemReady();
1625ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
16325190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1645ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1655ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1665ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1675ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void doKeyguardTimeout(Bundle options) {
1685ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1695ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.doKeyguardTimeout(options);
1705ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
17125190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1725ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1735ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1745ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
1755ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void setCurrentUser(int userId) {
1765ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        try {
1775ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller            mService.setCurrentUser(userId);
1785ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        } catch (RemoteException e) {
17925190577cc69eaa5930c6fbdc2fcca03afc84982Jim Miller            Slog.w(TAG , "Remote Exception", e);
1805ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        }
1815ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1825ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
183174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller    public void onBootCompleted() {
184174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller        try {
185174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller            mService.onBootCompleted();
186174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller        } catch (RemoteException e) {
187174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller            Slog.w(TAG , "Remote Exception", e);
188174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller        }
189174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller    }
190174236381bfb7c49994667905a6fc6e1b8356a38Jim Miller
1915ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public void showAssistant() {
1926c9df5054a25f179ea7359a1a5e59e7d5d8da122Jim Miller        // Not used by PhoneWindowManager
1935ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
1945ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
195caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller    public void dispatch(MotionEvent event) {
196caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller        // Not used by PhoneWindowManager.  See code in {@link NavigationBarView}
197caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller    }
198caf24fc2c4bb9747eb80138bf3ce0be067851749Jim Miller
199138f25d75665bd07d34294364c5b6f530b33503fJim Miller    public void launchCamera() {
200138f25d75665bd07d34294364c5b6f530b33503fJim Miller        // Not used by PhoneWindowManager.  See code in {@link NavigationBarView}
201138f25d75665bd07d34294364c5b6f530b33503fJim Miller    }
202138f25d75665bd07d34294364c5b6f530b33503fJim Miller
2035ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    @Override
2045ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    public IBinder asBinder() {
2055ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller        return mService.asBinder();
2065ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller    }
2075ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller
2085ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller}