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

Commit b4e6d721 authored by Sunny Goyal's avatar Sunny Goyal Committed by Android (Google) Code Review
Browse files

Merge "Chaning some methods to return result directly instead of posting it on a callback"

parents 7466c851 dfa81f46
Loading
Loading
Loading
Loading
+30 −61
Original line number Diff line number Diff line
@@ -20,10 +20,6 @@ import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED;
import static android.app.ActivityManager.LOCK_TASK_MODE_NONE;
import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED;
import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;

import android.annotation.NonNull;
import android.app.Activity;
@@ -58,7 +54,6 @@ import android.view.RemoteAnimationTarget;

import com.android.internal.app.IVoiceInteractionManagerService;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.Task.TaskKey;
import com.android.systemui.shared.recents.model.ThumbnailData;

import java.util.ArrayList;
@@ -226,6 +221,22 @@ public class ActivityManagerWrapper {
    public void startRecentsActivity(Intent intent, long eventTime,
            final RecentsAnimationListener animationHandler, final Consumer<Boolean> resultCallback,
            Handler resultCallbackHandler) {
        boolean result = startRecentsActivity(intent, eventTime, animationHandler);
        if (resultCallback != null) {
            resultCallbackHandler.post(new Runnable() {
                @Override
                public void run() {
                    resultCallback.accept(result);
                }
            });
        }
    }

    /**
     * Starts the recents activity. The caller should manage the thread on which this is called.
     */
    public boolean startRecentsActivity(
            Intent intent, long eventTime, RecentsAnimationListener animationHandler) {
        try {
            IRecentsAnimationRunner runner = null;
            if (animationHandler != null) {
@@ -257,23 +268,9 @@ public class ActivityManagerWrapper {
                };
            }
            ActivityTaskManager.getService().startRecentsActivity(intent, eventTime, runner);
            if (resultCallback != null) {
                resultCallbackHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        resultCallback.accept(true);
                    }
                });
            }
            return true;
        } catch (Exception e) {
            if (resultCallback != null) {
                resultCallbackHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        resultCallback.accept(false);
                    }
                });
            }
            return false;
        }
    }

@@ -288,61 +285,33 @@ public class ActivityManagerWrapper {
        }
    }

    /**
     * Starts a task from Recents.
     *
     * @see {@link #startActivityFromRecentsAsync(TaskKey, ActivityOptions, int, int, Consumer, Handler)}
     */
    public void startActivityFromRecentsAsync(Task.TaskKey taskKey, ActivityOptions options,
            Consumer<Boolean> resultCallback, Handler resultCallbackHandler) {
        startActivityFromRecentsAsync(taskKey, options, WINDOWING_MODE_UNDEFINED,
                ACTIVITY_TYPE_UNDEFINED, resultCallback, resultCallbackHandler);
    }

    /**
     * Starts a task from Recents.
     *
     * @param resultCallback The result success callback
     * @param resultCallbackHandler The handler to receive the result callback
     */
    public void startActivityFromRecentsAsync(final Task.TaskKey taskKey, ActivityOptions options,
            int windowingMode, int activityType, final Consumer<Boolean> resultCallback,
            final Handler resultCallbackHandler) {
        if (taskKey.windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
            // We show non-visible docked tasks in Recents, but we always want to launch
            // them in the fullscreen stack.
            if (options == null) {
                options = ActivityOptions.makeBasic();
            }
            options.setLaunchWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
        } else if (windowingMode != WINDOWING_MODE_UNDEFINED
                || activityType != ACTIVITY_TYPE_UNDEFINED) {
            if (options == null) {
                options = ActivityOptions.makeBasic();
            }
            options.setLaunchWindowingMode(windowingMode);
            options.setLaunchActivityType(activityType);
        }
        final ActivityOptions finalOptions = options;


        boolean result = false;
        try {
            result = startActivityFromRecents(taskKey.id, finalOptions);
        } catch (Exception e) {
            // Fall through
        }
        final boolean finalResult = result;
    public void startActivityFromRecentsAsync(Task.TaskKey taskKey, ActivityOptions options,
            Consumer<Boolean> resultCallback, Handler resultCallbackHandler) {
        final boolean result = startActivityFromRecents(taskKey, options);
        if (resultCallback != null) {
            resultCallbackHandler.post(new Runnable() {
                @Override
                public void run() {
                    resultCallback.accept(finalResult);
                    resultCallback.accept(result);
                }
            });
        }
    }

    /**
     * Starts a task from Recents synchronously.
     */
    public boolean startActivityFromRecents(Task.TaskKey taskKey, ActivityOptions options) {
        ActivityOptionsCompat.addTaskInfo(options, taskKey);
        return startActivityFromRecents(taskKey.id, options);
    }

    /**
     * Starts a task from Recents synchronously.
     */
+13 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import android.app.ActivityOptions;
import android.content.Context;
import android.os.Handler;

import com.android.systemui.shared.recents.model.Task;

/**
 * Wrapper around internal ActivityOptions creation.
 */
@@ -94,4 +96,15 @@ public abstract class ActivityOptionsCompat {
        opts.setSourceInfo(ActivityOptions.SourceInfo.TYPE_LAUNCHER, uptimeMillis);
        return opts;
    }

    /**
     * Sets Task specific information to the activity options
     */
    public static void addTaskInfo(ActivityOptions opts, Task.TaskKey taskKey) {
        if (taskKey.windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
            // We show non-visible docked tasks in Recents, but we always want to launch
            // them in the fullscreen stack.
            opts.setLaunchWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
        }
    }
}
+0 −28
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.systemui.shared.system;

import android.graphics.Bitmap;
import android.os.Bundle;

/**
 * Abstract class for assist data receivers.
 */
public abstract class AssistDataReceiver {
    public void onHandleAssistData(Bundle resultData) {}
    public void onHandleAssistScreenshot(Bitmap screenshot) {}
}
+0 −34
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 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.systemui.shared.system;

import android.content.Context;

/**
 * Wraps a context to expose some methods for launcher to call.
 */
public class ContextCompat {
    private final Context mWrapped;

    public ContextCompat(Context context) {
        mWrapped = context;
    }

    public int getUserId() {
        return mWrapped.getUserId();
    }
}