Merge "Merge "Fixed that clicking on the remoteinput didn't work from AOD" into qt-dev am: 70c8685a94" into qt-dev-plus-aosp
This commit is contained in:
committed by
Android (Google) Code Review
commit
388a7e0d82
@@ -108,6 +108,8 @@
|
||||
|
||||
<item type="id" name="display_cutout" />
|
||||
|
||||
<item type="id" name="row_tag_for_content_view" />
|
||||
|
||||
<!-- Optional cancel button on Keyguard -->
|
||||
<item type="id" name="cancel_button"/>
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.internal.statusbar.NotificationVisibility;
|
||||
import com.android.systemui.Dumpable;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryListener;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||
@@ -348,24 +349,18 @@ public class NotificationRemoteInputManager implements Dumpable {
|
||||
|
||||
ViewParent p = view.getParent();
|
||||
RemoteInputView riv = null;
|
||||
ExpandableNotificationRow row = null;
|
||||
while (p != null) {
|
||||
if (p instanceof View) {
|
||||
View pv = (View) p;
|
||||
if (pv.isRootNamespace()) {
|
||||
riv = findRemoteInputView(pv);
|
||||
row = (ExpandableNotificationRow) pv.getTag(R.id.row_tag_for_content_view);
|
||||
break;
|
||||
}
|
||||
}
|
||||
p = p.getParent();
|
||||
}
|
||||
ExpandableNotificationRow row = null;
|
||||
while (p != null) {
|
||||
if (p instanceof ExpandableNotificationRow) {
|
||||
row = (ExpandableNotificationRow) p;
|
||||
break;
|
||||
}
|
||||
p = p.getParent();
|
||||
}
|
||||
|
||||
if (row == null) {
|
||||
return false;
|
||||
@@ -391,10 +386,13 @@ public class NotificationRemoteInputManager implements Dumpable {
|
||||
if (riv == null) {
|
||||
return false;
|
||||
}
|
||||
if (!row.getPrivateLayout().getExpandedChild().isShown()) {
|
||||
mCallback.onMakeExpandedVisibleForRemoteInput(row, view);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (riv == row.getPrivateLayout().getExpandedRemoteInput()
|
||||
&& !row.getPrivateLayout().getExpandedChild().isShown()) {
|
||||
// The expanded layout is selected, but it's not shown yet, let's wait on it to
|
||||
// show before we do the animation.
|
||||
mCallback.onMakeExpandedVisibleForRemoteInput(row, view);
|
||||
return true;
|
||||
}
|
||||
|
||||
int width = view.getWidth();
|
||||
|
||||
@@ -541,6 +541,12 @@ public class NotificationContentView extends FrameLayout {
|
||||
mContainingNotification);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewAdded(View child) {
|
||||
super.onViewAdded(child);
|
||||
child.setTag(R.id.row_tag_for_content_view, mContainingNotification);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onVisibilityChanged(View changedView, int visibility) {
|
||||
super.onVisibilityChanged(changedView, visibility);
|
||||
@@ -1893,4 +1899,8 @@ public class NotificationContentView extends FrameLayout {
|
||||
}
|
||||
pw.println();
|
||||
}
|
||||
|
||||
public RemoteInputView getExpandedRemoteInput() {
|
||||
return mExpandedRemoteInput;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.IntentSender;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.view.View;
|
||||
@@ -65,6 +66,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
|
||||
private final ActivityStarter mActivityStarter = Dependency.get(ActivityStarter.class);
|
||||
private final Context mContext;
|
||||
private final ActivityIntentHelper mActivityIntentHelper;
|
||||
private final NotificationGroupManager mGroupManager;
|
||||
private View mPendingWorkRemoteInputView;
|
||||
private View mPendingRemoteInputView;
|
||||
private final ShadeController mShadeController = Dependency.get(ShadeController.class);
|
||||
@@ -72,11 +74,12 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
|
||||
private final CommandQueue mCommandQueue;
|
||||
private int mDisabled2;
|
||||
protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver();
|
||||
private Handler mMainHandler = new Handler();
|
||||
|
||||
/**
|
||||
*/
|
||||
@Inject
|
||||
public StatusBarRemoteInputCallback(Context context) {
|
||||
public StatusBarRemoteInputCallback(Context context, NotificationGroupManager groupManager) {
|
||||
mContext = context;
|
||||
mContext.registerReceiverAsUser(mChallengeReceiver, UserHandle.ALL,
|
||||
new IntentFilter(ACTION_DEVICE_LOCKED_CHANGED), null, null);
|
||||
@@ -85,15 +88,15 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
|
||||
mCommandQueue = getComponent(context, CommandQueue.class);
|
||||
mCommandQueue.addCallback(this);
|
||||
mActivityIntentHelper = new ActivityIntentHelper(mContext);
|
||||
mGroupManager = groupManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStateChanged(int state) {
|
||||
if (state == StatusBarState.SHADE && mStatusBarStateController.leaveOpenOnKeyguardHide()) {
|
||||
if (!mStatusBarStateController.isKeyguardRequested()) {
|
||||
if (mPendingRemoteInputView != null
|
||||
&& mPendingRemoteInputView.isAttachedToWindow()) {
|
||||
mPendingRemoteInputView.post(mPendingRemoteInputView::callOnClick);
|
||||
if (mPendingRemoteInputView != null) {
|
||||
mMainHandler.post(mPendingRemoteInputView::callOnClick);
|
||||
}
|
||||
mPendingRemoteInputView = null;
|
||||
}
|
||||
@@ -159,6 +162,10 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
|
||||
if (mKeyguardMonitor.isShowing()) {
|
||||
onLockedRemoteInput(row, clickedView);
|
||||
} else {
|
||||
if (row.isChildInGroup() && !row.areChildrenExpanded()) {
|
||||
// The group isn't expanded, let's make sure it's visible!
|
||||
mGroupManager.toggleGroupExpansion(row.getStatusBarNotification());
|
||||
}
|
||||
row.setUserExpanded(true);
|
||||
row.getPrivateLayout().setOnExpandedVisibleListener(clickedView::performClick);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,8 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase {
|
||||
mNotificationLockscreenUserManager);
|
||||
mDependency.putComponent(CommandQueue.class, mock(CommandQueue.class));
|
||||
|
||||
mRemoteInputCallback = spy(new StatusBarRemoteInputCallback(mContext));
|
||||
mRemoteInputCallback = spy(new StatusBarRemoteInputCallback(mContext,
|
||||
mock(NotificationGroupManager.class)));
|
||||
mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user