You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.2 KiB

/*
* 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;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
class Dedup {
CountDownLatch latch;
Future future;
// only one report should be seen
@UiThread
void onUiThreadBad() throws InterruptedException, ExecutionException {
callMethodWithMultipleBlocksBad();
}
// three reports are expected
@UiThread
void callMethodWithMultipleBlocksBad() throws InterruptedException, ExecutionException {
future.get();
latch.await();
future.get();
}
Object lockA, lockB;
// deadlock should be reported between oneWayBad and anotherWayBad only
void oneWayBad() {
synchronized (lockA) {
synchronized (lockB) {
}
}
}
void anotherWayBad() {
synchronized (lockB) {
synchronized (lockA) {
}
}
}
// this is creating a longer trace than anotherWayBad, so should be suppressed
void thirdLongerWayBad() {
anotherWayBad();
}
}