Loading core/java/android/app/ContextImpl.java +16 −6 Original line number Diff line number Diff line Loading @@ -1405,25 +1405,35 @@ class ContextImpl extends Context { public boolean bindService(Intent service, ServiceConnection conn, int flags) { warnIfCallingFromSystemProcess(); return bindServiceCommon(service, conn, flags, Process.myUserHandle()); return bindServiceCommon(service, conn, flags, mMainThread.getHandler(), Process.myUserHandle()); } /** @hide */ @Override public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user) { return bindServiceCommon(service, conn, flags, user); return bindServiceCommon(service, conn, flags, mMainThread.getHandler(), user); } private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, UserHandle user) { /** @hide */ @Override public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { if (handler == null) { throw new IllegalArgumentException("handler must not be null."); } return bindServiceCommon(service, conn, flags, handler, user); } private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { IServiceConnection sd; if (conn == null) { throw new IllegalArgumentException("connection is null"); } if (mPackageInfo != null) { sd = mPackageInfo.getServiceDispatcher(conn, getOuterContext(), mMainThread.getHandler(), flags); sd = mPackageInfo.getServiceDispatcher(conn, getOuterContext(), handler, flags); } else { throw new RuntimeException("Not supported in system context"); } Loading core/java/android/content/Context.java +11 −0 Original line number Diff line number Diff line Loading @@ -2533,6 +2533,17 @@ public abstract class Context { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * Same as {@link #bindService(Intent, ServiceConnection, int, UserHandle)}, but with an * explicit non-null Handler to run the ServiceConnection callbacks on. * * @hide */ public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * Disconnect from an application service. You will no longer receive * calls as the service is restarted, and the service is now allowed to Loading services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +14 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.view.WindowManagerPolicy.OnKeyguardExitResult; import com.android.internal.policy.IKeyguardDrawnCallback; import com.android.internal.policy.IKeyguardExitCallback; import com.android.internal.policy.IKeyguardService; import com.android.server.UiThread; import java.io.PrintWriter; Loading Loading @@ -116,8 +117,8 @@ public class KeyguardServiceDelegate { public KeyguardServiceDelegate(Context context) { mContext = context; mScrim = createScrim(context); mScrimHandler = new Handler(); mScrimHandler = UiThread.getHandler(); mScrim = createScrim(context, mScrimHandler); } public void bindService(Context context) { Loading @@ -130,7 +131,7 @@ public class KeyguardServiceDelegate { intent.setComponent(keyguardComponent); if (!context.bindServiceAsUser(intent, mKeyguardConnection, Context.BIND_AUTO_CREATE, UserHandle.SYSTEM)) { Context.BIND_AUTO_CREATE, mScrimHandler, UserHandle.SYSTEM)) { Log.v(TAG, "*** Keyguard: can't bind to " + keyguardComponent); mKeyguardState.showing = false; mKeyguardState.showingAndNotOccluded = false; Loading Loading @@ -334,8 +335,8 @@ public class KeyguardServiceDelegate { } } private static final View createScrim(Context context) { View view = new View(context); private static View createScrim(Context context, Handler handler) { final View view = new View(context); int flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR Loading @@ -345,14 +346,13 @@ public class KeyguardServiceDelegate { final int stretch = ViewGroup.LayoutParams.MATCH_PARENT; final int type = WindowManager.LayoutParams.TYPE_KEYGUARD_SCRIM; WindowManager.LayoutParams lp = new WindowManager.LayoutParams( final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( stretch, stretch, type, flags, PixelFormat.TRANSLUCENT); lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; lp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED; lp.setTitle("KeyguardScrim"); WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); wm.addView(view, lp); final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); // Disable pretty much everything in statusbar until keyguard comes back and we know // the state of the world. view.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME Loading @@ -360,6 +360,12 @@ public class KeyguardServiceDelegate { | View.STATUS_BAR_DISABLE_RECENT | View.STATUS_BAR_DISABLE_EXPAND | View.STATUS_BAR_DISABLE_SEARCH); handler.post(new Runnable() { @Override public void run() { wm.addView(view, lp); } }); return view; } Loading Loading
core/java/android/app/ContextImpl.java +16 −6 Original line number Diff line number Diff line Loading @@ -1405,25 +1405,35 @@ class ContextImpl extends Context { public boolean bindService(Intent service, ServiceConnection conn, int flags) { warnIfCallingFromSystemProcess(); return bindServiceCommon(service, conn, flags, Process.myUserHandle()); return bindServiceCommon(service, conn, flags, mMainThread.getHandler(), Process.myUserHandle()); } /** @hide */ @Override public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user) { return bindServiceCommon(service, conn, flags, user); return bindServiceCommon(service, conn, flags, mMainThread.getHandler(), user); } private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, UserHandle user) { /** @hide */ @Override public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { if (handler == null) { throw new IllegalArgumentException("handler must not be null."); } return bindServiceCommon(service, conn, flags, handler, user); } private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { IServiceConnection sd; if (conn == null) { throw new IllegalArgumentException("connection is null"); } if (mPackageInfo != null) { sd = mPackageInfo.getServiceDispatcher(conn, getOuterContext(), mMainThread.getHandler(), flags); sd = mPackageInfo.getServiceDispatcher(conn, getOuterContext(), handler, flags); } else { throw new RuntimeException("Not supported in system context"); } Loading
core/java/android/content/Context.java +11 −0 Original line number Diff line number Diff line Loading @@ -2533,6 +2533,17 @@ public abstract class Context { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * Same as {@link #bindService(Intent, ServiceConnection, int, UserHandle)}, but with an * explicit non-null Handler to run the ServiceConnection callbacks on. * * @hide */ public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * Disconnect from an application service. You will no longer receive * calls as the service is restarted, and the service is now allowed to Loading
services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +14 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.view.WindowManagerPolicy.OnKeyguardExitResult; import com.android.internal.policy.IKeyguardDrawnCallback; import com.android.internal.policy.IKeyguardExitCallback; import com.android.internal.policy.IKeyguardService; import com.android.server.UiThread; import java.io.PrintWriter; Loading Loading @@ -116,8 +117,8 @@ public class KeyguardServiceDelegate { public KeyguardServiceDelegate(Context context) { mContext = context; mScrim = createScrim(context); mScrimHandler = new Handler(); mScrimHandler = UiThread.getHandler(); mScrim = createScrim(context, mScrimHandler); } public void bindService(Context context) { Loading @@ -130,7 +131,7 @@ public class KeyguardServiceDelegate { intent.setComponent(keyguardComponent); if (!context.bindServiceAsUser(intent, mKeyguardConnection, Context.BIND_AUTO_CREATE, UserHandle.SYSTEM)) { Context.BIND_AUTO_CREATE, mScrimHandler, UserHandle.SYSTEM)) { Log.v(TAG, "*** Keyguard: can't bind to " + keyguardComponent); mKeyguardState.showing = false; mKeyguardState.showingAndNotOccluded = false; Loading Loading @@ -334,8 +335,8 @@ public class KeyguardServiceDelegate { } } private static final View createScrim(Context context) { View view = new View(context); private static View createScrim(Context context, Handler handler) { final View view = new View(context); int flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR Loading @@ -345,14 +346,13 @@ public class KeyguardServiceDelegate { final int stretch = ViewGroup.LayoutParams.MATCH_PARENT; final int type = WindowManager.LayoutParams.TYPE_KEYGUARD_SCRIM; WindowManager.LayoutParams lp = new WindowManager.LayoutParams( final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( stretch, stretch, type, flags, PixelFormat.TRANSLUCENT); lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; lp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED; lp.setTitle("KeyguardScrim"); WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); wm.addView(view, lp); final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); // Disable pretty much everything in statusbar until keyguard comes back and we know // the state of the world. view.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME Loading @@ -360,6 +360,12 @@ public class KeyguardServiceDelegate { | View.STATUS_BAR_DISABLE_RECENT | View.STATUS_BAR_DISABLE_EXPAND | View.STATUS_BAR_DISABLE_SEARCH); handler.post(new Runnable() { @Override public void run() { wm.addView(view, lp); } }); return view; } Loading