blob: 097388261a2d9db2db95043bba774bb0f7d2311e [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.wm;
import android.annotation.SystemApi;
import android.app.ActivityOptions;
import android.car.builtin.annotation.PlatformVersion;
import android.content.pm.ActivityInfo;
import android.view.WindowLayout;
import com.android.annotation.AddedIn;
/**
* Wrapper of the parameters of {@code LaunchParamsController.LaunchParamsModifier.onCalculate()}
* @hide
*/
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public final class CalculateParams {
private TaskWrapper mTask;
private WindowLayoutWrapper mLayout;
private ActivityRecordWrapper mActivity;
private ActivityRecordWrapper mSource;
private ActivityOptionsWrapper mOptions;
private RequestWrapper mRequest;
private int mPhase;
private LaunchParamsWrapper mCurrentParams;
private LaunchParamsWrapper mOutParams;
private boolean mSupportsMultiDisplay;
private CalculateParams() {}
/** @hide */
@AddedIn(PlatformVersion.TIRAMISU_0)
public static CalculateParams create(Task task, ActivityInfo.WindowLayout layout,
ActivityRecord actvity, ActivityRecord source,
ActivityOptions options, ActivityStarter.Request request, int phase,
LaunchParamsController.LaunchParams currentParams,
LaunchParamsController.LaunchParams outParms,
boolean supportsMultiDisplay) {
CalculateParams params = new CalculateParams();
params.mTask = TaskWrapper.create(task);
params.mLayout = WindowLayoutWrapper.create(layout);
params.mActivity = ActivityRecordWrapper.create(actvity);
params.mSource = ActivityRecordWrapper.create(source);
params.mOptions = ActivityOptionsWrapper.create(options);
params.mRequest = RequestWrapper.create(request);
params.mPhase = phase;
params.mCurrentParams = LaunchParamsWrapper.create(currentParams);
params.mOutParams = LaunchParamsWrapper.create(outParms);
params.mSupportsMultiDisplay = supportsMultiDisplay;
return params;
}
/**
* Gets the {@link TaskWrapper} currently being positioned.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public TaskWrapper getTask() {
return mTask;
}
/**
* Gets the specified {@link WindowLayoutWrapper}.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public WindowLayoutWrapper getWindowLayout() {
return mLayout;
}
/**
* Gets the {@link ActivityRecordWrapper} currently being positioned.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public ActivityRecordWrapper getActivity() {
return mActivity;
}
/**
* Gets the {@link ActivityRecordWrapper} from which activity was started from.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public ActivityRecordWrapper getSource() {
return mSource;
}
/**
* Gets the {@link ActivityOptionsWrapper} specified for the activity.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public ActivityOptionsWrapper getOptions() {
return mOptions;
}
/**
* Gets the optional {@link RequestWrapper} from the activity starter.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public RequestWrapper getRequest() {
return mRequest;
}
/**
* Gets the {@link LaunchParamsController.LaunchParamsModifier.Phase} that the resolution should
* finish.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public int getPhase() {
return mPhase;
}
/**
* Gets the current {@link LaunchParamsWrapper}.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public LaunchParamsWrapper getCurrentParams() {
return mCurrentParams;
}
/**
* Gets the resulting {@link LaunchParamsWrapper}.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public LaunchParamsWrapper getOutParams() {
return mOutParams;
}
/**
* Returns whether the current system supports the multiple display.
*/
@AddedIn(PlatformVersion.TIRAMISU_0)
public boolean supportsMultiDisplay() {
return mSupportsMultiDisplay;
}
}