Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f577eecb authored by Bill Lin's avatar Bill Lin
Browse files

Clean injection dependency to PipMenuActivity (4/N)

1) PipMenuIconsAlgorithm only used by PipMenuActivity,
   break that DI for the following migration

2) Add Null check to prevent NPE in handleMessage()

Bug: 161118569
Test: make SystemUI
Test: make ArcSystemUI
Test: make CarSystemUI
Test: atest WindowManagerShellTests
Test: atest SystemUITests
Change-Id: Ibf472b30a5210a6663bd43c20b8d4c1e6930779b
parent 933072bd
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManagerImpl;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.pip.phone.PipMenuActivity;
import com.android.systemui.pip.phone.dagger.PipMenuActivityClass;
import com.android.systemui.plugins.qs.QSFactory;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.EnhancedEstimates;
@@ -142,6 +144,13 @@ public abstract class CarSystemUIModule {
                mainHandler, transactionPool).build();
    }

    @Singleton
    @PipMenuActivityClass
    @Provides
    static Class<?> providePipMenuActivityClass() {
        return PipMenuActivity.class;
    }

    @Binds
    abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);

+0 −6
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.fragments.FragmentService;
import com.android.systemui.keyguard.KeyguardSliceProvider;
import com.android.systemui.onehanded.dagger.OneHandedModule;
import com.android.systemui.pip.phone.PipMenuActivity;
import com.android.systemui.pip.phone.dagger.PipModule;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.util.InjectionInflationController;
@@ -133,9 +132,4 @@ public interface SystemUIRootComponent {
     * Member injection into the supplied argument.
     */
    void inject(KeyguardSliceProvider keyguardSliceProvider);

    /**
     * Member injection into the supplied argument.
     */
    void inject(PipMenuActivity pipMenuActivity);
}
+4 −2
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.systemui.pip.BasePipManager;
import com.android.systemui.pip.PipBoundsHandler;
import com.android.systemui.pip.PipSnapAlgorithm;
import com.android.systemui.pip.PipTaskOrganizer;
import com.android.systemui.pip.phone.dagger.PipMenuActivityClass;
import com.android.systemui.shared.recents.IPinnedStackAnimationListener;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.InputConsumerController;
@@ -250,6 +251,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio

    @Inject
    public PipManager(Context context, BroadcastDispatcher broadcastDispatcher,
            @PipMenuActivityClass Class<?> pipMenuActivityClass,
            DisplayController displayController,
            FloatingContentCoordinator floatingContentCoordinator,
            DeviceConfigProxy deviceConfig,
@@ -274,8 +276,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
        mPipTaskOrganizer.registerPipTransitionCallback(this);
        mInputConsumerController = InputConsumerController.getPipInputConsumer();
        mMediaController = new PipMediaController(context, mActivityManager, broadcastDispatcher);
        mMenuController = new PipMenuActivityController(context, mMediaController,
                mInputConsumerController);
        mMenuController = new PipMenuActivityController(context, pipMenuActivityClass,
                mMediaController, mInputConsumerController);
        mTouchHandler = new PipTouchHandler(context, mActivityManager,
                mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer,
                floatingContentCoordinator, deviceConfig, pipSnapAlgorithm, sysUiState);
+15 −14
Original line number Diff line number Diff line
@@ -76,17 +76,15 @@ import android.widget.ImageButton;
import android.widget.LinearLayout;

import com.android.systemui.Interpolators;
import com.android.systemui.SystemUIFactory;
import com.android.wm.shell.R;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.inject.Inject;

/**
 * Translucent activity that gets started on top of a task in PIP to allow the user to control it.
 * TODO(b/150319024): PipMenuActivity will move to a Window
 */
public class PipMenuActivity extends Activity {

@@ -126,19 +124,11 @@ public class PipMenuActivity extends Activity {
    private final List<RemoteAction> mActions = new ArrayList<>();

    private AccessibilityManager mAccessibilityManager;
    private View mViewRoot;
    private Drawable mBackgroundDrawable;
    private View mMenuContainer;
    private LinearLayout mActionsGroup;
    private View mSettingsButton;
    private View mDismissButton;
    private View mResizeHandle;
    private View mTopEndContainer;
    private int mBetweenActionPaddingLand;

    @Inject
    PipMenuIconsAlgorithm mPipMenuIconsAlgorithm;

    private AnimatorSet mMenuContainerAnimator;

    private ValueAnimator.AnimatorUpdateListener mMenuBgUpdateListener =
@@ -193,6 +183,9 @@ public class PipMenuActivity extends Activity {
                    break;
                }
                case MESSAGE_MENU_EXPANDED : {
                    if (mMenuContainerAnimator == null) {
                        return;
                    }
                    mMenuContainerAnimator.setStartDelay(MENU_SHOW_ON_EXPAND_START_DELAY);
                    mMenuContainerAnimator.start();
                    break;
@@ -202,6 +195,9 @@ public class PipMenuActivity extends Activity {
                    break;
                }
                case MESSAGE_UPDATE_MENU_LAYOUT: {
                    if (mPipMenuIconsAlgorithm == null) {
                        return;
                    }
                    final Rect bounds = (Rect) msg.obj;
                    mPipMenuIconsAlgorithm.onBoundsChanged(bounds);
                    break;
@@ -214,6 +210,13 @@ public class PipMenuActivity extends Activity {

    private final Runnable mFinishRunnable = this::hideMenu;

    protected View mViewRoot;
    protected View mSettingsButton;
    protected View mDismissButton;
    protected View mResizeHandle;
    protected View mTopEndContainer;
    protected PipMenuIconsAlgorithm mPipMenuIconsAlgorithm;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        // Set the flags to allow us to watch for outside touches and also hide the menu and start
@@ -222,8 +225,6 @@ public class PipMenuActivity extends Activity {

        super.onCreate(savedInstanceState);

        SystemUIFactory.getInstance().getRootComponent().inject(this);

        setContentView(R.layout.pip_menu_activity);

        mAccessibilityManager = getSystemService(AccessibilityManager.class);
@@ -254,7 +255,7 @@ public class PipMenuActivity extends Activity {
        mActionsGroup = findViewById(R.id.actions_group);
        mBetweenActionPaddingLand = getResources().getDimensionPixelSize(
                R.dimen.pip_between_action_padding_land);

        mPipMenuIconsAlgorithm = new PipMenuIconsAlgorithm(this.getApplicationContext());
        mPipMenuIconsAlgorithm.bindViews((ViewGroup) mViewRoot, (ViewGroup) mTopEndContainer,
                mResizeHandle, mSettingsButton, mDismissButton);
        updateFromIntent(getIntent());
+7 −3
Original line number Diff line number Diff line
@@ -110,6 +110,8 @@ public class PipMenuActivityController {
        void onPipShowMenu();
    }

    /** TODO(b/150319024): PipMenuActivity will move to a Window */
    private Class<?> mPipMenuActivityClass;
    private Context mContext;
    private PipMediaController mMediaController;
    private InputConsumerController mInputConsumerController;
@@ -185,11 +187,13 @@ public class PipMenuActivityController {
        }
    };

    public PipMenuActivityController(Context context,
            PipMediaController mediaController, InputConsumerController inputConsumerController) {
    public PipMenuActivityController(Context context, Class<?> pipMenuActivityClass,
            PipMediaController mediaController, InputConsumerController inputConsumerController
    ) {
        mContext = context;
        mMediaController = mediaController;
        mInputConsumerController = inputConsumerController;
        mPipMenuActivityClass = pipMenuActivityClass;
    }

    public boolean isMenuActivityVisible() {
@@ -454,7 +458,7 @@ public class PipMenuActivityController {
                    WINDOWING_MODE_PINNED, ACTIVITY_TYPE_UNDEFINED);
            if (pinnedStackInfo != null && pinnedStackInfo.taskIds != null &&
                    pinnedStackInfo.taskIds.length > 0) {
                Intent intent = new Intent(mContext, PipMenuActivity.class);
                Intent intent = new Intent(mContext, mPipMenuActivityClass);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra(EXTRA_CONTROLLER_MESSENGER, mMessenger);
                intent.putExtra(EXTRA_ACTIONS, resolveMenuActions());
Loading