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

Commit 31c17e40 authored by Naomi Musgrave's avatar Naomi Musgrave Committed by Android (Google) Code Review
Browse files

Merge "Revert "Add shell command for edge resize handle size"" into main

parents 4938d5f5 9639cab0
Loading
Loading
Loading
Loading
+3 −18
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ import com.android.wm.shell.dagger.back.ShellBackAnimationModule;
import com.android.wm.shell.dagger.pip.PipModule;
import com.android.wm.shell.desktopmode.DesktopModeEventLogger;
import com.android.wm.shell.desktopmode.DesktopModeLoggerTransitionObserver;
import com.android.wm.shell.desktopmode.DesktopModeShellCommandHandler;
import com.android.wm.shell.desktopmode.DesktopModeTaskRepository;
import com.android.wm.shell.desktopmode.DesktopTasksController;
import com.android.wm.shell.desktopmode.DesktopTasksLimiter;
@@ -534,7 +533,8 @@ public abstract class WMShellModule {
                exitDesktopTransitionHandler, toggleResizeDesktopTaskTransitionHandler,
                dragToDesktopTransitionHandler, desktopModeTaskRepository,
                desktopModeLoggerTransitionObserver, launchAdjacentController,
                recentsTransitionHandler, multiInstanceHelper, mainExecutor, desktopTasksLimiter);
                recentsTransitionHandler, multiInstanceHelper,
                mainExecutor, desktopTasksLimiter);
    }

    @WMSingleton
@@ -633,20 +633,6 @@ public abstract class WMShellModule {
        return new ResizeHandleSizeRepository();
    }

    @WMSingleton
    @Provides
    static Optional<DesktopModeShellCommandHandler> provideDesktopModeShellCommandHandler(
            ShellInit shellInit, ShellCommandHandler shellCommandHandler,
            Optional<DesktopTasksController> tasksController,
            ResizeHandleSizeRepository resizeHandleSizeRepository) {
        if (!DesktopModeStatus.isEnabled()) {
            return Optional.empty();
        }
        return Optional.of(
                new DesktopModeShellCommandHandler(shellInit, shellCommandHandler, tasksController,
                        resizeHandleSizeRepository));
    }

    //
    // Drag and drop
    //
@@ -687,8 +673,7 @@ public abstract class WMShellModule {
    @Provides
    static Object provideIndependentShellComponentsToCreate(
            DragAndDropController dragAndDropController,
            Optional<DesktopTasksTransitionObserver> desktopTasksTransitionObserverOptional,
            Optional<DesktopModeShellCommandHandler> desktopModeShellCommandHandler) {
            Optional<DesktopTasksTransitionObserver> desktopTasksTransitionObserverOptional) {
        return new Object();
    }
}
+16 −141
Original line number Diff line number Diff line
@@ -16,45 +16,15 @@

package com.android.wm.shell.desktopmode

import android.content.res.Resources
import android.util.TypedValue
import android.util.TypedValue.COMPLEX_UNIT_DIP
import android.window.WindowContainerTransaction
import com.android.wm.shell.protolog.ShellProtoLogGroup
import com.android.wm.shell.shared.DesktopModeStatus
import com.android.wm.shell.sysui.ShellCommandHandler
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.util.KtProtoLog
import com.android.wm.shell.windowdecor.ResizeHandleSizeRepository
import java.io.PrintWriter
import java.util.Optional

/**
 * Handles the shell commands for desktop windowing mode.
 *
 * <p>Use with {@code adb shell dumpsys activity service SystemUIService WMShell desktopmode ...}.
 * Handles the shell commands for the DesktopTasksController.
 */
