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

Commit 6b00ecd3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Decouple ForcedResizableInfoActivityController from SystemUI"

parents 65ed484e ab8a496b
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -78,6 +78,22 @@ public class Divider extends SystemUI {
                            onUndockingTask();
                        }
                    }

                    @Override
                    public void onActivityForcedResizable(String packageName, int taskId,
                            int reason) {
                        mDividerController.onActivityForcedResizable(packageName, taskId, reason);
                    }

                    @Override
                    public void onActivityDismissingDockedStack() {
                        mDividerController.onActivityDismissingSplitScreen();
                    }

                    @Override
                    public void onActivityLaunchOnSecondaryDisplayFailed() {
                        mDividerController.onActivityLaunchOnSecondaryDisplayFailed();
                    }
                }
        );
    }
+20 −16
Original line number Diff line number Diff line
@@ -50,8 +50,7 @@ import java.util.function.Consumer;
/**
 * Controls the docked stack divider.
 */
public class DividerController implements DividerView.DividerCallbacks,
        DisplayController.OnDisplaysChangedListener {
public class DividerController implements DisplayController.OnDisplaysChangedListener {
    static final boolean DEBUG = false;
    private static final String TAG = "Divider";

@@ -257,8 +256,8 @@ public class DividerController implements DividerView.DividerCallbacks,
        mView = (DividerView)
                LayoutInflater.from(dctx).inflate(R.layout.docked_stack_divider, null);
        DisplayLayout displayLayout = mDisplayController.getDisplayLayout(mContext.getDisplayId());
        mView.injectDependencies(mWindowManager, mDividerState, this, mSplits, mSplitLayout,
                mImePositionProcessor, mWindowManagerProxy);
        mView.injectDependencies(mWindowManager, mDividerState, mForcedResizableController, mSplits,
                mSplitLayout, mImePositionProcessor, mWindowManagerProxy);
        mView.setVisibility(mVisible ? View.VISIBLE : View.INVISIBLE);
        mView.setMinimizedDockStack(mMinimized, mHomeStackResizable, null /* transaction */);
        final int size = dctx.getResources().getDimensionPixelSize(
@@ -397,6 +396,21 @@ public class DividerController implements DividerView.DividerCallbacks,
        }
    }

    /** Called when there's an activity forced resizable. */
    public void onActivityForcedResizable(String packageName, int taskId, int reason) {
        mForcedResizableController.activityForcedResizable(packageName, taskId, reason);
    }

    /** Called when there's an activity dismissing split screen. */
    public void onActivityDismissingSplitScreen() {
        mForcedResizableController.activityDismissingSplitScreen();
    }

    /** Called when there's an activity launch on secondary display failed. */
    public void onActivityLaunchOnSecondaryDisplayFailed() {
        mForcedResizableController.activityLaunchOnSecondaryDisplayFailed();
    }

    /** Called when there's a task undocking. */
    public void onUndockingTask() {
        if (mView != null) {
@@ -426,17 +440,7 @@ public class DividerController implements DividerView.DividerCallbacks,
        mForcedResizableController.onAppTransitionFinished();
    }

    @Override
    public void onDraggingStart() {
        mForcedResizableController.onDraggingStart();
    }

    @Override
    public void onDraggingEnd() {
        mForcedResizableController.onDraggingEnd();
    }

    /** Dumps current status of Divider.*/
    /** Dumps current status of Split Screen. */
    public void dump(PrintWriter pw) {
        pw.print("  mVisible="); pw.println(mVisible);
        pw.print("  mMinimized="); pw.println(mMinimized);
+15 −38
Original line number Diff line number Diff line
@@ -28,15 +28,13 @@ import android.util.ArraySet;
import android.widget.Toast;

import com.android.systemui.R;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;

import java.util.function.Consumer;

/**
 * Controller that decides when to show the {@link ForcedResizableInfoActivity}.
 */
public class ForcedResizableInfoActivityController {
final class ForcedResizableInfoActivityController implements DividerView.DividerCallbacks {

    private static final String SELF_PACKAGE_NAME = "com.android.systemui";

@@ -47,12 +45,7 @@ public class ForcedResizableInfoActivityController {
    private final ArraySet<String> mPackagesShownInSession = new ArraySet<>();
    private boolean mDividerDragging;

    private final Runnable mTimeoutRunnable = new Runnable() {
        @Override
        public void run() {
            showPending();
        }
    };
    private final Runnable mTimeoutRunnable = this::showPending;

    private final Consumer<Boolean> mDockedStackExistsListener = exists -> {
        if (!exists) {
@@ -78,44 +71,28 @@ public class ForcedResizableInfoActivityController {
    public ForcedResizableInfoActivityController(Context context,
            DividerController dividerController) {
        mContext = context;
        ActivityManagerWrapper.getInstance().registerTaskStackListener(
                new TaskStackChangeListener() {
                    @Override
                    public void onActivityForcedResizable(String packageName, int taskId,
                            int reason) {
                        activityForcedResizable(packageName, taskId, reason);
        dividerController.registerInSplitScreenListener(mDockedStackExistsListener);
    }

    @Override
                    public void onActivityDismissingDockedStack() {
                        activityDismissingDockedStack();
    public void onDraggingStart() {
        mDividerDragging = true;
        mHandler.removeCallbacks(mTimeoutRunnable);
    }

    @Override
                    public void onActivityLaunchOnSecondaryDisplayFailed() {
                        activityLaunchOnSecondaryDisplayFailed();
                    }
                });
        dividerController.registerInSplitScreenListener(mDockedStackExistsListener);
    public void onDraggingEnd() {
        mDividerDragging = false;
        showPending();
    }

    public void onAppTransitionFinished() {
    void onAppTransitionFinished() {
        if (!mDividerDragging) {
            showPending();
        }
    }

    void onDraggingStart() {
        mDividerDragging = true;
        mHandler.removeCallbacks(mTimeoutRunnable);
    }

    void onDraggingEnd() {
        mDividerDragging = false;
        showPending();
    }

    private void activityForcedResizable(String packageName, int taskId, int reason) {
    void activityForcedResizable(String packageName, int taskId, int reason) {
        if (debounce(packageName)) {
            return;
        }
@@ -123,12 +100,12 @@ public class ForcedResizableInfoActivityController {
        postTimeout();
    }

    private void activityDismissingDockedStack() {
    void activityDismissingSplitScreen() {
        Toast.makeText(mContext, R.string.dock_non_resizeble_failed_to_dock_text,
                Toast.LENGTH_SHORT).show();
    }

    private void activityLaunchOnSecondaryDisplayFailed() {
    void activityLaunchOnSecondaryDisplayFailed() {
        Toast.makeText(mContext, R.string.activity_launch_on_secondary_display_failed_text,
                Toast.LENGTH_SHORT).show();
    }