1/*
2 * Copyright 2014, The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.server.telecom;
18
19import android.os.Looper;
20
21/**
22 * Helper methods to deal with threading related tasks.
23 */
24public final class ThreadUtil {
25    private static final String TAG = ThreadUtil.class.getSimpleName();
26
27    private ThreadUtil() {}
28
29    /** @return whether this method is being called from the main (UI) thread. */
30    public static boolean isOnMainThread() {
31        return Looper.getMainLooper() == Looper.myLooper();
32    }
33
34    /**
35     * Checks that this is being executed on the main thread. If not, a message is logged at
36     * WTF-level priority.
37     */
38    public static void checkOnMainThread() {
39        if (!isOnMainThread()) {
40            Log.wtf(TAG, new IllegalStateException(), "Must be on the main thread!");
41        }
42    }
43
44    /**
45     * Checks that this is not being executed on the main thread. If so, a message is logged at
46     * WTF-level priority.
47     */
48    public static void checkNotOnMainThread() {
49        if (isOnMainThread()) {
50            Log.wtf(TAG, new IllegalStateException(), "Must not be on the main thread!");
51        }
52    }
53}
54