class DesktopModeShellCommandHandler(
    shellInit: ShellInit,
    private val shellCommandHandler: ShellCommandHandler,
    private val controller: Optional<DesktopTasksController>,
    private val resizeHandleSizeRepository: ResizeHandleSizeRepository
) : ShellCommandHandler.ShellCommandActionHandler {

    private var resources: Resources? = null

    init {
        if (DesktopModeStatus.isEnabled()) {
            shellInit.addInitCallback(::onInit, this)
        }
    }

    private fun onInit() {
        KtProtoLog.d(ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
            "Initialize DesktopModeShellCommandHandler")
        shellCommandHandler.addCommandCallback("desktopmode", this, this)
        resources = if (controller.isPresent) controller.get().context.resources else null
    }
class DesktopModeShellCommandHandler(private val controller: DesktopTasksController) :
    ShellCommandHandler.ShellCommandActionHandler {

    override fun onShellCommand(args: Array<String>, pw: PrintWriter): Boolean {
        return when (args[0]) {
@@ -74,9 +44,6 @@ class DesktopModeShellCommandHandler(
                    true
                }
            }
            "edgeResizeHandle" -> {
                return updateEdgeResizeHandle(args, pw)
            }
            else -> {
                pw.println("Invalid command: ${args[0]}")
                false
@@ -91,19 +58,14 @@ class DesktopModeShellCommandHandler(
            return false
        }

        val taskId =
            try {
        val taskId = try {
            args[1].toInt()
        } catch (e: NumberFormatException) {
            pw.println("Error: task id should be an integer")
            return false
        }

        return if (controller.isPresent) {
            controller.get().moveToDesktop(taskId, WindowContainerTransaction())
        } else {
            false
        }
        return controller.moveToDesktop(taskId, WindowContainerTransaction())
    }

    private fun runMoveToNextDisplay(args: Array<String>, pw: PrintWriter): Boolean {
@@ -113,92 +75,14 @@ class DesktopModeShellCommandHandler(
            return false
        }

        val taskId =
            try {
        val taskId = try {
            args[1].toInt()
        } catch (e: NumberFormatException) {
            pw.println("Error: task id should be an integer")
            return false
        }

        if (controller.isPresent) {
            controller.get().moveToNextDisplay(taskId)
            return true
        } else {
            return false
        }
    }

    private fun updateEdgeResizeHandle(args: Array<String>, pw: PrintWriter): Boolean {
        if (args.size < 2) {
            // First argument is the action name.
            pw.println("Error: edge resize action should be provided as arguments [set|reset|get]")
            return false
        }
        when (val action = args[1]) {
            "set" -> {
                if (resources == null) {
                    pw.println("Error: unable to convert given dp to pixel units")
                    return false
                }
                if (args.size < 3) {
                    pw.println(
                        "Error: edge resize size should be provided as argument " +
                            "<positive integer>"
                    )
                    return false
                }
                val newEdgeSizeDp =
                    try {
                        args[2].toFloat()
                    } catch (e: NumberFormatException) {
                        pw.println("Error: edge resize width should be an integer")
                        return false
                    }
                if (newEdgeSizeDp <= 0) {
                    pw.println("Error: edge resize width should be a positive integer")
                    return false
                }
                val newEdgeSizePixels =
                    TypedValue.convertDimensionToPixels(
                            COMPLEX_UNIT_DIP,
                            newEdgeSizeDp,
                            resources!!.displayMetrics
                        )
                        .toInt()
                resizeHandleSizeRepository.setResizeEdgeHandlePixels(newEdgeSizePixels)
                pw.println(
                    "Handling set request for edge handle size of $newEdgeSizeDp dp " +
                        "(or $newEdgeSizePixels px)"
                )
            }
            "reset" -> {
                resizeHandleSizeRepository.resetResizeEdgeHandlePixels()
                pw.println("Handling reset request for edge handle size")
            }
            "get" -> {
                if (resources == null) {
                    pw.println("Error: unable to retrieve edge handle size")
                    return false
                }
                val edgeSizePixels = resizeHandleSizeRepository
                                .getResizeEdgeHandlePixels(resources!!)
                                .toFloat()
                val edgeSizeDp =
                    TypedValue.deriveDimension(
                        COMPLEX_UNIT_DIP,
                        edgeSizePixels,
                        resources!!.displayMetrics
                    )
                pw.println("Current edge handle size is $edgeSizeDp dp (or $edgeSizePixels px)")
            }
            else -> {
                pw.println(
                    "Error: must provide a valid argument (set, reset, or get); received " + action
                )
                return false
            }
        }
        controller.moveToNextDisplay(taskId)
        return true
    }

@@ -207,14 +91,5 @@ class DesktopModeShellCommandHandler(
        pw.println("$prefix  Move a task with given id to desktop mode.")
        pw.println("$prefix moveToNextDisplay <taskId> ")
        pw.println("$prefix  Move a task with given id to next display.")
        pw.println("$prefix edgeResizeHandle set <positive integer>")
        pw.println("$prefix  Sets the width of the handle, in dp, to use for edge resizing.")
        pw.println("$prefix edgeResizeHandle reset")
        pw.println("$prefix  Restore the original width of the handle to use for edge resizing.")
        pw.println("$prefix edgeResizeHandle get")
        pw.println(
            "$prefix  Retrieves the current width, in dp, of the handle to use for edge " +
                "resizing."
        )
    }
}
 No newline at end of file
+7 −0
Original line number Diff line number Diff line
@@ -124,6 +124,8 @@ class DesktopTasksController(

    private val desktopMode: DesktopModeImpl
    private var visualIndicator: DesktopModeVisualIndicator? = null
    private val desktopModeShellCommandHandler: DesktopModeShellCommandHandler =
        DesktopModeShellCommandHandler(this)
    private val mOnAnimationFinishedCallback = Consumer<SurfaceControl.Transaction> {
        t: SurfaceControl.Transaction ->
        visualIndicator?.releaseVisualIndicator(t)
@@ -176,6 +178,11 @@ class DesktopTasksController(
    private fun onInit() {
        KtProtoLog.d(WM_SHELL_DESKTOP_MODE, "Initialize DesktopTasksController")
        shellCommandHandler.addDumpCallback(this::dump, this)
        shellCommandHandler.addCommandCallback(
            "desktopmode",
            desktopModeShellCommandHandler,
            this
        )
        shellController.addExternalInterface(
            ShellSharedConstants.KEY_EXTRA_SHELL_DESKTOP_MODE,
            { createExternalInterface() },
+1 −1
Original line number Diff line number Diff line
@@ -93,7 +93,6 @@ import com.android.wm.shell.transition.Transitions.TRANSIT_EXIT_DESKTOP_MODE
import com.android.wm.shell.transition.Transitions.TransitionHandler
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import java.util.Optional
import org.junit.After
import org.junit.Assume.assumeTrue
import org.junit.Before
@@ -116,6 +115,7 @@ import org.mockito.kotlin.anyOrNull
import org.mockito.kotlin.atLeastOnce
import org.mockito.kotlin.capture
import org.mockito.quality.Strictness
import java.util.Optional
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
import org.mockito.Mockito.`when` as whenever