1380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi/* 2380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * Copyright (C) 2014 The Android Open Source Project 3380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * 4380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 5380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * you may not use this file except in compliance with the License. 6380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * You may obtain a copy of the License at 7380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * 8380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 9380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * 10380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 11380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 12380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * See the License for the specific language governing permissions and 14380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi * limitations under the License 15380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi */ 16380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 17380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggipackage com.android.systemui.keyguard; 18380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 19380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.app.Service; 20380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.content.Intent; 21380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.os.Binder; 22380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.os.Bundle; 23380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.os.Debug; 24380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.os.IBinder; 2596afb6f03b87359c3bcb96c2bdb8aadc7b1c3c37Jim Millerimport android.os.Process; 261d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniersimport android.os.Trace; 27380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport android.util.Log; 28cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi 29241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggiimport com.android.internal.policy.IKeyguardDismissCallback; 30740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggiimport com.android.internal.policy.IKeyguardDrawnCallback; 31cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggiimport com.android.internal.policy.IKeyguardExitCallback; 32cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggiimport com.android.internal.policy.IKeyguardService; 33ab954546dc49e1070ed8513efbddc8954b529c23Jim Millerimport com.android.internal.policy.IKeyguardStateCallback; 34369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport com.android.systemui.Dependency; 35cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggiimport com.android.systemui.SystemUIApplication; 36380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 37380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggiimport static android.content.pm.PackageManager.PERMISSION_GRANTED; 38380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 39380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggipublic class KeyguardService extends Service { 40380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi static final String TAG = "KeyguardService"; 41380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi static final String PERMISSION = android.Manifest.permission.CONTROL_KEYGUARD; 42380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 435cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private KeyguardViewMediator mKeyguardViewMediator; 44369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos private KeyguardLifecyclesDispatcher mKeyguardLifecyclesDispatcher; 45380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 46380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi @Override 47380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi public void onCreate() { 483beffdf4a0081a97356f46d50e10541b1a213153Jorim Jaggi ((SystemUIApplication) getApplication()).startServicesIfNeeded(); 49cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi mKeyguardViewMediator = 50cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi ((SystemUIApplication) getApplication()).getComponent(KeyguardViewMediator.class); 51369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher = new KeyguardLifecyclesDispatcher( 52369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos Dependency.get(ScreenLifecycle.class), 53369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos Dependency.get(WakefulnessLifecycle.class)); 54369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 55380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 56380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 57380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi @Override 58380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi public IBinder onBind(Intent intent) { 59cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi return mBinder; 60380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 61380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 62380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi void checkPermission() { 6396afb6f03b87359c3bcb96c2bdb8aadc7b1c3c37Jim Miller // Avoid deadlock by avoiding calling back into the system process. 6496afb6f03b87359c3bcb96c2bdb8aadc7b1c3c37Jim Miller if (Binder.getCallingUid() == Process.SYSTEM_UID) return; 6596afb6f03b87359c3bcb96c2bdb8aadc7b1c3c37Jim Miller 6696afb6f03b87359c3bcb96c2bdb8aadc7b1c3c37Jim Miller // Otherwise,explicitly check for caller permission ... 67380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi if (getBaseContext().checkCallingOrSelfPermission(PERMISSION) != PERMISSION_GRANTED) { 68380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi Log.w(TAG, "Caller needs permission '" + PERMISSION + "' to call " + Debug.getCaller()); 69380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi throw new SecurityException("Access denied to process: " + Binder.getCallingPid() 70380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi + ", must have permission " + PERMISSION); 71380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 72380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 73380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 74380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi private final IKeyguardService.Stub mBinder = new IKeyguardService.Stub() { 75380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 76ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 77ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller public void addStateMonitorCallback(IKeyguardStateCallback callback) { 78ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller checkPermission(); 79ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller mKeyguardViewMediator.addStateMonitorCallback(callback); 80380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 81380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 82ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 835cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void verifyUnlock(IKeyguardExitCallback callback) { 841d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.beginSection("KeyguardService.mBinder#verifyUnlock"); 855cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi checkPermission(); 865cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.verifyUnlock(callback); 871d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 88380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 89380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 90ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 916626f54e658e3da44fab8a5cd6d9d3d4852e2cd1Jorim Jaggi public void setOccluded(boolean isOccluded, boolean animate) { 921d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.beginSection("KeyguardService.mBinder#setOccluded"); 93ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller checkPermission(); 946626f54e658e3da44fab8a5cd6d9d3d4852e2cd1Jorim Jaggi mKeyguardViewMediator.setOccluded(isOccluded, animate); 951d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 96380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 97380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 98ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 99241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi public void dismiss(IKeyguardDismissCallback callback) { 100380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 101241ae10b2189f449e57d8d660235ac56d8fb1b80Jorim Jaggi mKeyguardViewMediator.dismiss(callback); 102380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 103380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 104ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 1055cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void onDreamingStarted() { 106380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 1075cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.onDreamingStarted(); 108380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 109380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 110ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 1115cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void onDreamingStopped() { 112380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 1135cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.onDreamingStopped(); 114380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 115380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 116ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 117d175b6cfe0b35dfe251cc9315aacb048bf6e54c5Jorim Jaggi public void onStartedGoingToSleep(int reason) { 118380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 119d175b6cfe0b35dfe251cc9315aacb048bf6e54c5Jorim Jaggi mKeyguardViewMediator.onStartedGoingToSleep(reason); 120369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch( 121369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos KeyguardLifecyclesDispatcher.STARTED_GOING_TO_SLEEP); 122380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 123380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 124ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 125f1cdf9558d2b7f8fe5b8cf3d309b48809f04403bJorim Jaggi public void onFinishedGoingToSleep(int reason, boolean cameraGestureTriggered) { 126380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 127f1cdf9558d2b7f8fe5b8cf3d309b48809f04403bJorim Jaggi mKeyguardViewMediator.onFinishedGoingToSleep(reason, cameraGestureTriggered); 128369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch( 129369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos KeyguardLifecyclesDispatcher.FINISHED_GOING_TO_SLEEP); 130d175b6cfe0b35dfe251cc9315aacb048bf6e54c5Jorim Jaggi } 131d175b6cfe0b35dfe251cc9315aacb048bf6e54c5Jorim Jaggi 132d175b6cfe0b35dfe251cc9315aacb048bf6e54c5Jorim Jaggi @Override // Binder interface 133740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi public void onStartedWakingUp() { 1341d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.beginSection("KeyguardService.mBinder#onStartedWakingUp"); 135d175b6cfe0b35dfe251cc9315aacb048bf6e54c5Jorim Jaggi checkPermission(); 136740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi mKeyguardViewMediator.onStartedWakingUp(); 137369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch(KeyguardLifecyclesDispatcher.STARTED_WAKING_UP); 138369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos Trace.endSection(); 139369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos } 140369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 141369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos @Override // Binder interface 142369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos public void onFinishedWakingUp() { 143369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos Trace.beginSection("KeyguardService.mBinder#onFinishedWakingUp"); 144369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos checkPermission(); 145369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch(KeyguardLifecyclesDispatcher.FINISHED_WAKING_UP); 1461d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 147740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi } 148740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi 149740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi @Override // Binder interface 150740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi public void onScreenTurningOn(IKeyguardDrawnCallback callback) { 1511d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.beginSection("KeyguardService.mBinder#onScreenTurningOn"); 152740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi checkPermission(); 153740452e8756cb7f51ed185c3906a5ca61b8fcdd4Jorim Jaggi mKeyguardViewMediator.onScreenTurningOn(callback); 154369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch(KeyguardLifecyclesDispatcher.SCREEN_TURNING_ON); 1551d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 156380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 157380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 158ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 1590d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi public void onScreenTurnedOn() { 160e9d8272e9af29232471dc2c690675362494f5b0aAdrian Roos Trace.beginSection("KeyguardService.mBinder#onScreenTurnedOn"); 1610d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi checkPermission(); 1620d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi mKeyguardViewMediator.onScreenTurnedOn(); 163369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch(KeyguardLifecyclesDispatcher.SCREEN_TURNED_ON); 1641d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 1650d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi } 1660d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi 1670d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi @Override // Binder interface 168369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos public void onScreenTurningOff() { 169369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos checkPermission(); 170369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch(KeyguardLifecyclesDispatcher.SCREEN_TURNING_OFF); 171369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos } 172369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 173369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos @Override // Binder interface 1740d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi public void onScreenTurnedOff() { 1750d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi checkPermission(); 1760d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi mKeyguardViewMediator.onScreenTurnedOff(); 177369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mKeyguardLifecyclesDispatcher.dispatch(KeyguardLifecyclesDispatcher.SCREEN_TURNED_OFF); 1780d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi } 1790d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi 1800d210f6395072db4a4c53d4cb8fac4a59a3965b4Jorim Jaggi @Override // Binder interface 1815cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardEnabled(boolean enabled) { 182380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 1835cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.setKeyguardEnabled(enabled); 184380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 185380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 186ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 1875cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void onSystemReady() { 1881d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.beginSection("KeyguardService.mBinder#onSystemReady"); 189380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 1905cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.onSystemReady(); 1911d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 192380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 193380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 194ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 1955cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void doKeyguardTimeout(Bundle options) { 196380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 1975cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.doKeyguardTimeout(options); 198380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 199380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 200ab954546dc49e1070ed8513efbddc8954b529c23Jim Miller @Override // Binder interface 2011839645126c8e7e0909e8ed8f0686c2122ba6078Evan Rosky public void setSwitchingUser(boolean switching) { 2021839645126c8e7e0909e8ed8f0686c2122ba6078Evan Rosky checkPermission(); 2031839645126c8e7e0909e8ed8f0686c2122ba6078Evan Rosky mKeyguardViewMediator.setSwitchingUser(switching); 2041839645126c8e7e0909e8ed8f0686c2122ba6078Evan Rosky } 2051839645126c8e7e0909e8ed8f0686c2122ba6078Evan Rosky 2061839645126c8e7e0909e8ed8f0686c2122ba6078Evan Rosky @Override // Binder interface 2075cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setCurrentUser(int userId) { 208380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 2095cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.setCurrentUser(userId); 210380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 211380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 212380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi @Override 2135cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void onBootCompleted() { 214380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi checkPermission(); 2155cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardViewMediator.onBootCompleted(); 216380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi } 2170d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi 2180d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi @Override 219e29b2dbc762bfa66093d76f5a65f55328d8753c9Jorim Jaggi public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) { 2201d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.beginSection("KeyguardService.mBinder#startKeyguardExitAnimation"); 2210d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi checkPermission(); 222e29b2dbc762bfa66093d76f5a65f55328d8753c9Jorim Jaggi mKeyguardViewMediator.startKeyguardExitAnimation(startTime, fadeoutDuration); 2231d3967506e1cb3843d3bf758187ebc42d1c83485Nick Desaulniers Trace.endSection(); 2240d674623facfbd3e9c520d2be4ed98977b92a1a2Jorim Jaggi } 225b4045d3791566a1965024591def87dff7d120295Andrew Zeng 226b4045d3791566a1965024591def87dff7d120295Andrew Zeng @Override 227b4045d3791566a1965024591def87dff7d120295Andrew Zeng public void onShortPowerPressedGoHome() { 228b4045d3791566a1965024591def87dff7d120295Andrew Zeng checkPermission(); 229b4045d3791566a1965024591def87dff7d120295Andrew Zeng mKeyguardViewMediator.onShortPowerPressedGoHome(); 230b4045d3791566a1965024591def87dff7d120295Andrew Zeng } 231380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi }; 232380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi} 233380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi 234