Skip to content
Snippets Groups Projects
Commit 762d0094 authored by Jernej Virag's avatar Jernej Virag Committed by Android (Google) Code Review
Browse files

Merge "Trace dispatches for Lifecycle code" into main

parents 2f439814 ac334303
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,10 @@ package com.android.systemui.keyguard;
import androidx.annotation.NonNull;
import com.android.app.tracing.TraceUtils;
import kotlin.Unit;
import java.util.ArrayList;
import java.util.Objects;
import java.util.function.BiConsumer;
......@@ -28,7 +32,7 @@ import java.util.function.Consumer;
*/
public class Lifecycle<T> {
private ArrayList<T> mObservers = new ArrayList<>();
private final ArrayList<T> mObservers = new ArrayList<>();
public void addObserver(@NonNull T observer) {
mObservers.add(Objects.requireNonNull(observer));
......@@ -40,7 +44,11 @@ public class Lifecycle<T> {
public void dispatch(Consumer<T> consumer) {
for (int i = 0; i < mObservers.size(); i++) {
consumer.accept(mObservers.get(i));
final T observer = mObservers.get(i);
TraceUtils.trace(() -> "dispatch#" + consumer.toString(), () -> {
consumer.accept(observer);
return Unit.INSTANCE;
});
}
}
......@@ -49,7 +57,11 @@ public class Lifecycle<T> {
*/
public <U> void dispatch(BiConsumer<T, U> biConsumer, U arg) {
for (int i = 0; i < mObservers.size(); i++) {
biConsumer.accept(mObservers.get(i), arg);
final T observer = mObservers.get(i);
TraceUtils.trace(() -> "dispatch#" + biConsumer.toString(), () -> {
biConsumer.accept(observer, arg);
return Unit.INSTANCE;
});
}
}
}
......@@ -16,8 +16,7 @@
package com.android.systemui.keyguard;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static com.google.common.truth.Truth.assertThat;
import android.testing.AndroidTestingRunner;
......@@ -52,8 +51,7 @@ public class LifecycleTest extends SysuiTestCase {
mLifecycle.addObserver(mObj1);
mLifecycle.dispatch(mDispatchedObjects::add);
assertTrue(mDispatchedObjects.contains(mObj1));
assertThat(mDispatchedObjects).contains(mObj1);
}
@Test
......@@ -63,7 +61,7 @@ public class LifecycleTest extends SysuiTestCase {
mLifecycle.dispatch(mDispatchedObjects::add);
assertFalse(mDispatchedObjects.contains(mObj1));
assertThat(mDispatchedObjects).isEmpty();
}
@Test
......@@ -73,8 +71,7 @@ public class LifecycleTest extends SysuiTestCase {
mLifecycle.dispatch(mDispatchedObjects::add);
assertTrue(mDispatchedObjects.contains(mObj1));
assertTrue(mDispatchedObjects.contains(mObj2));
assertThat(mDispatchedObjects).containsExactly(mObj1, mObj2);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment