/* * Copyright (c) 2018-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import android.support.annotation.UiThread; class ObjWait { Object z; void waitOnAnyWithoutTimeoutOk() throws InterruptedException { synchronized(z) { z.wait(); } } Object o; @UiThread void waitOnMainWithoutTimeoutBad() throws InterruptedException { synchronized(o) { o.wait(); } } @UiThread void waitOnMainWithExcessiveTimeout1Bad() throws InterruptedException { synchronized(o) { o.wait(5001); } } @UiThread void waitOnMainWithExcessiveTimeout2Bad() throws InterruptedException { synchronized(o) { o.wait(4000, 2000000000); } } Object lock, x; @UiThread void indirectWaitOnMainWithoutTimeoutBad() throws InterruptedException { synchronized(lock) {} } void lockAndWaitOnAnyWithoutTimeoutBad() throws InterruptedException { synchronized(lock) { synchronized(x) { x.wait(); } } } }