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}