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}