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

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
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -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;
            });
        }
    }
}
+4 −7
Original line number Diff line number Diff line
@@ -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