Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public interface ReloadListener {
void onReload();
}

private static final ReloadListener NO_OP_RELOAD_LISTENER = () -> {};

private final BroadcastReceiver reloadReceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
Expand All @@ -28,7 +30,7 @@ public void onReceive(final Context context, final Intent intent) {
private final DevSupportManager devSupportManager;

private long firstRTimestamp = 0;
private ReloadListener reloadListener = () -> {};
private ReloadListener reloadListener = NO_OP_RELOAD_LISTENER;

JsDevReloadHandler(DevSupportManager devSupportManager) {
this.devSupportManager = devSupportManager;
Expand All @@ -45,7 +47,7 @@ public void setReloadListener(ReloadListener listener) {

public void removeReloadListener(ReloadListener listener) {
if (reloadListener == listener) {
reloadListener = null;
reloadListener = NO_OP_RELOAD_LISTENER;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

public class ReloadHandler extends ReloadHandlerFacade implements JsDevReloadHandler.ReloadListener {

private Runnable onReloadListener = () -> {};
private static final Runnable NO_OP_RELOAD_LISTENER = () -> {};
private Runnable onReloadListener = NO_OP_RELOAD_LISTENER;

public void setOnReloadListener(Runnable onReload) {
this.onReloadListener = onReload;
Expand All @@ -19,6 +20,6 @@ public void onSuccess() {
}

public void destroy() {
onReloadListener = null;
onReloadListener = NO_OP_RELOAD_LISTENER;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.reactnativenavigation.react;

import com.facebook.react.devsupport.interfaces.DevSupportManager;
import com.reactnativenavigation.BaseTest;

import org.junit.Test;
import org.mockito.Mockito;

public class JsDevReloadHandlerTest extends BaseTest {
@Test
public void onSuccess_afterListenerRemovalIsIgnored() {
JsDevReloadHandler.ReloadListener listener =
Mockito.mock(JsDevReloadHandler.ReloadListener.class);
JsDevReloadHandler handler =
new JsDevReloadHandler(Mockito.mock(DevSupportManager.class));
handler.setReloadListener(listener);
handler.removeReloadListener(listener);

handler.onSuccess();

Mockito.verifyNoInteractions(listener);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,14 @@ public void onSuccess_viewsAreDestroyed() {
uut.onSuccess();
Mockito.verify(handler).run();
}

@Test
public void onSuccess_afterDestroyIsIgnored() {
uut.setOnReloadListener(handler);
uut.destroy();

uut.onSuccess();

Mockito.verifyNoInteractions(handler);
}
}