/*
 * Copyright (C) 2023 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.annotation.UserIdInt;
import android.content.Intent;
import android.content.pm.ActivityInfo;

/**
 * A wrapper over {@link com.android.server.wm.ActivityInterceptorCallback.ActivityInterceptorInfo}.
 *
 * @hide
 */
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public final class ActivityInterceptorInfoWrapper {
    private final ActivityInterceptorCallback.ActivityInterceptorInfo mActivityInterceptorInfo;

    private ActivityInterceptorInfoWrapper(
            ActivityInterceptorCallback.ActivityInterceptorInfo interceptorInfo) {
        mActivityInterceptorInfo = interceptorInfo;
    }

    /**
     * Creates an instance of {@link ActivityInterceptorInfoWrapper}.
     *
     * @param interceptorInfo the original interceptorInfo that needs to be wrapped.
     * @hide
     */
    public static ActivityInterceptorInfoWrapper create(
            ActivityInterceptorCallback.ActivityInterceptorInfo interceptorInfo) {
        return new ActivityInterceptorInfoWrapper(interceptorInfo);
    }

    public Intent getIntent() {
        return mActivityInterceptorInfo.getIntent();
    }

    public ActivityInfo getActivityInfo() {
        return mActivityInterceptorInfo.getActivityInfo();
    }

    public ActivityOptionsWrapper getCheckedOptions() {
        return ActivityOptionsWrapper.create(mActivityInterceptorInfo.getCheckedOptions());

    }

    public String getCallingPackage() {
        return mActivityInterceptorInfo.getCallingPackage();
    }

    @UserIdInt
    public int getUserId() {
        return mActivityInterceptorInfo.getUserId();
    }

    public int getCallingUid() {
        int callingUid = mActivityInterceptorInfo.getCallingUid() != -1
                ? mActivityInterceptorInfo.getCallingUid()
                : mActivityInterceptorInfo.getRealCallingUid();
        return callingUid;
    }

    public int getCallingPid() {
        int callingPid = mActivityInterceptorInfo.getCallingPid() != -1
                ? mActivityInterceptorInfo.getCallingPid()
                : mActivityInterceptorInfo.getRealCallingPid();
        return callingPid;
    }
}
