blob: a70e5bdc44d8fc7831b2b6a2f85826a1c5ca3021 [file] [log] [blame]
Jim Miller5ecd8112013-01-09 18:50:26 -08001/*
Jim Miller25190572013-02-28 17:36:24 -08002 * Copyright (C) 2013 The Android Open Source Project
Jim Miller5ecd8112013-01-09 18:50:26 -08003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.keyguard;
18
19import java.io.FileDescriptor;
20import java.io.PrintWriter;
21
22import android.app.Service;
23import android.content.Intent;
Jim Millerc0b676d2013-03-22 16:11:08 -070024import static android.content.pm.PackageManager.PERMISSION_GRANTED;
25
26import android.os.Binder;
Jim Miller5ecd8112013-01-09 18:50:26 -080027import android.os.Bundle;
Jim Millerc0b676d2013-03-22 16:11:08 -070028import android.os.Debug;
Jim Miller5ecd8112013-01-09 18:50:26 -080029import android.os.IBinder;
30import android.util.Log;
Jim Miller5ecd8112013-01-09 18:50:26 -080031
32import com.android.internal.policy.IKeyguardService;
Jim Miller25190572013-02-28 17:36:24 -080033import com.android.internal.policy.IKeyguardExitCallback;
34import com.android.internal.policy.IKeyguardShowCallback;
Jim Miller5ecd8112013-01-09 18:50:26 -080035import com.android.internal.widget.LockPatternUtils;
36
37public class KeyguardService extends Service {
38 static final String TAG = "KeyguardService";
Jim Millerc0b676d2013-03-22 16:11:08 -070039 static final String PERMISSION = android.Manifest.permission.CONTROL_KEYGUARD;
Jim Miller5ecd8112013-01-09 18:50:26 -080040 private KeyguardViewMediator mKeyguardViewMediator;
41
42 @Override
43 public void onCreate() {
44 if (mKeyguardViewMediator == null) {
45 mKeyguardViewMediator = new KeyguardViewMediator(
46 KeyguardService.this, new LockPatternUtils(KeyguardService.this));
47 }
48 Log.v(TAG, "onCreate()");
49 }
50
51 @Override
52 public IBinder onBind(Intent intent) {
53 return mBinder;
54 }
55
56 @Override
57 protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
58 // TODO
59 }
60
Jim Millerc0b676d2013-03-22 16:11:08 -070061 void checkPermission() {
62 if (getBaseContext().checkCallingOrSelfPermission(PERMISSION) != PERMISSION_GRANTED) {
63 Log.w(TAG, "Caller needs permission '" + PERMISSION + "' to call " + Debug.getCaller());
64 throw new SecurityException("Access denied to process: " + Binder.getCallingPid()
65 + ", must have permission " + PERMISSION);
66 }
67 }
68
Jim Miller5ecd8112013-01-09 18:50:26 -080069 private final IKeyguardService.Stub mBinder = new IKeyguardService.Stub() {
70 public boolean isShowing() {
71 return mKeyguardViewMediator.isShowing();
72 }
73 public boolean isSecure() {
74 return mKeyguardViewMediator.isSecure();
75 }
76 public boolean isShowingAndNotHidden() {
77 return mKeyguardViewMediator.isShowingAndNotHidden();
78 }
79 public boolean isInputRestricted() {
80 return mKeyguardViewMediator.isInputRestricted();
81 }
Jim Miller25190572013-02-28 17:36:24 -080082 public void verifyUnlock(IKeyguardExitCallback callback) {
83 mKeyguardViewMediator.verifyUnlock(callback);
Jim Miller5ecd8112013-01-09 18:50:26 -080084 }
85 public void keyguardDone(boolean authenticated, boolean wakeup) {
Jim Millerc0b676d2013-03-22 16:11:08 -070086 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -080087 mKeyguardViewMediator.keyguardDone(authenticated, wakeup);
88 }
89 public void setHidden(boolean isHidden) {
Jim Millerc0b676d2013-03-22 16:11:08 -070090 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -080091 mKeyguardViewMediator.setHidden(isHidden);
92 }
93 public void dismiss() {
94 mKeyguardViewMediator.dismiss();
95 }
Jim Miller5ecd8112013-01-09 18:50:26 -080096 public void onDreamingStarted() {
Jim Millerc0b676d2013-03-22 16:11:08 -070097 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -080098 mKeyguardViewMediator.onDreamingStarted();
99 }
100 public void onDreamingStopped() {
Jim Millerc0b676d2013-03-22 16:11:08 -0700101 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800102 mKeyguardViewMediator.onDreamingStopped();
103 }
104 public void onScreenTurnedOff(int reason) {
Jim Millerc0b676d2013-03-22 16:11:08 -0700105 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800106 mKeyguardViewMediator.onScreenTurnedOff(reason);
107 }
Jim Miller25190572013-02-28 17:36:24 -0800108 public void onScreenTurnedOn(IKeyguardShowCallback callback) {
Jim Millerc0b676d2013-03-22 16:11:08 -0700109 checkPermission();
Jim Miller25190572013-02-28 17:36:24 -0800110 mKeyguardViewMediator.onScreenTurnedOn(callback);
Jim Miller5ecd8112013-01-09 18:50:26 -0800111 }
112 public void setKeyguardEnabled(boolean enabled) {
Jim Millerc0b676d2013-03-22 16:11:08 -0700113 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800114 mKeyguardViewMediator.setKeyguardEnabled(enabled);
115 }
116 public boolean isDismissable() {
117 return mKeyguardViewMediator.isDismissable();
118 }
119 public void onSystemReady() {
Jim Millerc0b676d2013-03-22 16:11:08 -0700120 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800121 mKeyguardViewMediator.onSystemReady();
122 }
123 public void doKeyguardTimeout(Bundle options) {
Jim Millerc0b676d2013-03-22 16:11:08 -0700124 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800125 mKeyguardViewMediator.doKeyguardTimeout(options);
126 }
127 public void setCurrentUser(int userId) {
Jim Millerc0b676d2013-03-22 16:11:08 -0700128 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800129 mKeyguardViewMediator.setCurrentUser(userId);
130 }
131 public void showAssistant() {
Jim Millerc0b676d2013-03-22 16:11:08 -0700132 checkPermission();
Jim Miller5ecd8112013-01-09 18:50:26 -0800133 mKeyguardViewMediator.showAssistant();
134 }
135 };
136
137}
138