Add plugin interfaces to control notification menu / swipe behavior

1) Updates the notification menu plugin to do more:
- The plugin can now supply the view it wants to display behind a
  notification as the menu
- Touch interaction (i.e. notification translating on top) is piped
  through to the plugin so it can update the view behind the notification

2) Makes NotificationMenuRow an implementor of the plugin which moves
   a bunch of that logic out of NotificationStackScroller

Test: runtest systemui
Change-Id: I8723b96c195ff7311317d5523418cfcbe2a79b52
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
index a9043e4..8d432c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
@@ -53,8 +53,6 @@
 import com.android.settingslib.Utils;
 import com.android.systemui.Interpolators;
 import com.android.systemui.R;
-import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.GutsContent;
-import com.android.systemui.plugins.statusbar.NotificationMenuRowProvider.GutsInteractionListener;
 import com.android.systemui.statusbar.NotificationGuts.OnSettingsClickListener;
 import com.android.systemui.statusbar.stack.StackStateAnimator;
 
@@ -65,7 +63,7 @@
 /**
  * The guts of a notification revealed when performing a long press.
  */
-public class NotificationInfo extends LinearLayout implements GutsContent {
+public class NotificationInfo extends LinearLayout implements NotificationGuts.GutsContent {
     private static final String TAG = "InfoGuts";
 
     private INotificationManager mINotificationManager;
@@ -79,7 +77,7 @@
     private View mChannelDisabledView;
     private Switch mChannelEnabledSwitch;
 
-    private GutsInteractionListener mGutsInteractionListener;
+    private NotificationGuts mGutsContainer;
 
     public NotificationInfo(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -274,8 +272,8 @@
 
         // Callback when checked.
         mChannelEnabledSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
-            if (mGutsInteractionListener != null) {
-                mGutsInteractionListener.onInteraction(NotificationInfo.this);
+            if (mGutsContainer != null) {
+                mGutsContainer.resetFalsingCheck();
             }
             updateSecondaryText();
         });
@@ -300,8 +298,8 @@
     }
 
     @Override
-    public void setInteractionListener(GutsInteractionListener listener) {
-        mGutsInteractionListener = listener;
+    public void setGutsParent(NotificationGuts guts) {
+        mGutsContainer = guts;
     }
 
     @Override