summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java')
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
index 5a1c9976f021..61caf3bc5d8f 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
@@ -18,10 +18,15 @@ package com.android.keyguard;
import android.app.ActivityManager;
import android.app.IActivityManager;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.Resources;
import android.graphics.Color;
+import android.graphics.PixelFormat;
import android.os.Handler;
+import android.os.IBinder;
import android.os.RemoteException;
import android.os.UserHandle;
import android.text.TextUtils;
@@ -30,7 +35,11 @@ import android.util.AttributeSet;
import android.util.Log;
import android.util.Slog;
import android.util.TypedValue;
+import android.view.SurfaceControl;
+import android.view.SurfaceControlViewHost;
import android.view.View;
+import android.view.WindowManager;
+import android.view.WindowlessWindowManager;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -40,6 +49,7 @@ import androidx.core.graphics.ColorUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.Dependency;
import com.android.systemui.R;
+import com.android.systemui.shared.system.UniversalSmartspaceUtils;
import com.android.systemui.statusbar.policy.ConfigurationController;
import java.io.FileDescriptor;
@@ -76,6 +86,7 @@ public class KeyguardStatusView extends GridLayout implements
private int mIconTopMargin;
private int mIconTopMarginWithHeader;
private boolean mShowingHeader;
+ private SurfaceControlViewHost mUniversalSmartspaceViewHost;
private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
@@ -122,6 +133,38 @@ public class KeyguardStatusView extends GridLayout implements
}
};
+ private BroadcastReceiver mUniversalSmartspaceBroadcastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent i) {
+ // TODO(b/148159743): Restrict to Pixel Launcher.
+ if (UniversalSmartspaceUtils.ACTION_REQUEST_SMARTSPACE_VIEW.equals(i.getAction())) {
+ if (mUniversalSmartspaceViewHost != null) {
+ mUniversalSmartspaceViewHost.die();
+ }
+ SurfaceControl surfaceControl = UniversalSmartspaceUtils.getSurfaceControl(i);
+ if (surfaceControl != null) {
+ IBinder input = UniversalSmartspaceUtils.getInputToken(i);
+
+ WindowlessWindowManager windowlessWindowManager =
+ new WindowlessWindowManager(context.getResources().getConfiguration(),
+ surfaceControl, input);
+ mUniversalSmartspaceViewHost = new SurfaceControlViewHost(context,
+ context.getDisplay(), windowlessWindowManager);
+ WindowManager.LayoutParams layoutParams =
+ new WindowManager.LayoutParams(
+ surfaceControl.getWidth(),
+ surfaceControl.getHeight(),
+ WindowManager.LayoutParams.TYPE_APPLICATION,
+ 0,
+ PixelFormat.TRANSPARENT);
+
+ mUniversalSmartspaceViewHost.addView(
+ inflate(context, R.layout.keyguard_status_area, null), layoutParams);
+ }
+ }
+ }
+ };;
+
public KeyguardStatusView(Context context) {
this(context, null, 0);
}
@@ -316,6 +359,8 @@ public class KeyguardStatusView extends GridLayout implements
super.onAttachedToWindow();
Dependency.get(KeyguardUpdateMonitor.class).registerCallback(mInfoCallback);
Dependency.get(ConfigurationController.class).addCallback(this);
+ getContext().registerReceiver(mUniversalSmartspaceBroadcastReceiver,
+ new IntentFilter(UniversalSmartspaceUtils.ACTION_REQUEST_SMARTSPACE_VIEW));
}
@Override
@@ -323,6 +368,7 @@ public class KeyguardStatusView extends GridLayout implements
super.onDetachedFromWindow();
Dependency.get(KeyguardUpdateMonitor.class).removeCallback(mInfoCallback);
Dependency.get(ConfigurationController.class).removeCallback(this);
+ getContext().unregisterReceiver(mUniversalSmartspaceBroadcastReceiver);
}
@Override