From a95cf8aa74945d3206584230936ad87d5268c241 Mon Sep 17 00:00:00 2001 From: Krzysztof Kocel Date: Mon, 26 Aug 2024 10:26:32 +0200 Subject: [PATCH 1/5] fix: null check in ListenerCollection notify method --- .../com/microsoft/playwright/impl/ListenerCollection.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java b/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java index 9564c23d5..1c8fef654 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java @@ -41,7 +41,9 @@ void notify(EventType eventType, T param) { } for (Consumer listener: new ArrayList<>(list)) { - ((Consumer) listener).accept(param); + if (listener != null) { + ((Consumer) listener).accept(param); + } } } From 40a489c3d485172acb7d9ab85cc8c937d1aadef0 Mon Sep 17 00:00:00 2001 From: Krzysztof Kocel Date: Mon, 26 Aug 2024 10:36:06 +0200 Subject: [PATCH 2/5] fix: add test for ListenerCollection --- .../playwright/impl/ListenerCollectionTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java diff --git a/playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java b/playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java new file mode 100644 index 000000000..8c77c133a --- /dev/null +++ b/playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java @@ -0,0 +1,15 @@ +package com.microsoft.playwright.impl; + +import org.junit.jupiter.api.Test; + +class ListenerCollectionTest { + + @Test + void shouldHandleNullListener() { + ListenerCollection listener = new ListenerCollection<>(); + + listener.add(BrowserImpl.EventType.DISCONNECTED, null); + + listener.notify(BrowserImpl.EventType.DISCONNECTED, new Object()); + } +} From efd5df52af16048d24baf4c51213417c1291c5c1 Mon Sep 17 00:00:00 2001 From: Krzysztof Kocel Date: Mon, 26 Aug 2024 20:43:21 +0200 Subject: [PATCH 3/5] do not accept null listeners --- .../com/microsoft/playwright/impl/ListenerCollection.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java b/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java index 1c8fef654..2a10c8fcc 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java @@ -17,6 +17,7 @@ package com.microsoft.playwright.impl; import com.google.gson.JsonObject; +import com.microsoft.playwright.PlaywrightException; import java.util.*; import java.util.function.Consumer; @@ -41,13 +42,14 @@ void notify(EventType eventType, T param) { } for (Consumer listener: new ArrayList<>(list)) { - if (listener != null) { ((Consumer) listener).accept(param); - } } } void add(EventType type, Consumer listener) { + if (listener == null) { + throw new PlaywrightException("Can't add a null listener"); + } List> list = listeners.get(type); if (list == null) { list = new ArrayList<>(); From bd9b4485e44c16428cd44d6b32967f069357d89c Mon Sep 17 00:00:00 2001 From: Krzysztof Kocel Date: Mon, 26 Aug 2024 20:50:32 +0200 Subject: [PATCH 4/5] integration test instead of unit one --- .../com/microsoft/playwright/TestPageBasic.java | 9 +++++++++ .../playwright/impl/ListenerCollectionTest.java | 15 --------------- 2 files changed, 9 insertions(+), 15 deletions(-) delete mode 100644 playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java diff --git a/playwright/src/test/java/com/microsoft/playwright/TestPageBasic.java b/playwright/src/test/java/com/microsoft/playwright/TestPageBasic.java index 954631797..8977c748c 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestPageBasic.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestPageBasic.java @@ -347,4 +347,13 @@ void shouldPropagateCloseReasonToPendingActions() { })); assertTrue(e.getMessage().contains("The reason."), e.getMessage()); } + + @Test + void shouldProhibitNullListeners() { + Page newPage = context.newPage(); + + PlaywrightException e = assertThrows(PlaywrightException.class, () -> newPage.onClose(null)); + + assertTrue(e.getMessage().contains("Can't add a null listener")); + } } diff --git a/playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java b/playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java deleted file mode 100644 index 8c77c133a..000000000 --- a/playwright/src/test/java/com/microsoft/playwright/impl/ListenerCollectionTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.microsoft.playwright.impl; - -import org.junit.jupiter.api.Test; - -class ListenerCollectionTest { - - @Test - void shouldHandleNullListener() { - ListenerCollection listener = new ListenerCollection<>(); - - listener.add(BrowserImpl.EventType.DISCONNECTED, null); - - listener.notify(BrowserImpl.EventType.DISCONNECTED, new Object()); - } -} From b76a352930b7bdf3b87132aa6ba00a091b3bd9fe Mon Sep 17 00:00:00 2001 From: Krzysztof Kocel Date: Mon, 26 Aug 2024 20:51:35 +0200 Subject: [PATCH 5/5] formatting --- .../java/com/microsoft/playwright/impl/ListenerCollection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java b/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java index 2a10c8fcc..b0cce97d5 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/ListenerCollection.java @@ -42,7 +42,7 @@ void notify(EventType eventType, T param) { } for (Consumer listener: new ArrayList<>(list)) { - ((Consumer) listener).accept(param); + ((Consumer) listener).accept(param); } }