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

Commit 9e7ead7b authored by Holly Jiuyu Sun's avatar Holly Jiuyu Sun
Browse files

Move AsyncResultCallback from Euicc to platform.

AsyncResultCallback is a callback parameter for APIs in EuiccCard to
return return or exception.

Note: In Patchset 1, all the files are copied from LPA without any
changes. The diff can be shown against Patchset 1.

Bug: 38206971
Test: unit test
Change-Id: I26d1f0a7b7977a56413720e678109266f04771b6
parent 822d1fd0
Loading
Loading
Loading
Loading
+46 −0
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.internal.telephony.uicc.euicc.async;

/**
 * Class to deliver the returned value from an asynchronous call. Either {@link #onResult(Result)}
 * or {@link #onException(Throwable)} will be called. You can create an anonymous subclass and
 * override these methods to handle the result or the throwable from an asynchronous call, for
 * example:
 *
 * <pre>
 *     doSomethingAsync(
 *             new AsyncResultCallback&lt;Result&gt;() {
 *                 void onResult(Result r) {
 *                     Log.i("Got the result: %s", r.toString());
 *                 }
 *
 *                 void onException(Throwable e) {...}
 *             });
 * <pre>
 *
 * @param <Result> The returned value of the asynchronous call.
 * @hide
 */
public abstract class AsyncResultCallback<Result> {

    /** This will be called when the result is returned. */
    public abstract void onResult(Result result);

    /** This will be called when any exception is thrown. */
    public void onException(Throwable e) {}
}
+71 −0
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.internal.telephony.uicc.euicc.async;

import android.annotation.Nullable;
import android.os.Handler;

/**
 * Helper on {@link AsyncResultCallback}.
 *
 * @hide
 */
public final class AsyncResultHelper {
    /**
     * Calls the {@code callback} to return the {@code result} object. The {@code callback} will be
     * run in the {@code handler}. If the {@code handler} is null, the callback will be called
     * immediately.
     *
     * @param <T> Result type.
     */
    public static <T> void returnResult(
            final T result, final AsyncResultCallback<T> callback, @Nullable Handler handler) {
        if (handler == null) {
            callback.onResult(result);
        } else {
            handler.post(
                    new Runnable() {
                        @Override
                        public void run() {
                            callback.onResult(result);
                        }
                    });
        }
    }

    /**
     * Calls the {@code callback} to return the thrown {@code e} exception. The {@code callback}
     * will be run in the {@code handler}. If the {@code handler} is null, the callback will be
     * called immediately.
     */
    public static void throwException(
            final Throwable e, final AsyncResultCallback<?> callback, @Nullable Handler handler) {
        if (handler == null) {
            callback.onException(e);
        } else {
            handler.post(
                    new Runnable() {
                        @Override
                        public void run() {
                            callback.onException(e);
                        }
                    });
        }
    }

    private AsyncResultHelper() {}
}