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}