10b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi/*
20b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * Copyright (C) 2016 The Android Open Source Project
30b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi *
40b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License");
50b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * you may not use this file except in compliance with the License.
60b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * You may obtain a copy of the License at
70b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi *
80b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi *      http://www.apache.org/licenses/LICENSE-2.0
90b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi *
100b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * Unless required by applicable law or agreed to in writing, software
110b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS,
120b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * See the License for the specific language governing permissions and
140b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * limitations under the License
150b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi */
160b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi
170b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggipackage com.android.server.wm;
180b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi
190b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggiimport static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
200b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggiimport static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
210b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggiimport static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
220b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggiimport static android.app.ActivityManager.StackId.HOME_STACK_ID;
230b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi
240b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi/**
250b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi * Describes the mode in which a window is drag resizing.
260b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi */
270b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggiclass DragResizeMode {
280b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi
290b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi    /**
300b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi     * Freeform mode: Client surface is fullscreen, and client is responsible to draw window at
310b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi     * the correct position.
320b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi     */
330b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi    static final int DRAG_RESIZE_MODE_FREEFORM = 0;
340b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi
350b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi    /**
360b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi     * Mode for resizing the docked (and adjacent) stack: Client surface is fullscreen, but window
370b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi     * is drawn at (0, 0), window manager is responsible for positioning the surface when draging.
380b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi     */
390b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi    static final int DRAG_RESIZE_MODE_DOCKED_DIVIDER = 1;
400b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi
410b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi    static boolean isModeAllowedForStack(int stackId, int mode) {
420b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi        switch (mode) {
430b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi            case DRAG_RESIZE_MODE_FREEFORM:
440b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi                return stackId == FREEFORM_WORKSPACE_STACK_ID;
450b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi            case DRAG_RESIZE_MODE_DOCKED_DIVIDER:
460b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi                return stackId == DOCKED_STACK_ID
470b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi                        || stackId == FULLSCREEN_WORKSPACE_STACK_ID
480b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi                        || stackId == HOME_STACK_ID;
490b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi            default:
500b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi                return false;
510b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi        }
520b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi    }
530b46f3c72c324bc9b8890ed9b81951bbeec70fddJorim Jaggi}
54